Automatische Instanzreparaturen für Azure Virtual Machine Scale Sets

Durch das Aktivieren von automatischen Instanzreparaturen für Azure Virtual Machine Scale Sets können Sie Hochverfügbarkeit für Anwendungen erzielen, indem Sie eine Reihe von fehlerfreien Instanzen verwalten. Wenn durch die Anwendungsintegritätserweiterung oder den Integritätstest des Lastenausgleichs eine fehlerhafte Instanz gefunden wird, versucht die automatische Instanzreparatur, die Instanz wiederherzustellen, indem Reparaturaktionen ausgelöst werden, z. B. das Löschen der fehlerhaften Instanz und das Erstellen einer neuen Instanz, um sie zu ersetzen, das Durchführen von Reimaging für die fehlerhafte Instanz oder ein Neustart der fehlerhaften Instanz.

Anforderungen für die Verwendung automatischer Instanzreparaturen

Aktivieren der Anwendungsintegritätsüberwachung für eine Skalierungsgruppe

Für die Skalierungsgruppe sollte die Anwendungsintegritätsüberwachung für Instanzen aktiviert sein. Die Systemüberwachung kann entweder mithilfe der Erweiterung Anwendungsintegrität oder durch Lastenausgleichs-Integritätstests durchgeführt werden, wobei nur eine der beiden Optionen gleichzeitig aktiviert werden kann. Die Erweiterung für Anwendungsintegrität oder der Lastenausgleich testet den für die VM-Instanzen konfigurierten Anwendungsendpunkt mit Ping, um den Integritätsstatus der Anwendung zu ermitteln. Dieser Integritätsstatus wird vom Orchestrator der Skalierungsgruppe verwendet, um die Instanzintegrität zu überwachen und bei Bedarf Reparaturen auszuführen.

Konfigurieren des Endpunkts zum Bereitstellen des Integritätsstatus

Vergewissern Sie sich vor dem Aktivieren der Richtlinie für automatische Instanzreparatur, dass für die Skalierungsgruppeninstanzen ein Anwendungsendpunkt konfiguriert ist, der den Integritätsstatus der Anwendung ausgeben kann. Um den Integritätsstatus für die Application Health-Erweiterung zu konfigurieren, können Sie entweder Binary Health States oder Rich Health States verwenden. Informationen zum Konfigurieren des Integritätsstatus mithilfe von Lastenausgleichs-Integritätstests finden Sie unter Verhalten bei erfolgreichen Tests.

Für Instanzen, die als „Fehlerhaft“ oder „Unbekannt“ gekennzeichnet sind (Zustand Unbekannt ist nur mit Application Health-Erweiterung – Rich Health States verfügbar), werden automatische Reparaturen von der Skalierungsgruppe ausgelöst. Stellen Sie sicher, dass der Anwendungsendpunkt ordnungsgemäß konfiguriert ist, bevor Sie die Richtlinie für automatische Reparaturen aktivieren, um unbeabsichtigte Instanzreparaturen zu vermeiden, während der Endpunkt konfiguriert wird.

API-Version

Die Richtlinie für automatische Reparaturen wird für die API-Computeversion 2018-10-01 oder höher unterstützt.

Die Einstellung repairAction für das Durchführen von Reimaging und Neustart wird für Compute-API-Versionen ab 2021-11-01 unterstützt.

Einschränkungen beim Verschieben von Ressourcen oder Abonnements

Ressourcen- oder Abonnementverschiebungen werden derzeit nicht für Skalierungsgruppen unterstützt, wenn die Richtlinie für automatische Reparaturen aktiviert ist.

Einschränkung für Service Fabric-Skalierungsgruppen

Dieses Feature wird für Service Fabric-Skalierungsgruppen zurzeit nicht unterstützt.

Einschränkung für VMs mit Bereitstellungsfehlern

Automatische Reparaturen unterstützen derzeit keine Szenarien, in denen eine VM-Instanz aufgrund eines Bereitstellungsfehlers als Fehlerhaft gekennzeichnet wurde. Die VMs müssen erfolgreich initialisiert sein, damit die Funktionen zur Integritätsüberwachung und zur automatischen Reparatur aktiviert werden können.

