Erstellen einer VM-Skalierungsgruppe, die Verfügbarkeitszonen verwendet

Azure-Verfügbarkeitszonen sind fehlerisolierte Standorte in einer Azure-Region, die redundante Stromversorgung, Kühlung und Netzwerkfunktionen bereitstellen. Sie ermöglichen es Ihnen, Anwendungen mit Hochverfügbarkeit und Fehlertoleranz gegenüber Rechenzentrumsausfällen auszuführen. Azure-Regionen, die Verfügbarkeitszonen unterstützen, enthalten mindestens drei separate Zonen. Jede Verfügbarkeitszone besteht aus mindestens einem Rechenzentrum, das mit einer unabhängigen Infrastruktur für Stromversorgung, Kühlung und Netzwerkfunktionen ausgestattet ist. Verfügbarkeitszonen sind über ein Hochleistungsnetzwerk mit einer Roundtriplatenz von weniger als 2 ms miteinander verbunden. Weitere Informationen finden Sie in der Overview of Availability Zones (Übersicht über Verfügbarkeitszonen).

Um Ihre Virtual Machine Scale Sets-Instanz vor Fehlern auf Rechenzentrumsebene zu schützen, können Sie eine Skalierungsgruppe über mehrere Verfügbarkeitszonen hinweg erstellen. Damit Verfügbarkeitszonen verwendet werden können, muss Ihre Skalierungsgruppe in einer unterstützten Azure-Region erstellt werden.

Entwurfsüberlegungen für Verfügbarkeitszonen

Virtual Machine Scale Sets unterstützt drei zonenbasierte Bereitstellungsmodelle:

  • Zonenredundant bzw. zonenübergreifend (empfohlen)
  • Zonenbezogen bzw. zonenorientiert (Einzelzone)
  • Regional

Zonenredundant bzw. zonenübergreifend

Eine zonenredundante bzw. zonenübergreifende Skalierungsgruppe verteilt Instanzen auf alle ausgewählten Zonen: "zones": ["1","2","3"]. Standardmäßig nutzt die Skalierungsgruppe einen Best-Effort-Ansatz, um Instanzen gleichmäßig auf ausgewählte Zonen zu verteilen. Sie können jedoch angeben, dass Sie ein striktes Zonengleichgewicht wünschen, indem Sie in Ihrer Bereitstellung "zoneBalance": "true" festlegen. Jede VM und ihre Datenträger sind zonenspezifisch, werden also an eine bestimmte Zone angefügt. Instanzen sind zwischen den Zonen durch ein hochleistungsfähiges Netzwerk mit niedriger Latenz miteinander verbunden. Bei einem Zonenausfall oder Konnektivitätsproblem kann die Konnektivität mit den Instanzen in der betroffenen Zone beeinträchtigt sein, Instanzen in anderen Verfügbarkeitszonen sollten dagegen nicht betroffen sein. Sie können der Skalierungsgruppe während eines Zonenausfalls Kapazität hinzufügen, dann fügt die Skalierungsgruppe den nicht betroffenen Zonen weitere Instanzen hinzu. Wenn die Zone wiederhergestellt ist, müssen Sie Ihre Skalierungsgruppe möglicherweise wieder auf die ursprüngliche Kapazität herunterskalieren. Als Best Practice empfiehlt es sich, Regeln für die Autoskalierung basierend auf der CPU- oder Arbeitsspeicherauslastung zu konfigurieren. Über diese Regeln für automatische Skalierung könnte die Skalierungsgruppe auf den Verlust der VM-Instanzen in dieser einen Zone reagieren, indem neue Instanzen in den verbleibenden betriebsbereiten Zonen horizontal hochskaliert werden.

Das Verteilen von Instanzen auf Verfügbarkeitszonen erfüllt die SLA von 99,99 % für Instanzen, die über Verfügbarkeitszonen verteilt sind, und wird für die meisten Workloads in Azure empfohlen.

Zonenbezogen bzw. zonenorientiert (Einzelzone)

