Dimensionierungsleitfaden

Übersicht über den Dimensionierungsleitfaden

Planen Sie bei der Bereitstellung von Azure Arc-Datendiensten die richtige Menge an Daten ein:

  • Compute
  • Arbeitsspeicher
  • Storage

Diese Ressourcen werden benötigt für:

  • Der Datencontroller
  • Verwaltete SQL-Instanzen
  • PostgreSQL-Server

Da die Datendienste mit Arc-Unterstützung von Azure auf Kubernetes bereitgestellt werden, können Sie Ihrem Kubernetes-Cluster im Laufe der Zeit flexibel mehr Kapazität durch Rechenknoten oder Speicher hinzufügen. In diesem Leitfaden werden die Mindestanforderungen erläutert und Größenempfehlungen für einige gängige Anforderungen gegeben.

Allgemeine Dimensionierungsanforderungen

Hinweis

Wenn Sie mit den Konzepten in diesem Artikel nicht vertraut sind, informieren Sie sich über die Kubernetes-Ressourcenkontrolle und die Größeneinheiten in Kubernetes.

Die Anzahl der Kerne muss eine ganze Zahl größer oder gleich 1 sein.

Wenn Sie mit Azure CLI (az) bereitstellen, verwenden Sie eine Zweierpotenz, um die Speicherwerte festzulegen. Verwenden Sie insbesondere die Suffixe:

  • Ki
  • Mi
  • Gi

Grenzwerte müssen immer größer als der Anforderungswert sein, sofern angegeben.

Die Grenzwerte für Kerne sind die abrechenbare Metrik für SQL Managed Instance- und PostgreSQL-Server.

Mindestanforderungen für die Bereitstellung

Eine Mindestgröße für die Bereitstellung von Azure Arc-fähigen Datendiensten könnte der Azure Arc-Datencontroller plus eine verwaltete SQL-Instanz plus ein PostgreSQL-Server sein. Für diese Konfiguration benötigen Sie mindestens 16 GB RAM und 4 Kerne als verfügbare Kapazität im Kubernetes-Cluster. Sie sollten sicherstellen, dass die Kubernetes-Knoten eine Mindestgröße von 8 GB RAM und 4 Kernen umfassen und dass auf allen Kubernetes-Knoten eine Gesamtkapazität von 16 GB RAM zur Verfügung steht. Beispielsweise können Sie über einen Knoten mit 32 GB RAM und 4 Kernen oder über zwei Knoten mit jeweils 16 GB RAM und vier Kernen verfügen.

Ausführliche Informationen über die Speicherdimensionierung finden Sie im Artikel zur Speicherkonfiguration.

Dimensionierungsdetails des Datencontrollers

Der Datencontroller ist eine Sammlung von Pods, die im Kubernetes-Cluster bereitgestellt werden, um eine API, den Controllerdienst, den Bootstrapper sowie die Überwachungsdatenbanken und -dashboards zur Verfügung zu stellen. In dieser Tabelle werden die Standardwerte für Arbeitsspeicher- und CPU-Anforderungen sowie CPU-Limits beschrieben.

Podname CPU-Anforderung Arbeitsspeicheranforderung CPU-Grenzwert Arbeitsspeicherlimit
bootstrapper 100m 100Mi 200m 200Mi
control 400m 2Gi 1800m 2Gi
controldb 200m 4Gi 800m 6Gi
logsdb 200m 1600Mi 2 1600Mi
logsui 100m 500Mi 2 2Gi
metricsdb 200m 800Mi 400m 2Gi
metricsdc 100m 200Mi 200m 300Mi
metricsui 20m 200Mi 500m 200Mi

metricsdc ist ein daemonset, das auf jedem der Kubernetes-Knoten in Ihrem Cluster erstellt wird. Die Zahlen in der Tabelle gelten pro Knoten. Wenn Sie allowNodeMetricsCollection = false in Ihrer Bereitstellungsprofildatei festlegen, bevor Sie den Datencontroller erstellen, wird dieses daemonset nicht erstellt.

Sie können die Standardeinstellungen für controldb und den Steuerungspods in der Datencontroller-YAML-Datei überschreiben. Beispiel:

  resources:
    controller:
      limits:
        cpu: "1000m"
        memory: "3Gi"
      requests:
        cpu: "800m"
        memory: "2Gi"
    controllerDb:
      limits:
        cpu: "800m"
        memory: "8Gi"
      requests:
        cpu: "200m"
        memory: "4Gi"

