Condividi tramite


Aumentare e ridurre le prestazioni di un server di Database di Azure per PostgreSQL usando l'interfaccia della riga di comando (az o kubectl)

In alcuni casi, potrebbe essere necessario modificare le caratteristiche o la definizione di un server. Ad esempio:

  • Aumentare o ridurre il numero di vCore usati dal server
  • Aumentare o ridurre la memoria usata dal server

Questa guida illustra come ridimensionare vCore e/o memoria.

Aumentare o ridurre le impostazioni di vCore o memoria del server significa che è possibile impostare un valore minimo e/o massimo per ognuna delle impostazioni di vCore e memoria. Se si vuole configurare il server per l'uso di un numero specifico di vCore o di un volume specifico di memoria, impostare le impostazioni minime con lo stesso valore delle impostazioni massime. Prima di aumentare il valore impostato per vCore e memoria, è necessario assicurarsi che

  • siano disponibili risorse sufficienti nell'infrastruttura fisica che ospita la distribuzione e
  • i carichi di lavoro collocati nello stesso sistema non siano in competizione per gli stessi vCore o la stessa memoria.

Nota

In quanto funzionalità di anteprima, la tecnologia presentata in questo articolo è soggetta alle condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.

Gli aggiornamenti più recenti sono disponibili nelle note sulla versione.

Visualizzare la definizione corrente del server

Per visualizzare la definizione corrente del server e verificare quali sono le impostazioni di vCore e memoria correnti, eseguire uno dei comandi seguenti:

Con l'interfaccia della riga di comando di Azure (az)

az postgres server-arc show -n <server name> --k8s-namespace <namespace> --use-k8s

Interfaccia della riga di comando con kubectl

kubectl describe postgresql/<server name> -n <namespace name>

Restituisce la configurazione del gruppo di server. Se il server è stato creato con le impostazioni predefinite, verrà visualizzata la definizione come segue:

Spec:
  Dev:  false
  Scheduling:
    Default:
      Resources:
        Requests:
          Memory:  256Mi
...

Interpretare la definizione del server

Nella definizione di un server, la sezione che contiene le impostazioni del numero minimo o massimo di vCore per nodo e la memoria minima o massima per nodo è la sezione "pianificazione". In questa sezione, le impostazioni massime verranno mantenute in una sottosezione denominata "limiti" e le impostazioni minime vengono mantenute nella sottosezione denominata "richieste".

Se si impostano impostazioni minime diverse dalle impostazioni massime, la configurazione garantisce che al server vengano allocate le risorse richieste, se necessario. Non supererà i limiti impostati.

Le risorse (vCore e memoria) che verranno effettivamente usate dal server non oltrepassano le impostazioni massime e dipendono dai carichi di lavoro e dalle risorse disponibili nel cluster. Se non si applica un limite massimo alle impostazioni, il server può usare fino a tutte le risorse allocate dal cluster Kubernetes ai nodi Kubernetes per cui è pianificato il server.

In una configurazione predefinita, solo la memoria minima è impostata su 256Mi, perché è la quantità minima di memoria consigliata per eseguire il server PostgreSQL.

Nota

L'impostazione di un valore minimo non indica che il server userà necessariamente tale valore minimo. Ciò significa che, se il server lo richiede, è garantito che venga allocato almeno il valore minimo specificato. Si consideri, ad esempio, di impostare il valore --minCpu 2. Questo non significa che il server userà sempre almeno 2 vCore. Significa invece che il server può iniziare a usare meno di 2 vCore se non ha bisogno di tale quantità ed è garantita l'allocazione di almeno 2 vCore, se necessario in un secondo momento. Ciò implica che il cluster Kubernetes alloca le risorse ad altri carichi di lavoro in modo da poter allocare 2 vCore al server, se necessario. Inoltre, l'aumento e la riduzione non sono un'operazione online, perché richiedono il riavvio dei pod Kubernetes.

Nota

Prima di modificare la configurazione del sistema, assicurarsi di acquisire familiarità con il modello di risorse Kubernetes qui

Aumentare e ridurre il server

L'aumento si riferisce all'aumento dei valori per le impostazioni di vCore e/o memoria del server. La riduzione si riferisce alla riduzione dei valori per le impostazioni di vCore e/o memoria del server.