Eine zonenbezogene bzw. zonenorientierte Skalierungsgruppe platziert Instanzen in einer einzelnen Verfügbarkeitszone: "zones": ['1']. Jede VM und ihre Datenträger sind zonenspezifisch, werden also an eine bestimmte Zone angefügt. Diese Konfiguration kommt hauptsächlich dann zum Einsatz, wenn eine niedrige Latenz zwischen Instanzen erforderlich ist.

Regional

Eine regionale VM-Skalierungsgruppe ist dann gegeben, wenn die Zonenzuweisung nicht explizit festgelegt ist ("zones"=[] oder "zones"=null). In dieser Konfiguration erstellt die Skalierungsgruppe regionsbezogene (nicht an eine Zone angefügte) Instanzen und platziert Instanzen implizit in der gesamten Region. Es gibt keine Garantie für einen Lastenausgleich oder eine Verteilung auf die Zonen, und es ist nicht garantiert, dass Instanzen in derselben Verfügbarkeitszone landen. Die Colocation von Datenträgern ist für Ultra- und Premium v2-Datenträger garantiert, für Premium V1-Datenträger gilt das Best-Effort-Prinzip, für Standard-SKU-Datenträger (SSD oder HDD) wird sie nicht garantiert.

Im seltenen Fall des Ausfalls einer ganzen Zone können einzelne oder alle Instanzen in der Skalierungsgruppe betroffen sein.

Fehlerdomänen und Verfügbarkeitszonen

Eine Fehlerdomäne ist eine Fehlerisolationsgruppe innerhalb einer Verfügbarkeitszone oder eines Rechenzentrums mit Hardwareknoten, die dieselben Stromversorgungs-, Netzwerk- und Kühlungssysteme nutzt und für die derselbe Zeitplan für die Plattformwartung gilt. VM-Instanzen in verschiedenen Fehlerdomänen sind wahrscheinlich nicht von demselben geplanten oder ungeplanten Ausfall betroffen. Sie können angeben, wie Instanzen auf Fehlerdomänen in einer Region oder Zone verteilt werden.

  • Maximale Zuweisung (platformFaultDomainCount = 1)
  • Statische festgelegte Zuweisung (platformFaultDomainCount = 5)
  • Aufteilung entsprechend den Fehlerdomänen für Speicherdatenträger (platformFaultDomainCount = 2 oder 3; nur bei regionsbezogenen Bereitstellungen)

Bei der maximalen Zuweisung verteilt die Skalierungsgruppe Ihre VMs in jeder Zone auf so viele Fehlerdomänen wie möglich. Diese Zuweisung kann für mehr oder weniger als fünf Fehlerdomänen pro Zone erfolgen. Bei der statischen festgelegten Zuweisung verteilt die Skalierungsgruppe Ihre VMs exakt auf fünf Fehlerdomänen pro Zone. Wenn die Skalierungsgruppe nicht fünf verschiedene Fehlerdomänen pro Zone finden kann, um die Zuordnungsanforderung zu erfüllen, ist die Anforderung nicht erfolgreich.

Wir empfehlen die Bereitstellung mit maximaler Zuweisung für die meisten Workloads, da diese Vorgehensweise normalerweise die bestmögliche Zuweisung ergibt. Falls bei Ihnen Replikate auf einzelne Einheiten für die Hardwareisolation verteilt werden müssen, raten wir Ihnen zum Verteilen auf Verfügbarkeitszonen und zur Verwendung der maximalen Zuweisung in jeder Zone.

Hinweis

Bei der maximalen Zuweisung ist in der VM-Instanzansicht für Skalierungsgruppen und in den Instanzmetadaten nur eine Fehlerdomäne zu sehen. Dies gilt unabhängig davon, auf wie viele Fehlerdomänen die VMs verteilt werden. Die Zuweisung in einer Zone erfolgt jeweils implizit.

Platzierungsgruppen

Wichtig

Platzierungsgruppen gelten nur für im einheitlichen Orchestrierungsmodus ausgeführte Virtual Machine Scale Sets-Instanzen.