Ausführliche Informationen über die Speicherdimensionierung finden Sie im Artikel zur Speicherkonfiguration.

Dimensionierungsdetails verwalteter SQL-Instanzen

Jede verwaltete SQL-Instanz muss über die folgenden Ressourcenmindestanforderungen und -limits verfügen:

Dienstebene Allgemeiner Zweck Unternehmenskritisch
CPU-Anforderung Mindestwert: 1
Höchstwert: 24
Standardwert: 2
Mindestwert: 3
Höchster Wert: unbegrenzt
Standardwert: 4
CPU-Grenzwert Mindestwert: 1
Höchstwert: 24
Standardwert: 2
Mindestwert: 3
Höchster Wert: unbegrenzt
Standardwert: 4
Arbeitsspeicheranforderung Mindestwert: 2Gi
Höchstwert: 128Gi
Standard: 4Gi
Mindestwert: 2Gi
Höchster Wert: unbegrenzt
Standard: 4Gi
Arbeitsspeicherlimit Mindestwert: 2Gi
Höchstwert: 128Gi
Standard: 4Gi
Mindestwert: 2Gi
Höchster Wert: unbegrenzt
Standard: 4Gi

Jeder erstellte SQL Managed Instance-Pod umfasst drei Container:

Containername CPU-Anforderung Speicheranforderung CPU-Limit Speicherlimit Hinweise
fluentbit 100m 100Mi Nicht angegeben Nicht angegeben Die fluentbit-Containerressourcenanforderungen gelten zusätzlich zu den für die verwaltete SQL-Instanz angegebenen Anforderungen.
arc-sqlmi Vom Benutzer angegeben oder nicht angegeben Vom Benutzer angegeben oder nicht angegeben Vom Benutzer angegeben oder nicht angegeben Vom Benutzer angegeben oder nicht angegeben
collectd Nicht angegeben Nicht angegeben Nicht angegeben Nicht angegeben

Die Standardvolumegröße für alle persistenten Volumes beträgt 5Gi.

Details zur PostgreSQL-Serverdimensionierung

Jeder PostgreSQL-Serverknoten muss über die folgenden Mindestressourcen verfügen:

  • Arbeitsspeicher: 256Mi
  • Kerne: 1

Jeder erstellte PostgreSQL-Serverpod umfasst drei Container:

Containername CPU-Anforderung Speicheranforderung CPU-Limit Speicherlimit Hinweise
fluentbit 100m 100Mi Nicht angegeben Nicht angegeben Die Anforderungen an die fluentbit-Containerressourcen gelten zusätzlich zu den angegebenen Anforderungen für den PostgreSQL-Server.
postgres Vom Benutzer angegeben oder nicht angegeben Vom Benutzer angegeben oder 256Mi (Standard). Vom Benutzer angegeben oder nicht angegeben Vom Benutzer angegeben oder nicht angegeben
arc-postgresql-agent Nicht angegeben Nicht angegeben Nicht angegeben Nicht angegeben

Kumulative Dimensionierung

Die erforderliche Gesamtgröße einer Umgebung für Azure Arc-fähige Datendienste hängt hauptsächlich von der Anzahl und Größe der Datenbankinstanzen ab. Die Gesamtgröße kann schwierig vorherzusagen sein, da die Anzahl der Instanzen zunehmen und abnehmen und sich der Umfang der für jede Datenbankinstanz erforderlichen Ressourcen ändern könnte.

Die Baselinegröße einer Umgebung für Azure Arc-fähige Datendienste ist die Größe des Datencontrollers, der 4 Kerne und 16 GB RAM erfordert. Dieser können Sie die Summe der Kerne und des Arbeitsspeichers hinzufügen, die für die Datenbankinstanzen erforderlich sind. SQL Managed Instance erfordert einen Pod für jede Instanz. Der PostgreSQL-Server erstellt für jeden Server einen Pod.

Zusätzlich zu den Kernen und dem Arbeitsspeicher, die Sie für jede Datenbankinstanz anfordern, sollten Sie 250m an Kernen und 250Mi an RAM für die Agentcontainer hinzufügen.

Beispiel für die Größenberechnung

Anforderungen:

  • „SQL1“: 1 verwaltete SQL-Instanz mit 16 GB RAM und 4 Kernen
  • „SQL2“: 1 verwaltete SQL-Instanz mit 256 GB RAM und 16 Kernen
  • „Postgres1“: 1 PostgreSQL-Server mit 12 GB Arbeitsspeicher und 4 Kernen