Wie funktionieren automatische Instanzreparaturen?

Das Feature für automatische Instannreparatur basiert auf der Integritätsüberwachung einzelner Instanzen in einer Skalierungsgruppe. VM-Instanzen in einer Skalierungsgruppe können so konfiguriert werden, dass der Integritätsstatus der Anwendung entweder mit der Erweiterung für die Anwendungsintegrität oder mit Lastenausgleichs-Integritätstests ausgegeben wird. Wenn eine Instanz fehlerhaft ist, führt die Skalierungsgruppe eine vorkonfigurierte Reparaturaktion für die fehlerhafte Instanz aus. Automatische Instanzreparaturen können im VM-Skalierungsgruppenmodell mithilfe des automaticRepairsPolicy-Objekts aktiviert werden.

Der automatische Instanzenreparaturvorgang funktioniert wie folgt:

  1. Die Erweiterung für Anwendungsintegrität oder Lastenausgleichs-Integritätstests pingen den Anwendungsendpunkt innerhalb der einzelnen virtuellen Computer in der Skalierungsgruppe pingen, um den Integritätsstatus der Anwendung für jede Instanz abzurufen.
  2. Wenn der Endpunkt mit dem Status 200 (OK) antwortet, wird die Instanz als „Fehlerfrei“ gekennzeichnet. In allen anderen Fällen (auch wenn der Endpunkt nicht erreichbar ist) wird die Instanz als „Fehlerhaft“ markiert.
  3. Wenn eine Instanz fehlerhaft ist, wendet die Skalierungsgruppe die vorkonfigurierte Reparaturaktion (Ersetzen ist Standard) auf die fehlerhafte Instanz an.
  4. Instanzreparaturen werden in Batches ausgeführt. Zu jedem Zeitpunkt werden nicht mehr als 5 % der Gesamtzahl der Instanzen in der Skalierungsgruppe repariert. Wenn eine Skalierungsgruppe über weniger als 20 Instanzen verfügt, werden die Reparaturen für jeweils eine fehlerhafte Instanz gleichzeitig durchgeführt.
  5. Der oben beschriebene Vorgang wird fortgesetzt, bis alle fehlerhaften Instanzen in der Skalierungsgruppe repariert wurden.

Verfügbare Reparaturaktionen

Es sind drei Reparaturaktionen für automatische Instanzreparaturen verfügbar: Ersetzen, Reimaging durchführen und Neu starten. Die Standardreparaturaktion ist „Ersetzen“, Sie können aber automatische Reparaturen für die Verwendung von „Reimaging“ oder „Neu starten“ konfigurieren, indem Sie die Einstellung repairAction unter dem automaticRepairsPolicy-Objekt ändern.

  • Ersetzen löscht die fehlerhafte Instanz und erstellt eine neue Instanz, um sie zu ersetzen. Das neueste VM-Skalierungsgruppenmodell wird verwendet, um die neue Instanz zu erstellen. Diese Reparaturaktion ist die Standardeinstellung.

  • Reimaging durchführen wendet den Vorgang zum Durchführen von Reimaging auf die fehlerhafte Instanz an.

  • Neu starten wendet den Vorgang zum Neustart auf die fehlerhafte Instanz an.

In der folgenden Tabelle sind die Unterschiede zwischen allen drei Reparaturaktionen aufgeführt.

Reparaturaktion VM-Instanz-ID beibehalten? Private IP beibehalten? Verwalteter Datenträger beibehalten? Verwalteter Betriebssystemdatenträger beibehalten? Lokaler (temporärer) Datenträger beibehalten?
Ersetzen (Standard) No Nr. Nr. Nr. Nein
Reimaging durchführen Ja Ja Ja Keine Ja
Neu starten Ja Ja Ja Ja Ja

Ausführliche Informationen zum Aktualisieren der Reparaturaktion unter der Richtlinie für automatische Reparaturen finden Sie im Abschnitt Konfigurieren einer Reparaturaktion für die Richtlinie für automatische Reparaturen.