Wenn Sie eine Skalierungsgruppe bereitstellen, können Sie die Bereitstellung mit einer einzelnen oder mit mehreren Platzierungsgruppen pro Verfügbarkeitszone durchführen. Bei regionalen (nicht zonalen) Skalierungsgruppen kann zwischen einer einzelnen Platzierungsgruppe oder mehreren Platzierungsgruppen in der Region gewählt werden. Wenn die Eigenschaft Skalierungssatz singlePlacementGroup auf false gesetzt ist, kann der Skalierungssatz aus mehreren Platzierungsgruppen bestehen und hat einen Bereich von 0-1.000 VMs. Beim Standardwert true besteht das Scale-Set aus einer einzigen Platzierungsgruppe und hat einen Bereich von 0-100 VMs. Für die meisten Workloads empfehlen wir mehrere Platzierungsgruppen, um eine bessere Skalierbarkeit zu erzielen. In der API-Version 2017-12-01 werden für Skalierungsgruppen standardmäßig mehrere Platzierungsgruppen für einzelne und mehrere Zonen verwendet. Für regionale (nicht zonale) Skalierungsgruppen wird dagegen standardmäßig nur eine einzelne Platzierungsgruppe genutzt.

Hinweis

Bei der maximalen Zuweisung müssen Sie mehrere Platzierungsgruppen verwenden.

Sicherstellen eines Zonengleichgewichts

Für Skalierungsgruppen, die über mehrere Zonen hinweg bereitgestellt werden, können Sie auch „bestmögliches Zonengleichgewicht“ oder „strenges Zonengleichgewicht“ wählen. Eine Skalierungsgruppe befindet sich „im Gleichgewicht“, wenn die Zone die gleiche Anzahl von VMs (+\-1) wie alle anderen Zonen der Skalierungsgruppe hat. Zum Beispiel:

  • Eine Skalierungsgruppe wird mit zwei VMs in Zone 1, drei VMs in Zone 2 und drei VMs in Zone 3 als im Gleichgewicht befindlich angesehen. Es ist nur eine Zone mit einer unterschiedlichen VM-Anzahl vorhanden, und diese Anzahl ist nur 1 geringer als die Anzahl der VMs in anderen Zonen.
  • Eine Skalierungsgruppe wird mit einer VM in Zone 1, drei VMs in Zone 2 und drei VMs in Zone 3 als nicht im Gleichgewicht befindlich angesehen. Zone 1 verfügt über zwei VMs weniger als Zone 2 und 3.

Es ist möglich, dass VMs in der Skalierungsgruppe erfolgreich erstellt werden, dies ist für die Bereitstellung von Erweiterungen dieser VMs jedoch nicht der Fall. Diese VMs mit Erweiterungsfehlern werden trotzdem mitgezählt, wenn ermittelt wird, ob sich eine Skalierungsgruppe im Gleichgewicht befindet. Eine Skalierungsgruppe mit drei VMs in Zone 1, drei VMs in Zone 2 und drei VMs in Zone 3 wird beispielsweise auch dann als im Gleichgewicht befindlich angesehen, wenn alle Erweiterungen in Zone 1 nicht erfolgreich und alle Erweiterungen in den Zonen 2 und 3 erfolgreich waren.

Beim bestmöglichen Zonengleichgewicht versucht die Skalierungsgruppe, das horizontale Herunter- und Hochskalieren durchzuführen, während das Gleichgewicht beibehalten wird. Falls ein Zonengleichgewicht aus bestimmten Gründen nicht möglich ist (wenn beispielsweise eine Zone ausfällt, kann die Skalierungsgruppe in dieser Zone keine neue VM erstellen), lässt die Skalierungsgruppe ein vorübergehendes Ungleichgewicht zu, um ein erfolgreiches Auf- und Abskalieren zu ermöglichen. Bei den nachfolgenden Versuchen zur horizontalen Skalierung fügt die Skalierungsgruppe den Zonen VMs hinzu, in denen mehr VMs erforderlich sind, damit sich die Skalierungsgruppe wieder im Gleichgewicht befindet. Entsprechend entfernt die Skalierungsgruppe bei nachfolgenden Versuchen, das horizontale Herunterskalieren durchzuführen, VMs aus den Zonen, die weniger VMs benötigen, damit sich die Skalierungsgruppe im Gleichgewicht befindet. Beim „strengen Zonengleichgewicht“ enden für die Skalierungsgruppe alle Versuche zum horizontalen Herunter- oder Hochskalieren mit einem Fehler, falls dies zu einem Ungleichgewicht führen würde.