Le impostazioni da configurare devono essere considerate all'interno della configurazione impostata per il cluster Kubernetes. Assicurarsi di non impostare valori che il cluster Kubernetes non sarà in grado di soddisfare. Ciò potrebbe causare errori o comportamenti imprevedibili, ad esempio l'indisponibilità dell'istanza del database. Ad esempio, se lo stato del server rimane in aggiornamento per un periodo prolungato dopo aver modificato la configurazione, ciò potrebbe indicare che i parametri seguenti siano impostati sui valori che il cluster Kubernetes non può soddisfare. In tal caso, ripristinare la modifica o leggere la sezione dedicata alla risoluzione dei problemi.

Quali impostazioni è necessario configurare?

  • Per impostare il numero di vCore minimo, impostare --cores-request.
  • Per impostare il numero di vCore massimo, impostare --cores-limit.
  • Per impostare la memoria minima, impostare --memory-request
  • Per impostare la memoria massima, impostare --memory-limit

Attenzione

Con Kubernetes, la configurazione di un'impostazione limite senza configurare l'impostazione della richiesta corrispondente forza il valore della richiesta allo stesso valore del limite. Ciò potrebbe causare, potenzialmente, l'indisponibilità del server, perché i relativi pod potrebbero non essere riprogrammati se non è disponibile un nodo Kubernetes con risorse sufficienti. Di conseguenza, per evitare questa situazione, gli esempi seguenti illustrano come impostare sia la richiesta che le impostazioni limite.

La sintassi generale è:

az postgres server-arc edit -n <server name> --memory-limit/memory-request/cores-request/cores-limit <val> --k8s-namespace <namespace> --use-k8s

Il valore indicato per l'impostazione di memoria è un numero seguito da un'unità di volume. Ad esempio, per indicare 1 Gb, si indicherà 1024 Mi o 1 Gi. Per indicare un numero di core, è sufficiente immettere un numero senza unità.

Esempi di utilizzo dell'interfaccia della riga di comando di Azure

Configurare il server per non superare 2 core:

 az postgres server-arc edit -n postgres01 --cores-request 1, --cores-limit 2  --k8s-namespace arc --use-k8s

Nota

Per informazioni dettagliate su questi parametri, eseguire az postgres server-arc update --help.

Esempio di utilizzo di strumenti Kubernetes nativi, ad esempio kubectl

Eseguire il comando :

kubectl edit postgresql/<server name> -n <namespace name>

Verrà visualizzato l'editor vi, in cui è possibile spostarsi e modificare la configurazione. Usare i seguenti elementi segue per eseguire il mapping dell'impostazione desiderata al nome del campo nella specifica:

Attenzione

Di seguito è riportato un esempio fornito per illustrare come modificare la configurazione. Prima di aggiornare la configurazione, assicurarsi di impostare i parametri su valori che il cluster Kubernetes può rispettare.

Ad esempio, se si desidera impostare i parametri seguenti sia per il coordinatore che per i ruoli di lavoro sui valori seguenti:

  • Numero minimo di vCore = 2
  • Numero massimo di vCore = 4
  • Memoria minima = 512Mb
  • Memoria massima= 1Gb

Impostare la definizione del gruppo di server in modo che corrisponda alla configurazione seguente:

...
  spec:
  dev: false
  scheduling:
    default:
      resources:
        requests:
          cpu: "2"
          memory: 256Mi
        limits:
          cpu: "4"
          memory: 1Gi
...

Se non si ha familiarità con l'editor vi, vedere una descrizione dei comandi necessari qui:

  • Modalità di modifica: i
  • Sposta con le frecce
  • Interrompi modifica: esc
  • Esci senza salvare: :qa!
  • Esci dopo il salvataggio: :qw!

Ripristina ai valori predefiniti

Per reimpostare i parametri di richieste/limiti di memoria/core ai valori predefiniti, modificarli e immettere una stringa vuota invece di un valore. Ad esempio, se si vuole reimpostare il parametro del limite di core, eseguire i comandi seguenti:

az postgres server-arc edit -n postgres01 --cores-request '' --k8s-namespace arc --use-k8s
az postgres server-arc edit -n postgres01 --cores-limit '' --k8s-namespace arc --use-k8s

or

az postgres server-arc edit -n postgres01 --cores-request '' --cores-limit '' --k8s-namespace arc --use-k8s