Share via


Hoch- und Herunterskalieren eines Azure Database for PostgreSQL-Servers mithilfe der Befehlszeilenschnittstelle (az oder kubectl)

Es kann vorkommen, dass Sie die Merkmale oder die Definition eines Servers ändern müssen. Beispiel:

  • Hoch- oder Herunterskalieren der Anzahl der vom Server verwendeten virtuellen Kernen
  • Hoch- oder Herunterskalieren des vom Server verwendeten Arbeitsspeichers

In diesem Leitfaden wird erläutert, wie Sie virtuelle Kerne und/oder Arbeitsspeicher skalieren.

Wenn Sie die Einstellungen der virtuellen Kerne oder des Arbeitsspeichers des Servers zentral hoch- oder herunterskalieren, haben Sie die Möglichkeit, für jede Einstellung der virtuellen Kerne oder des Arbeitsspeichers ein Minimum und/oder Maximum festzulegen. Wenn Sie den Server so konfigurieren möchten, dass eine bestimmte Anzahl von virtuellen Kernen oder eine bestimmte Menge an Arbeitsspeicher verwendet wird, legen Sie die Minimalwerteinstellungen auf die Maximalwerteinstellungen fest. Bevor Sie die für virtuelle Kerne und den Arbeitsspeicher festgelegten Werte erhöhen, müssen Sie Folgendes sicherstellen:

  • Sie verfügen über genügend Ressourcen in der physischen Infrastruktur, die Ihre Bereitstellung hostet.
  • Workloads, die auf demselben System zugeordnet sind, konkurrieren nicht um dieselben virtuellen Kerne oder denselben Arbeitsspeicher.

Hinweis

Als Previewfunktion unterliegt die in diesem Artikel vorgestellte Technologie den zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen.

Die neuesten Updates sind in den Versionshinweisenverfügbar.

Anzeigen der aktuellen Definition des Servers

Führen Sie einen der folgenden Befehle aus, um die aktuelle Definition des Servers und die aktuellen Einstellungen für virtuelle Kerne und den Arbeitsspeicher anzuzeigen:

Mit Azure CLI (az)

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

CLI mit kubectl

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

Die Konfiguration der Servergruppe wird zurückgegeben. Wenn Sie den Server mit den Standardeinstellungen erstellt haben, sollte die Definition wie folgt angezeigt werden:

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

Interpretieren der Definition des Servers

In der Definition eines Servers ist der Abschnitt, der die Einstellungen der minimalen/maximalen Anzahl virtueller Kerne pro Knoten und die minimale/maximale Größe des Arbeitsspeichers pro Knoten festlegt, der Abschnitt scheduling. In diesem Abschnitt werden die maximalen Einstellungen in einem Unterabschnitt namens limits und die minimalen Einstellungen im Unterabschnitt requests persistent gespeichert.

Wenn Sie minimale Einstellungen festlegen, die sich von den maximalen Einstellungen unterscheiden, gewährleistet die Konfiguration, dass dem Server bei Bedarf die angeforderten Ressourcen zugewiesen werden. Die von Ihnen festgelegten Grenzwerte werden nicht überschritten.

Die Ressourcen (virtuelle Kerne und Arbeitsspeicher), die tatsächlich von dem Server verwendet werden, entsprechen den maximalen Einstellungen und sind von den Workloads und den Ressourcen abhängig, die im Cluster verfügbar sind. Wenn Sie die Einstellungen nicht durch ein Maximum begrenzen, kann Ihr Server alle Ressourcen verwenden, die der Kubernetes-Cluster den Kubernetes-Knoten zuweist, auf denen Ihr Server geplant ist.

In einer Standardkonfiguration ist nur der Mindestspeicher auf 256Mi festgelegt, da dies die Mindestmenge an Speicher ist, die für die Ausführung des PostgreSQL-Servers empfohlen wird.

Hinweis

Das Festlegen eines Mindestwerts bedeutet nicht, dass der Server diesen Mindestwert notwendigerweise verwendet. Das bedeutet, dass garantiert wird, dass dem Server mindestens dieses Minimum zugewiesen wird, wenn er es benötigt. Nehmen wir beispielsweise an, dass wir --minCpu 2 festlegen. Dies bedeutet nicht, dass der Server immer mindestens zwei virtuelle Kerne verwendet. Es bedeutet vielmehr, dass der Server weniger als zwei virtuelle Kerne verwenden kann, wenn er nicht so viel benötigt, und es wird garantiert, dass mindestens zwei virtuelle Kerne zugewiesen werden, wenn diese später benötigt werden. Dies impliziert, dass der Kubernetes-Cluster Ressourcen anderen Workloads so zuordnet, dass er dem Server zwei virtuelle Kerne zuordnen kann, wenn sie benötigt werden. Außerdem ist das Hoch- und Herunterskalieren kein Onlinevorgang, da es einen Neustart der Kubernetes-Pods erfordert.

Hinweis

Bevor Sie die Konfiguration Ihres Systems ändern, stellen Sie sicher, dass Sie sich hier mit dem Kubernetes-Ressourcenmodell vertraut machen.

