Share via


Aumentare e ridurre le prestazioni di un server 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 una quantità specifica di memoria, impostare le impostazioni minime uguali alle impostazioni massime. Prima di aumentare il valore impostato per vCore e memoria, è necessario assicurarsi che

  • sono disponibili risorse sufficienti nell'infrastruttura fisica che ospita la distribuzione e
  • i carichi di lavoro collocati nello stesso sistema non sono in competizione per gli stessi vCore o 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 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 di almeno o massimo vCore per nodo e 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 "requests".

Se si impostano impostazioni minime diverse dalle impostazioni massime, la configurazione garantisce che il server venga allocato alle risorse richieste, se necessario. Non supererà i limiti impostati.

Le risorse (vCore e memoria) che verranno effettivamente usate dal server sono fino alle 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 in 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 necessita, è garantito che venga allocato almeno questo minimo. Si consideri, ad esempio, di impostare --minCpu 2. Non significa che il server usi 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 è garantito che sia allocato almeno 2 vCore se necessario in un secondo momento. Implica che il cluster Kubernetes alloca le risorse ad altri carichi di lavoro in modo che possa allocare 2 vCore al server, se necessario. Inoltre, l'aumento e la riduzione non è un'operazione online perché richiede 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

La scalabilità verticale si riferisce all'aumento dei valori per le impostazioni di vCore e/o memoria del server. Il ridimensionamento si riferisce alla riduzione dei valori per le impostazioni di vCore e/o memoria del server.

Le impostazioni da impostare devono essere considerate all'interno della configurazione impostata per il cluster Kubernetes. Assicurarsi di non impostare i 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 aggiornato per molto tempo dopo aver modificato la configurazione, potrebbe essere un'indicazione che i parametri seguenti siano impostati sui valori che il cluster Kubernetes non può soddisfare. In tal caso, ripristinare la modifica o leggere il _troubleshooting_section.

Quali impostazioni è necessario impostare?

  • Per impostare il vCore minimo, impostare --cores-request.
  • Per impostare il numero massimo di vCore, 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à 1024Mi o 1Gi. Per indicare un numero di core, è sufficiente passare un numero senza unità.

Esempi di uso 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 uso di strumenti nativi kubernetes, ad esempio kubectl

Eseguire il comando seguente:

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

Verrà visualizzato l'editor vi in cui è possibile spostarsi e modificare la configurazione. Usare quanto 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 sui valori che il cluster Kubernetes può rispettare.

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

  • VCore minimo = 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
  • Spostarsi con frecce
  • Interrompi modifica: esc
  • Esci senza salvare: :qa!
  • Uscire dopo il salvataggio: :qw!

Reimpostare i valori predefiniti

Per reimpostare i parametri core/memory limits/requests ai valori predefiniti, modificarli e passare una stringa vuota anziché un valore effettivo. Ad esempio, se si vuole reimpostare il parametro di limite principale, 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

o

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