Legen Sie zoneBalance auf false fest, um das bestmögliche Zonengleichgewicht zu verwenden. Dies ist die Standardeinstellung in API-Version 2017-12-01. Legen Sie zoneBalance auf true fest, um das strenge Zonengleichgewicht zu verwenden.

Hinweis

Die zoneBalance-Eigenschaft kann nur festgelegt werden, wenn die zones-Eigenschaft der Skalierung gruppe mehr als eine Zone enthält. Wenn keine Zonen oder nur eine Zone angegeben ist, sollte die zoneBalance-Eigenschaft nicht festgelegt werden.

Erstellen von zonenübergreifenden bzw. zonenbezogenen Skalierungsgruppen

Wenn Sie eine VM-Skalierungsgruppe bereitstellen, können Sie eine einzelne Verfügbarkeitszone in einer Region oder mehrere Zonen verwenden.

Sie können mit einer der folgenden Methoden eine Skalierungsgruppe erstellen, die Verfügbarkeitszonen verwendet:

Verwenden des Azure-Portals

Der Erstellungsprozess einer Skalierungsgruppe, die eine Verfügbarkeitszone verwendet, ist der gleiche, der im Artikel „Erste Schritte“ ausführlich beschrieben wird. Wenn Sie eine unterstützte Azure-Region auswählen, können Sie eine Skalierungsgruppe in einer oder mehreren Verfügbarkeitszonen erstellen, wie im folgenden Beispiel gezeigt:

Erstellen einer Skalierungsgruppe in einer einzelnen Verfügbarkeitszone

Die Skalierungsgruppe und die unterstützenden Ressourcen, wie etwa der Azure Load Balancer und die öffentliche IP-Adresse, werden in der von Ihnen angegebenen einzelnen Zone erstellt.

Verwenden der Azure-CLI

Der Erstellungsprozess einer Skalierungsgruppe, die eine Verfügbarkeitszone verwendet, ist der gleiche, der im Artikel „Erste Schritte“ ausführlich beschrieben wird. Damit Verfügbarkeitszonen verwendet werden können, müssen Sie Ihre Skalierungsgruppe in einer unterstützten Azure-Region erstellen.

Fügen Sie dem az vmss create-Befehl den --zones-Parameter hinzu, und geben Sie die zu verwendende Zone an (z. B. Zone 1, 2 oder 3).

az vmss create \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --image <SKU Image> \
    --upgrade-policy-mode automatic \
    --admin-username azureuser \
    --generate-ssh-keys \
    --zones 1 2 3

Die Erstellung und Konfiguration aller Ressourcen und virtuellen Computer der Skalierungsgruppe in den von Ihnen angegebenen Zonen dauert einige Minuten. Ein vollständiges Beispiel einer zonenredundanten Skalierungsgruppe mit Netzwerkressourcen finden Sie in diesem Beispielskript für die Befehlszeilenschnittstelle.

Mithilfe von Azure PowerShell

Damit Verfügbarkeitszonen verwendet werden können, müssen Sie Ihre Skalierungsgruppe in einer unterstützten Azure-Region erstellen. Fügen Sie dem Befehl New-AzVmssConfig den Parameter -Zone hinzu, und geben Sie die zu verwendende(n) Zone(n) an (z. B. Zone 1, 2 oder 3).

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS2" `
  -VMScaleSetName "myScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -UpgradePolicy "Automatic" `
  -Zone "1", "2", "3"

Verwenden von Azure-Ressourcen-Manager-Vorlagen