Hoch- und Herunterskalieren des Servers

Das Hochskalieren bezeichnet das Erhöhen der Einstellungswerte für virtuelle Kerne oder Arbeitsspeicher Ihres Servers. Das Herunterskalieren bezeichnet das Verringern der Einstellungswerte für virtuelle Kerne oder Arbeitsspeicher Ihres Servers.

Die Einstellungen, die Sie festlegen, müssen innerhalb der Konfiguration berücksichtigt werden, die Sie für den Kubernetes-Cluster festlegen. Stellen Sie sicher, dass Sie keine Werte festlegen, die ihr Kubernetes-Cluster nicht erfüllen kann. Dies kann zu Fehlern oder unvorhersehbarem Verhalten wie der Nichtverfügbarkeit der Datenbankinstanz führen. Wenn der Status Ihres Servers beispielsweise lange Zeit nach der Änderung der Konfiguration im Status updating (wird aktualisiert) verbleibt, kann das ein Hinweis darauf sein, dass Sie die unten aufgeführten Parameter auf Werte festlegen, die Ihr Kubernetes-Cluster nicht erfüllen kann. Wenn dies der Fall ist, machen Sie die Änderung rückgängig, oder lesen Sie den Abschnitt zur Problembehandlung.

Welche Einstellungen sollten festgelegt werden?

  • Den Mindestwert für virtuelle Kerne legen Sie mit --cores-request fest.
  • Den Höchstwert für virtuelle Kerne legen Sie mit --cores-limit fest.
  • Den Mindestwert für den Arbeitsspeicher legen Sie mit --memory-request fest.
  • Den Höchstwert für den Arbeitsspeicher legen Sie mit --memory-limit fest.

Achtung

Bei Kubernetes wird beim Konfigurieren einer Grenzwerteinstellung ohne Konfiguration der entsprechenden Anforderungseinstellung der Anforderungswert erzwungen auf den Grenzwert festgelegt. Dies kann dazu führen, dass Ihr Server nicht verfügbar ist, da seine Pods möglicherweise nicht neu geplant werden, wenn kein Kubernetes-Knoten mit ausreichenden Ressourcen verfügbar ist. Um diese Situation zu vermeiden, veranschaulichen die folgenden Beispiele, wie Sie sowohl die Anforderung als auch die Grenzwerteinstellungen festlegen.

Die allgemeine Syntax sieht wie folgt aus:

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

Der Wert, den Sie für die Arbeitsspeichereinstellung angeben, ist eine Zahl gefolgt von einer Volumeneinheit. Um beispielsweise 1 GB anzugeben, geben Sie „1024Mi“ oder „1Gi“ an. Um eine Anzahl von Kernen anzugeben, übergeben Sie einfach eine Zahl ohne Einheit.

Beispiele für die Verwendung der Azure-Befehlszeilenschnittstelle

Konfigurieren des Servers, damit er nicht mehr als zwei Kerne hat:

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

Hinweis

Weitere Informationen zu diesen Parametern erhalten Sie, wenn Sie az postgres server-arc update --help ausführen.

Beispiel für die Verwendung nativer Kubernetes-Tools wie kubectl

Führen Sie den folgenden Befehl aus:

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

Sie starten damit den vi-Editor, in dem Sie navigieren und die Konfiguration ändern können. Verwenden Sie Folgendes, um die gewünschte Einstellung dem Namen des Felds in der Spezifikation zuzuordnen:

Achtung

Das folgende Beispiel veranschaulicht, wie Sie die Konfiguration bearbeiten können. Stellen Sie vor dem Aktualisieren der Konfiguration sicher, dass die Parameter auf Werte festgelegt sind, die der Kubernetes-Cluster akzeptieren kann.

Angenommen, Sie möchten die folgenden Einstellungen für die Koordinator- und Workerrollen auf die folgenden Werte festlegen:

  • Mindestanzahl virtueller Kerne = 2
  • Maximale Anzahl virtueller Kerne = 4
  • Mindestgröße des Arbeitsspeichers = 512Mb
  • Maximale Größe des Arbeitsspeichers = 1Gb

Dazu würden Sie die Definition Ihrer Servergruppe so festlegen, dass sie der folgenden Konfiguration entspricht:

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

Wenn Sie mit dem vi-Editor nicht vertraut sind, finden Sie hier eine Beschreibung der Befehle, die Sie möglicherweise benötigen:

  • Bearbeitungsmodus: i
  • Navigation mit Pfeiltasten
  • Beenden der Bearbeitung: esc
  • Beenden ohne Speichern: :qa!
  • Beenden nach Speichern: :qw!

Zurücksetzen auf Standardwerte

Zum Zurücksetzen der Parameter für Kerne/Arbeitsspeichergrenzwerte/Anforderungen auf ihre Standardwerte bearbeiten Sie sie und übergeben eine leere Zeichenfolge anstelle eines tatsächlichen Werts. Wenn Sie beispielsweise den Parameter für den Kerngrenzwert zurücksetzen möchten, führen Sie die folgenden Befehle aus:

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

oder

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