Batchverarbeitung

Die automatischen Instanzreparaturvorgänge werden in Batches ausgeführt. Zu jedem Zeitpunkt werden nicht mehr als 5 % der Instanzen in der Skalierungsgruppe über die Richtlinie für automatische Reparaturen repariert. Mit diesem Prozess wird verhindert, dass eine große Anzahl von Instanzen gleichzeitig gelöscht und neu erstellt wird, wenn diese gleichzeitig als fehlerhaft eingestuft werden.

Karenzzeit

Wenn eine Instanz aufgrund einer PUT-, PATCH- oder POST-Aktion, die für die Skalierungsgruppe ausgeführt wird, einen Statusänderungsvorgang durchläuft, wird jede Reparaturaktion für diese Instanz erst ausgeführt, nachdem die Toleranzperiode abgewartet wurde. Die Toleranzperiode ist die Zeitspanne, die es der Instanz ermöglicht, in einen fehlerfreien Zustand zurückzukehren. Die Toleranzperiode beginnt nach Abschluss der Zustandsänderung. Dadurch werden vorzeitige oder versehentliche Reparaturvorgänge vermieden. Die Toleranzperiode wird für alle neu erstellten Instanzen in der Skalierungsgruppe eingehalten, einschließlich der als Ergebnis eines Reparaturvorgangs erstellten Instanz. Die Toleranzperiode wird im ISO 8601-Format in Minuten angegeben und kann mithilfe der Eigenschaft automaticRepairsPolicy.gracePeriod festgelegt werden. Die Toleranzperiode kann zwischen 10 Minuten und 90 Minuten betragen und weist einen Standardwert von 10 Minuten auf.

Aufschieben von Reparaturen

Virtual Machine Scale Sets bietet die Möglichkeit, automatische Instanzreparaturen bei Bedarf vorübergehend aufzuschieben. serviceState für automatische Reparaturen unter der Eigenschaft orchestrationServices in der Instanzansicht der VM-Skalierungsgruppe zeigt den aktuellen Status automatischer Reparaturen an. Wenn für eine Skalierungsgruppe automatische Reparaturen konfiguriert werden, wird serviceState auf Running (Wird ausgeführt) festgelegt. Wenn die automatischen Reparaturen für eine Skalierungsgruppe aufgeschoben werden, wird der Parameter serviceState auf Suspended (Angehalten) festgelegt. Wenn automaticRepairsPolicy für eine Skalierungsgruppe definiert ist, die Funktion für automatische Reparaturen jedoch nicht aktiviert ist, hat der serviceState-Parameter den Wert Wird nicht ausgeführt.

Wenn neu erstellte Instanzen zur Ersetzung der fehlerhaften Instanzen in einer Skalierungsgruppe auch nach wiederholt durchgeführten Reparaturvorgängen fehlerhaft bleiben, aktualisiert die Plattform als Sicherheitsmaßnahme den serviceState für automatische Reparaturen auf Suspended. Sie können die automatischen Reparaturen fortsetzen, indem Sie den Wert von serviceState für automatische Reparaturen auf Running festlegen. Ausführliche Anweisungen finden Sie im Abschnitt zum Anzeigen und Aktualisieren des Dienststatus der Richtlinie für automatische Reparaturen für Ihre Skalierungsgruppe.

Sie können auch Azure-Warnungsregeln einrichten, um serviceState Änderungen zu überwachen und benachrichtigt zu werden, wenn automatische Reparaturen in Ihrer Skalierungsgruppe angehalten werden. Ausführliche Informationen finden Sie unter Verwenden von Azure-Warnungsregeln zum Überwachen von Änderungen im Dienstzustand automatischer Instanzenreparaturen.

Instanzschutz und automatische Reparaturen

Wenn eine Instanz in einer Skalierungsgruppe durch Anwenden einer der Schutzrichtlinien geschützt ist, werden für diese Instanz keine automatischen Reparaturen ausgeführt. Dies gilt für beide Schutzrichtlinien: Vor horizontalem Herunterskalieren schützen und Vor Aktionen für Skalierungsgruppen schützen.