Dimensionierungsberechnungen:

  • Größe von „SQL1“: 1 pod * ([16Gi RAM, 4 cores] + [250Mi RAM, 250m cores]). Verwenden Sie 16.25 Gi RAM und 4,25 Kerne pro Pod für die Agents.

  • Größe von „SQL2“: 1 pod * ([256Gi RAM, 16 cores] + [250Mi RAM, 250m cores]). Verwenden Sie 256.25 Gi RAM und 16,25 Kerne pro Pod für die Agents.

  • Gesamtgröße von SQL1 und SQL2:

    • (16.25 GB + 256.25 Gi) = 272.5-GB RAM
    • (4.25 cores + 16.25 cores) = 20.5 cores
  • Größe von „Postgres1“: 1 pod * ([12Gi RAM, 4 cores] + [250Mi RAM, 250m cores]). Verwenden Sie 12.25 Gi RAM und 4.25 Kerne pro Pod für die Agents.

  • Die erforderliche Gesamtkapazität:

    • Für die Datenbankinstanzen:
      • 272,5 GB RAM
      • 20,5 Kerne
    • Für SQL:
      • 12,25 GB RAM
      • 4,25 Kerne
    • Für den PostgreSQL-Server
      • 284,75 GB RAM
      • 24,75 Kerne
  • Die für die Datenbankinstanzen plus Datencontroller erforderliche Gesamtkapazität:

    • Für die Datenbankinstanz
      • 284,75 GB RAM
      • 24,75 Kerne
    • Für den Datencontroller
      • 16 GB RAM
      • 4 Kerne
    • Insgesamt:
      • 300,75 GB RAM
      • 28,75 Kerne.

Ausführliche Informationen über die Speicherdimensionierung finden Sie im Artikel zur Speicherkonfiguration.

Andere Aspekte

Beachten Sie, dass die Anforderung der Datenbankinstanzgröße für Kerne oder RAM die verfügbare Kapazität der Kubernetes-Knoten im Cluster nicht überschreiten darf. Wenn beispielsweise der größte Kubernetes-Knoten im Kubernetes-Cluster 256 GB RAM und 24 Kerne umfasst, können Sie keine Datenbankinstanz mit einer Anforderung von 512 GB RAM und 48 Kernen erstellen.

Halten Sie mindestens 25 % der verfügbaren Kapazität der Kubernetes-Knoten vor. Diese Kapazität ermöglicht Kubernetes folgendes:

  • Effizientes Planen der Erstellung von Pods
  • Aktivieren der elastischen Skalierung
  • Unterstützt rollierende Upgrades der Kubernetes-Knoten
  • Erleichtert ein langfristiges Wachstum bei Bedarf

Berücksichtigen Sie bei den Dimensionierungsberechnungen die Ressourcenanforderungen der Kubernetes-Systempods und andere Workloads, die möglicherweise gemeinsam mit Azure Arc-fähigen Datendiensten in demselben Kubernetes-Cluster Kapazität nutzen.

Damit während geplanter Wartung und Notfällen Hochverfügbarkeit erhalten bleibt, berücksichtigen Sie bei der Planung, dass stets eine Situation eintreten kann, in der mindestens ein Kubernetes-Knoten im Cluster nicht verfügbar ist. Kubernetes versucht, die Pods, die auf einem wegen Wartung oder aufgrund eines Fehlers außer Betrieb genommenen Knoten ausgeführt wurden, neu zu planen. Falls auf den verbleibenden Knoten keine Kapazität verfügbar ist, wird die Erstellung dieser Pods erst dann neu geplant, wenn wieder Kapazität verfügbar ist. Große Datenbankinstanzen erfordern besondere Vorsicht. Wenn beispielsweise nur ein Kubernetes-Knoten groß genug ist, um die Ressourcenanforderungen einer großen Datendankinstanz zu erfüllen, und dieser Knoten ausfällt, wird Kubernetes diesen Datenbankinstanzpod nicht für die Erstellung auf einem anderen Kubernetes-Knoten planen.

Beachten Sie die oberen Grenzwerte für die Kubernetes-Clustergröße.

Der Kubernetes-Administrator hat möglicherweise Ressourcenkontingente für Ihren Namespace bzw. Ihr Projekt eingerichtet. Beachten Sie diese Kontingente beim Planen der Datenbankinstanzgrößen.