Der Erstellungsprozess einer Skalierungsgruppe, die eine Verfügbarkeitszone verwendet, ist der gleiche, der im Artikel „Erste Schritte“ für Linux oder Windows ausführlich beschrieben wird.

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "myScaleSet",
  "location": "East US 2",
  "apiVersion": "2017-12-01",
  "zones": [
        "1",
        "2",
        "3"
      ]
}

Wenn Sie eine öffentliche IP-Adresse oder einen Lastenausgleich erstellen, geben Sie die "sku": {"name":"Standard"}-Eigenschaft an, um zonenredundante Netzwerkressourcen zu erstellen. Sie müssen außerdem eine Netzwerksicherheitsgruppe und Regeln zum Zulassen von Datenverkehr erstellen. Weitere Informationen finden Sie unter Übersicht: Azure Load Balancer Standard und Load Balancer Standard und Verfügbarkeitszonen.

Aktualisieren der Skalierungsgruppe zum Hinzufügen von Verfügbarkeitszonen

Sie können eine Skalierungsgruppe ändern, um die Anzahl von Zonen zu erweitern, über die VM-Instanzen verteilt werden sollen. Durch die Erweiterung können Sie von den Vorteilen einer SLA mit höherer zonenbezogener Verfügbarkeit (99,99 %) im Vergleich zu einer SLA mit regionsbezogener Verfügbarkeit (99,95 %) profitieren. Sie können Ihre Skalierungsgruppe auch erweitern, um neue Verfügbarkeitszonen zu nutzen, die beim Erstellen der Skalierungsgruppe nicht verfügbar waren.

Dieses Feature kann mit der API-Version 2023-03-01 oder höher verwendet werden.

Erweitern der Skalierungsgruppe für die Verwendung von Verfügbarkeitszonen

Sie können die Skalierungsgruppe aktualisieren, um Instanzen auf eine oder mehrere zusätzliche Verfügbarkeitszonen aufzuskalieren. Der Maximalwert ist die Anzahl der von der Region unterstützten Verfügbarkeitszonen. In Regionen, die Zonen unterstützen, müssen mindestens drei Zonen vorhanden sein.

Wichtig

Wenn Sie die Skalierungsgruppe auf zusätzliche Zonen erweitern, werden die ursprünglichen Instanzen nicht migriert oder geändert. Beim Aufskalieren werden neue Instanzen erstellt und gleichmäßig auf die ausgewählten Verfügbarkeitszonen verteilt. Daten aus den ursprünglichen Instanzen werden nicht zu den neuen Zonen migriert. Beim Abskalieren der Skalierungsgruppe wird die Entfernung von regionsbezogenen Instanzen priorisiert. Danach werden Instanzen basierend auf der Abskalierungsrichtlinie entfernt.

Die Erweiterung zu einer zonenbezogenen Skalierungsgruppe erfolgt in drei Schritten:

  1. Vorbereiten der Zonenerweiterung
  2. Aktualisieren des Zonenparameters in der Skalierungsgruppe
  3. Hinzufügen neuer Zoneninstanzen und Entfernen der ursprünglichen Instanzen

Vorbereiten der Zonenerweiterung

Warnung

Mit dieser Funktion können Sie der Skalierungsgruppe Zonen hinzufügen. Sie können nicht zu einer regionsbezogenen Skalierungsgruppe zurückkehren oder Zonen entfernen, nachdem sie hinzugefügt wurden.

So bereiten Sie die Zonenerweiterung vor:

  • Vergewissern Sie sich, dass Sie über ein ausreichendes Kontingent für die VM-Größe in der ausgewählten Region verfügen, um mehr Instanzen verarbeiten zu können.
  • Überprüfen Sie, ob die VM-Größe und die verwendeten Datenträgertypen in allen gewünschten Zonen verfügbar sind. Sie können die API für Compute Resources SKUs verwenden, um zu bestimmen, welche Größen in welchen Zonen verfügbar sind.
  • Überprüfen Sie, ob die Konfiguration der Skalierungsgruppe für zonenbezogene Skalierungsgruppen gültig ist:
    • platformFaultDomainCount muss auf 1 oder 5 festgelegt sein. Eine festgelegte Verteilung mit zwei oder drei Fehlerdomänen wird für zonenbezogene Bereitstellungen nicht unterstützt.
    • Kapazitätsreservierungen werden während der Zonenerweiterung nicht unterstützt. Sobald die Skalierungsgruppe vollständig zonenbezogen ist (keine regionsbezogenen Instanzen mehr), können Sie ihr eine Kapazitätsreservierungsgruppe hinzufügen.
    • Azure Dedicated Host-Bereitstellungen werden nicht unterstützt.