Beenden der Benachrichtigung und der automatischen Reparatur

Wenn für eine Skalierungsgruppe das Feature Beendigungsbenachrichtigung aktiviert ist, folgt im Rahmen eines Ersetzen-Vorgangs die Löschung fehlerhafter Instanzen der Konfiguration der Beendigungsbenachrichtigung. Eine Beendigungsbenachrichtigung wird über den Azure-Metadatendienst – geplante Ereignisse – gesendet, und die Löschung von Instanzen wird für die Dauer des konfigurierten Verzögerungstimeouts aufgeschoben. Die Erstellung einer neuen Instanz zur Ersetzung der fehlerhaften wird jedoch nicht bis nach dem Ablauf des Timeouts verschoben.

Aktivieren der Richtlinie für automatische Reparaturen beim Erstellen einer neuen Skalierungsgruppe

Wichtig

Ab November 2023 werden VM-Skalierungsgruppen, die mit PowerShell und der Azure CLI erstellt wurden, standardmäßig auf den flexiblen Orchestrierungsmodus festgelegt, wenn kein Orchestrierungsmodus angegeben wird. Weitere Informationen zu dieser Änderung und zu den Maßnahmen, die Sie ergreifen sollten, finden Sie unter Breaking Change für PowerShell-/CLI-Kunden mit VMSS – Microsoft Community Hub.

Um die Richtlinie für automatische Reparaturen beim Erstellen einer neuen Skalierungsgruppe zu aktivieren, stellen Sie sicher, dass alle Anforderungen erfüllt sind, die für das Abonnieren dieses Features erforderlich sind. Der Anwendungsendpunkt sollte für Skalierungsgruppeninstanzen ordnungsgemäß konfiguriert werden, um zu vermeiden, dass unbeabsichtigte Reparaturen ausgelöst werden, während der Endpunkt konfiguriert wird. Bei neu erstellten Skalierungsgruppen werden alle Instanzreparaturen erst nach Ablauf der Toleranzperiode ausgeführt. Um die automatische Instanzreparatur in einer Skalierungsgruppe zu aktivieren, verwenden Sie das automaticRepairsPolicy-Objekt im VM-Skalierungsgruppenmodell.

Sie können auch diese Schnellstartvorlage verwenden, um eine VM-Skalierungsgruppe bereitzustellen. Bei dieser Skalierungsgruppe sind ein Integritätstest für den Lastenausgleich und automatische Instanzreparaturen mit einer Toleranzperiode von 30 Minuten aktiviert.

Mit den folgenden Schritten wird die Richtlinie für automatische Reparaturen beim Erstellen einer neuen Skalierungsgruppe aktiviert.

  1. Navigieren Sie zu VM-Skalierungsgruppen.
  2. Wählen Sie + Hinzufügen aus, um eine neue Skalierungsgruppe zu erstellen.
  3. Wechseln Sie zur Registerkarte Integrität.
  4. Suchen Sie den Abschnitt Integrität.
  5. Aktivieren Sie die Option Anwendungsintegrität überwachen.
  6. Suchen Sie den Abschnitt Automatische Reparaturrichtlinie.
  7. Aktivieren Sie die Option automatische Reparaturen.
  8. Geben Sie in Karenzzeit (Min.) die Karenzzeit in Minuten ein; zulässig sind Werte zwischen 10 und 90 Minuten.
  9. Wenn Sie die Erstellung der neuen Skalierungsgruppe abgeschlossen haben, wählen Sie die Schaltfläche Überprüfen und erstellen aus.

Aktivieren der Richtlinie für automatische Reparaturen beim Aktualisieren einer vorhandenen Skalierungsgruppe

Bevor Sie die Richtlinie für automatische Reparaturen in einer vorhandenen Skalierungsgruppe aktivieren, stellen Sie sicher, dass alle Anforderungen erfüllt sind, die für das Abonnieren dieses Features erforderlich sind. Der Anwendungsendpunkt sollte für Skalierungsgruppeninstanzen ordnungsgemäß konfiguriert werden, um zu vermeiden, dass unbeabsichtigte Reparaturen ausgelöst werden, während der Endpunkt konfiguriert wird. Um die automatische Instanzreparatur in einer Skalierungsgruppe zu aktivieren, verwenden Sie das automaticRepairsPolicy-Objekt im VM-Skalierungsgruppenmodell.

Vergewissern Sie sich nach dem Aktualisieren des Modells einer vorhandenen Skalierungsgruppe, dass auf alle Instanzen der Skalierung das neueste Modell angewendet wird. Sie können sich dabei auf die Anweisung zum Aktualisieren von VMs auf das neueste Skalierungsgruppenmodell beziehen.

Sie können die Richtlinie für automatische Reparaturen einer vorhandenen Skalierungsgruppe über das Azure-Portal ändern.

Hinweis

Aktivieren Sie die Application Health-Erweiterung oder Lastenausgleichs-Integritätstests in Ihren VM-Skalierungsgruppen, bevor Sie mit den nächsten Schritten beginnen.

  1. Navigieren Sie zu einer vorhandenen VM-Skalierungsgruppe.0
  2. Wählen Sie unter Einstellungen im Menü auf der linken Seite Integrität und Reparatur aus.
  3. Aktivieren Sie die Option Anwendungsintegrität überwachen.

Wenn Sie Ihre Skalierungsgruppe mithilfe der Application Health-Erweiterung überwachen:

  1. Wählen Sie in der Dropdownliste mit Anwendungsintegritätsmonitoren die Application Health-Erweiterung aus.

  2. Wählen Sie aus der Dropdownliste Protokoll das Netzwerkprotokoll aus, das von Ihrer Anwendung für Integritätsmeldungen verwendet wird. Wählen Sie das für Ihre Anwendungsanforderungen geeignete Protokoll aus. Zur Auswahl stehen HTTP, HTTPS oder TCP.

  3. Geben Sie im Konfigurationsfeld Portnummer den Netzwerkport ein, der zum Überwachen der Anwendungsintegrität verwendet wird.

  4. Geben Sie unter Pfad den Anwendungsendpunktpfad (z. B. „/“) ein, der zum Melden der Anwendungsintegrität verwendet wird.

    Hinweis

    Die Application Health-Erweiterung pingt diesen Pfad auf jeder VM in der Skalierungsgruppe, um den Anwendungsintegritätsstatus für jede Instanz abzurufen. Wenn Sie Binary Health States verwenden und die Endpunkte mit dem Status „200 (OK)“ antworten, wird die Instanz als „Fehlerfrei“ gekennzeichnet. In allen anderen Fällen (auch wenn der Endpunkt nicht erreichbar ist) wird die Instanz als „Fehlerhaft“ markiert. Weitere Optionen für Integritätszustände finden Sie unter Rich Health States.

Wenn Sie Ihre Skalierungsgruppe mithilfe von SLB-Integritätstests überwachen, gehen Sie folgendermaßen vor:

  • Wählen Sie in der Dropdownliste „Anwendungsintegritätsmonitor die Option Lastenausgleichstest “ aus. Wählen Sie als Integritätstest für Lastenausgleich einen vorhandenen Integritätstest aus, oder erstellen Sie einen neuen Integritätstest zur Überwachung.

So aktivieren Sie automatische Reparaturen:

  1. Suchen Sie den Abschnitt Automatische Reparaturrichtlinie.
  2. Aktivieren Sie die Option automatische Reparaturen.
  3. Geben Sie in Karenzzeit (Min.) die Karenzzeit in Minuten ein. Zulässig sind Werte zwischen 10 und 90 Minuten.
  4. Klicken Sie auf Speichern, wenn Sie fertig sind.

Konfigurieren einer Reparaturaktion für die Richtlinie für automatische Reparaturen