Aktualisieren des Zonenparameters in der Skalierungsgruppe

Aktualisieren Sie die Skalierungsgruppe, um den Zonenparameter zu ändern.

  1. Navigieren Sie zu der Skalierungsgruppe, die Sie aktualisieren möchten.
  2. Suchen Sie auf der Registerkarte „Eigenschaften“ der Landing Page für die Skalierungsgruppe nach der Eigenschaft Verfügbarkeitszone, und wählen Sie Bearbeiten aus.
  3. Wählen Sie im Dialogfeld Standort bearbeiten die gewünschten Zonen aus.
  4. Wählen Sie Übernehmen aus.

Hinzufügen neuer Zoneninstanzen und Entfernen der ursprünglichen Instanzen

Manuelles Auf- und Abskalieren

Aktualisieren Sie die Kapazität der Skalierungsgruppe, um weitere Instanzen hinzuzufügen. Die neue Kapazität sollte auf die ursprüngliche Kapazität plus die Anzahl der neuen Instanzen festgelegt werden. Wenn Ihre Skalierungsgruppe beispielsweise fünf regionsbezogene Instanzen enthält und Sie die Gruppe aufskalieren möchten, sodass in jeder der drei Zonen drei Instanzen enthalten sind, sollten Sie die Kapazität auf 14 festlegen.

Sie können den Zonenparameter und die Kapazität der Skalierungsgruppe in derselben ARM-Vorlage oder im selben REST-API-Aufruf aktualisieren.

Wenn Sie sicher sind, dass die neuen Instanzen bereit sind, skalieren Sie die Skalierungsgruppe ab, um die ursprünglichen regionsbezogenen Instanzen zu entfernen. Sie können entweder die betreffenden regionsbezogenen Instanzen manuell löschen oder die Skalierungsgruppe durch Verringern der Kapazität abskalieren. Wenn Sie die Gruppe durch Verringern der Kapazität abskalieren, entfernt die Plattform immer zuerst die regionsbezogenen Instanzen und befolgt dann die Abskalierungsrichtlinie.

Bekannte Probleme und Einschränkungen

  • Die ursprünglichen Instanzen werden nicht zu den neu hinzugefügten Zonen migriert. Ihre Workload muss alle erforderlichen Datenmigrationen oder Replikationen verarbeiten.

  • Skalierungsgruppen, die Service Fabric RP oder Azure Kubernetes Service ausführen, werden nicht unterstützt.

  • Sie können Zonen nicht entfernen oder ersetzen, sondern nur hinzufügen.

  • Sie können nicht von einer zonenübergreifenden bzw. zonenbezogenen Skalierungsgruppe zu einer regionsbezogenen Skalierungsgruppe wechseln.

  • platformFaultDomainCount muss auf 1 oder 5 festgelegt sein. Eine festgelegte Verteilung mit zwei oder drei Fehlerdomänen wird für zonenbezogene Bereitstellungen nicht unterstützt.

  • Kapazitätsreservierungen werden während der Zonenerweiterung nicht unterstützt. Sobald die Skalierungsgruppe vollständig zonenbezogen ist (keine regionsbezogenen Instanzen mehr), können Sie ihr eine Kapazitätsreservierungsgruppe hinzufügen.

  • Azure Dedicated Host-Bereitstellungen werden nicht unterstützt.

Nächste Schritte

Nachdem Sie jetzt eine Skalierungsgruppe in einer Verfügbarkeitszone erstellt haben, können Sie lernen, wie das Bereitstellen von Anwendungen in Virtual Machine Scale Sets oder das Verwenden von automatischer Skalierung mit Virtual Machine Scale Sets funktioniert.