Mit der Einstellung repairAction unter automaticRepairsPolicy können Sie die gewünschte Reparaturaktion angeben, die als Reaktion auf eine fehlerhafte Instanz ausgeführt wird. Wenn Sie die Reparaturaktion für eine vorhandene Richtlinie für automatische Reparaturen aktualisieren, müssen Sie zuerst die automatischen Reparaturen für die Skalierungsgruppe deaktivieren und dann mit der aktualisierten Reparaturaktion erneut aktivieren. Dieser Prozess ist in den folgenden Beispielen dargestellt.

In diesem Beispiel wird veranschaulicht, wie die Reparaturaktion für eine Skalierungsgruppe mit einer vorhandenen Richtlinie für automatische Reparaturen aktualisiert wird. Verwenden Sie die API-Version 2021-11-01 oder höher.

Deaktivieren der vorhandenen Richtlinie für automatische Reparaturen für Ihre Skalierungsgruppe

PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2021-11-01'
{
  "properties": {
    "automaticRepairsPolicy": {
            "enabled": "false"
        }
    }
}

Erneutes Aktivieren der Richtlinie für automatische Reparaturen mit der gewünschten Reparaturaktion

PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2021-11-01'
{
  "properties": {
    "automaticRepairsPolicy": {
            "enabled": "true",
            "gracePeriod": "PT40M",
            "repairAction": "Reimage"
        }
    }
}

Anzeigen und Aktualisieren des Dienststatus einer Richtlinie für automatische Instanzreparaturen

Verwenden Sie Instanzansicht abrufen mit API-Version 2019-12-01 oder höher für eine VM-Skalierungsgruppe, um den serviceState für automatische Reparaturen unter der Eigenschaft orchestrationServices anzuzeigen.

GET '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2019-12-01'
{
  "orchestrationServices": [
    {
      "serviceName": "AutomaticRepairs",
      "serviceState": "Running"
    }
  ]
}

Verwenden Sie Set Orchestration Service State, um serviceState für automatische Reparaturen auszusetzen oder fortzusetzen.

POST '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2023-07-01'

{
  "serviceName": "AutomaticRepairs",
  "action": "Suspend"
}

Problembehandlung

Fehler beim Aktivieren der Richtlinie für automatische Reparaturen

Wenn Sie einen Fehler „BadRequest“ mit der Meldung „Could not find member 'automaticRepairsPolicy' on object of type 'properties'“ (Member „automaticRepairsPolicy“ für Objekt vom Typ „properties“ wurde nicht gefunden) erhalten, überprüfen Sie die API-Version, die für die VM-Skalierungsgruppe verwendet wird. Für dieses Feature ist API-Version 2018-10-01 oder höher erforderlich.

Instanz wird auch bei aktivierter Richtlinie nicht repariert

Die Instanz kann sich in der Toleranzperiode befinden. Dieser Zeitraum ist die Dauer, die nach einer Zustandsänderung auf der Instanz gewartet wird, bevor Reparaturen ausgeführt werden. Dadurch werden vorzeitige oder versehentliche Reparaturen vermieden. Die Reparaturaktion sollte durchgeführt werden, sobald die Toleranzperiode für die Instanz abgeschlossen ist.

Anzeigen des Integritätsstatus der Anwendung für Skalierungsgruppeninstanzen

Zum Anzeigen des Integritätsstatus der Anwendung können Sie die API zum Abrufen der Instanzenansicht für Instanzen in einer VM-Skalierungsgruppe verwenden. Mit Azure PowerShell können Sie das Cmdlet Get-AzVmssVM mit dem Flag -InstanceView verwenden. Der Integritätsstatus der Anwendung wird unter der Eigenschaft vmHealth bereitgestellt.

Im Azure-Portal können Sie den Integritätsstatus ebenfalls anzeigen. Wechseln Sie zu einer vorhandenen Skalierungsgruppe, wählen Sie im Menü auf der linken Seite Instanzen aus, und lesen Sie in der Spalte Health state (Integritätsstatus) den Integritätsstatus jeder Skalierungsgruppeninstanz ab.

Nächste Schritte

Erfahren Sie, wie die Erweiterung für Anwendungsintegrität oder Lastenausgleichs-Integritätstests für Ihre Skalierungsgruppen konfiguriert werden.