Automatische exemplaarreparaties voor virtuele-machineschaalsets van Azure
Het inschakelen van automatische exemplaarreparaties voor Virtuele-machineschaalsets van Azure helpt bij het realiseren van hoge beschikbaarheid voor toepassingen door een set goede exemplaren te onderhouden. Als er een beschadigde instantie wordt gevonden door de application Health-extensie of de statustests van de load balancer, wordt geprobeerd het exemplaar te herstellen door herstelacties te activeren, zoals het verwijderen van het beschadigde exemplaar en het maken van een nieuwe instantie om het te vervangen, het beschadigde exemplaar opnieuw in te stellen of het beschadigde exemplaar opnieuw op te starten.
Vereisten voor het gebruik van automatische exemplaarreparaties
Toepassingsstatuscontrole inschakelen voor schaalset
Voor de schaalset moet toepassingsstatuscontrole zijn ingeschakeld voor exemplaren. Statuscontrole kan worden uitgevoerd met behulp van application Health-extensie of load balancer-statustests, waarbij er slechts één tegelijk kan worden ingeschakeld. De toepassingsstatusextensie of de load balancer test ping het toepassingseindpunt dat is geconfigureerd op instanties van virtuele machines om de status van de toepassing te bepalen. Deze status wordt gebruikt door de orchestrator van de schaalset om de status van het exemplaar te bewaken en reparaties uit te voeren wanneer dat nodig is.
Eindpunt configureren om de status op te geven
Voordat u het beleid voor automatische exemplaarherstel inschakelt, moet u ervoor zorgen dat uw schaalsetexemplaren een toepassingseindpunt hebben geconfigureerd om de status van de toepassing te verzenden. Als u de status van de Application Health-extensie wilt configureren, kunt u binaire statusstatussen of uitgebreide statusstatussen gebruiken. Als u de status wilt configureren met behulp van load balancer-statustests, raadpleegt u het gedrag van tests.
Exemplaren die zijn gemarkeerd als 'Niet in orde' of 'Onbekend' (onbekende status is alleen beschikbaar met de extensie Application Health - Rich Health States), worden automatische reparaties geactiveerd door de schaalset. Zorg ervoor dat het toepassingseindpunt correct is geconfigureerd voordat u het beleid voor automatische reparaties inschakelt om onbedoelde exemplaarreparaties te voorkomen, terwijl het eindpunt wordt geconfigureerd.
API-versie
Beleid voor automatische reparatie wordt ondersteund voor compute-API-versie 2018-10-01 of hoger.
De repairAction
instelling voor Reimage en Restart wordt ondersteund voor compute-API-versies 2021-11-01 of hoger.
Beperkingen voor verplaatsingen van resources of abonnementen
Verplaatsingen van resources of abonnementen worden momenteel niet ondersteund voor schaalsets wanneer de functie voor automatische reparatie is ingeschakeld.
Beperking voor Service Fabric-schaalsets
Deze functie wordt momenteel niet ondersteund voor Service Fabric-schaalsets.
Beperking voor VM's met inrichtingsfouten
Automatische reparaties ondersteunen momenteel geen scenario's waarbij een VM-exemplaar is gemarkeerd als Beschadigd vanwege een inrichtingsfout. VM's moeten worden geïnitialiseerd om statuscontrole en mogelijkheden voor automatisch herstel mogelijk te maken.
Hoe werken automatische exemplaarherstelwerkzaamheden?
De functie voor automatisch exemplaarherstel is afhankelijk van statuscontrole van afzonderlijke exemplaren in een schaalset. VM-exemplaren in een schaalset kunnen worden geconfigureerd om de status van de toepassing te verzenden met behulp van de statustest van de toepassing of load balancer. Als een exemplaar niet in orde is, voert de schaalset een vooraf geconfigureerde herstelactie uit op het beschadigde exemplaar. Automatische exemplaarreparaties kunnen worden ingeschakeld in het model virtuele-machineschaalset met behulp van het automaticRepairsPolicy
object.
Het proces voor automatische exemplaarreparaties gaat als volgt:
- Statustests van de toepassingsstatus of load balancer pingen het toepassingseindpunt in elke virtuele machine in de schaalset om de status van de toepassing voor elk exemplaar op te halen.
- Als het eindpunt reageert met de status 200 (OK), wordt het exemplaar gemarkeerd als 'In orde'. In alle andere gevallen (inclusief als het eindpunt onbereikbaar is), wordt het exemplaar gemarkeerd als Niet in orde.
- Wanneer een exemplaar niet in orde is, past de schaalset de geconfigureerde herstelactie (standaard is Vervangen) toe op het beschadigde exemplaar.
- Exemplaarreparaties worden uitgevoerd in batches. Op elk gewenst moment wordt niet meer dan 5% van de totale exemplaren in de schaalset hersteld. Als een schaalset minder dan 20 exemplaren heeft, worden de reparaties uitgevoerd voor één beschadigde instantie tegelijk.
- Het bovenstaande proces wordt voortgezet totdat alle beschadigde exemplaren in de schaalset worden hersteld.
Beschikbare herstelacties
Er zijn drie herstelacties beschikbaar voor automatische exemplaarreparaties: Vervangen, Opnieuw maken en Opnieuw opstarten. De standaardherstelactie is Vervangen, maar u kunt automatische reparaties configureren voor het gebruik van Reimage of Opnieuw opstarten door de repairAction
instelling onder automaticRepairsPolicy
object te wijzigen.
Vervang het beschadigde exemplaar en maakt een nieuw exemplaar om deze te vervangen. Het nieuwste virtuele-machineschaalsetmodel wordt gebruikt om het nieuwe exemplaar te maken. Deze herstelactie is de standaardinstelling.
Met reimage wordt de reimagebewerking toegepast op het beschadigde exemplaar.
Opnieuw opstarten past de herstartbewerking toe op het beschadigde exemplaar.
In de volgende tabel worden de verschillen tussen alle drie de herstelacties vergeleken:
Herstelactie | ID van VM-exemplaar behouden? | Privé-IP behouden? | Beheerde gegevensschijf behouden? | Beheerde besturingssysteemschijf behouden? | Lokale (tijdelijke) schijf behouden? |
---|---|---|---|---|---|
Vervangen (standaard) | Nee | Nee | Nee | Nee | Nr. |
Installatiekopie terugzetten | Ja | Ja | Ja | No | Ja |
Opnieuw starten | Ja | Ja | Ja | Ja | Ja |
Zie de sectie Herstelbeleid configureren voor meer informatie over het bijwerken van uw reparatieactie onder beleid voor automatische reparaties .
Batching
De automatische herstelbewerkingen voor exemplaren worden uitgevoerd in batches. Op elk gewenst moment wordt niet meer dan 5% van de exemplaren in de schaalset hersteld via het beleid voor automatische reparaties. Met dit proces voorkomt u gelijktijdig verwijderen en opnieuw maken van een groot aantal exemplaren als deze op hetzelfde moment niet in orde zijn.
Evaluatieperiode
Wanneer een exemplaar een statuswijzigingsbewerking doorloopt vanwege een PUT-, PATCH- of POST-actie die wordt uitgevoerd op de schaalset, wordt elke herstelactie op dat exemplaar pas uitgevoerd nadat de respijtperiode is beëindigd. Respijtperiode is de hoeveelheid tijd om het exemplaar in staat te stellen terug te keren naar de status In orde. De respijtperiode wordt gestart nadat de statuswijziging is voltooid, waardoor voortijdige of onopzettelijke herstelbewerkingen worden voorkomen. De respijtperiode wordt uitgevoerd voor alle nieuw gemaakte exemplaren in de schaalset, inclusief de instantie die is gemaakt als gevolg van herstelbewerking. Respijtperiode wordt opgegeven in minuten in ISO 8601-indeling en kan worden ingesteld met behulp van de eigenschap automaticRepairsPolicy.gracePeriod. Respijtperiode kan variëren tussen 10 minuten en 90 minuten en heeft een standaardwaarde van 10 minuten.
Schorsing van reparaties
Virtuele-machineschaalsets bieden de mogelijkheid om automatische exemplaarreparaties tijdelijk te onderbreken, indien nodig. De serviceState voor automatische reparaties onder de eigenschap orchestrationServices in de exemplaarweergave van virtuele-machineschaalset toont de huidige status van de automatische reparaties. Wanneer een schaalset wordt gekozen voor automatische reparaties, wordt de waarde van parameterserviceState ingesteld op Actief. Wanneer de automatische reparaties worden onderbroken voor een schaalset, wordt de parameterserviceState ingesteld op Onderbroken. Als automaticRepairsPolicy is gedefinieerd op een schaalset, maar de functie voor automatische reparaties niet is ingeschakeld, is de parameter serviceState ingesteld op Niet actief.
Als nieuw gemaakte exemplaren voor het vervangen van de beschadigde exemplaren in een schaalset nog steeds niet in orde blijven, zelfs nadat herhaaldelijk reparatiebewerkingen zijn uitgevoerd, werkt het platform de serviceState bij voor automatische reparaties naar Onderbroken. U kunt de automatische reparaties opnieuw hervatten door de waarde van serviceState in te stellen voor automatische reparaties op Actief. Gedetailleerde instructies vindt u in de sectie over het weergeven en bijwerken van de servicestatus van het beleid voor automatische reparaties voor uw schaalset.
U kunt ook Azure Alert Rules instellen om serviceState-wijzigingen te controleren en een melding te ontvangen als automatische reparaties worden onderbroken in uw schaalset. Zie Azure-waarschuwingsregels gebruiken om wijzigingen in de servicestatus van automatische exemplaarreparaties te controleren voor meer informatie.
Exemplaarbeveiliging en automatische reparaties
Als een exemplaar in een schaalset wordt beveiligd door een van de beveiligingsbeleidsregels toe te passen, worden automatische reparaties niet op dat exemplaar uitgevoerd. Dit gedrag is van toepassing op zowel het beveiligingsbeleid: Beveiligen tegen inschalen en Beveiligen tegen acties voor schaalsets .
Melding beëindigen en automatische reparaties
Als de functie voor beëindigingsmeldingen is ingeschakeld voor een schaalset, volgt het verwijderen van een beschadigd exemplaar tijdens een vervangingsbewerking de configuratie van de beëindigingsmelding. Er wordt een beëindigingsmelding verzonden via de Azure-metagegevensservice, geplande gebeurtenissen, en het verwijderen van exemplaren wordt vertraagd tijdens de geconfigureerde time-out voor vertraging. Het maken van een nieuw exemplaar om de beschadigde instantie te vervangen, wacht echter niet tot de vertragingstime-out is voltooid.
Beleid voor automatische reparaties inschakelen bij het maken van een nieuwe schaalset
Belangrijk
Vanaf november 2023 worden VM-schaalsets die zijn gemaakt met PowerShell en Azure CLI standaard ingesteld op de flexibele indelingsmodus als er geen indelingsmodus is opgegeven. Voor meer informatie over deze wijziging en welke acties u moet ondernemen, gaat u naar Belangrijke wijziging voor VMSS PowerShell/CLI-klanten - Microsoft Community Hub
Voor het inschakelen van beleid voor automatische reparaties tijdens het maken van een nieuwe schaalset, moet u ervoor zorgen dat aan alle vereisten voor het aanmelden voor deze functie wordt voldaan. Het toepassingseindpunt moet correct worden geconfigureerd voor instanties van schaalsets om onbedoelde reparaties te voorkomen terwijl het eindpunt wordt geconfigureerd. Voor nieuw gemaakte schaalsets worden alle exemplaarreparaties pas uitgevoerd nadat de respijtperiode is voltooid. Als u het automatisch herstellen van exemplaren in een schaalset wilt inschakelen, gebruikt u het object automaticRepairsPolicy in het virtuele-machineschaalsetmodel.
U kunt deze snelstartsjabloon ook gebruiken om een virtuele-machineschaalset te implementeren. De schaalset heeft een load balancer-statustest en automatische exemplaarreparaties ingeschakeld met een respijtperiode van 30 minuten.
Met de volgende stappen kunt u beleid voor automatische reparaties inschakelen bij het maken van een nieuwe schaalset.
- Ga naar Virtuele-machineschaalsets.
- Selecteer + Toevoegen om een nieuwe schaalset te maken.
- Ga naar het tabblad Status .
- Zoek de sectie Status .
- Schakel de optie Toepassingsstatus bewaken in.
- Zoek de sectie Beleid voor automatisch herstellen.
- Schakel de optie Automatische reparatie in.
- Geef in respijtperiode (min.) de respijtperiode op in minuten, toegestane waarden liggen tussen 10 en 90 minuten.
- Wanneer u klaar bent met het maken van de nieuwe schaalset, selecteert u de knop Beoordelen en maken .
Beleid voor automatische reparaties inschakelen bij het bijwerken van een bestaande schaalset
Voordat u beleid voor automatische reparaties inschakelt in een bestaande schaalset, moet u ervoor zorgen dat aan alle vereisten voor het aanmelden voor deze functie wordt voldaan. Het toepassingseindpunt moet correct worden geconfigureerd voor instanties van schaalsets om onbedoelde reparaties te voorkomen terwijl het eindpunt wordt geconfigureerd. Als u het automatisch herstellen van exemplaren in een schaalset wilt inschakelen, gebruikt u het object automaticRepairsPolicy in het virtuele-machineschaalsetmodel.
Nadat u het model van een bestaande schaalset hebt bijgewerkt, moet u ervoor zorgen dat het meest recente model wordt toegepast op alle exemplaren van de schaal. Raadpleeg de instructies voor het up-to-date brengen van VM's met het nieuwste schaalsetmodel.
U kunt het beleid voor automatische reparaties van een bestaande schaalset wijzigen via Azure Portal.
Notitie
Schakel de application health-extensie of load balancer-statustests in op uw virtuele-machineschaalsets voordat u de volgende stappen start.
- Ga naar een bestaande virtuele-machineschaalset.0
- Selecteer Status en herstel onder Instellingen in het menu aan de linkerkant.
- Schakel de optie Toepassingsstatus bewaken in.
Als u uw schaalset bewaakt met behulp van de Application Health-extensie:
Kies de Application Health-extensie in de vervolgkeuzelijst Application Health Monitor.
Kies in de vervolgkeuzelijst Protocol het netwerkprotocol dat door uw toepassing wordt gebruikt om de status te rapporteren. Selecteer het juiste protocol op basis van uw toepassingsvereisten. Protocolopties zijn HTTP, HTTPS of TCP.
Typ in het vak Poortnummerconfiguratie de netwerkpoort die wordt gebruikt om de toepassingsstatus te bewaken.
Geef voor Pad het pad naar het toepassingseindpunt op (bijvoorbeeld '/') dat wordt gebruikt om de toepassingsstatus te rapporteren.
Notitie
De extensie Application Health pingt dit pad binnen elke virtuele machine in de schaalset om de status van de toepassing voor elk exemplaar op te halen. Als u binaire statusstatussen gebruikt en het eindpunt reageert met een status 200 (OK), wordt het exemplaar gemarkeerd als 'In orde'. In alle andere gevallen (inclusief als het eindpunt onbereikbaar is), wordt het exemplaar gemarkeerd als Niet in orde. Verken Rich Health States voor meer opties voor de status van de status.
Als u uw schaalset bewaakt met behulp van SLB-statustests:
- Kies load balancer-test in de vervolgkeuzelijst Application Health Monitor. Voor de statustest van de Load Balancer selecteert u een bestaande statustest of maakt u een nieuwe statustest voor bewaking.
Automatische reparaties inschakelen:
- Zoek de sectie Beleid voor automatisch herstellen.
- Schakel de optie Automatische reparatie in.
- Geef in respijtperiode (min.) de respijtperiode op in minuten. Toegestane waarden liggen tussen 10 en 90 minuten.
- Selecteer Opslaan als u klaar bent.
Een herstelactie configureren voor beleid voor automatische reparaties
Met de repairAction
instelling onder automaticRepairsPolicy
kunt u de gewenste herstelactie opgeven die wordt uitgevoerd als reactie op een beschadigde instantie. Als u de herstelactie voor een bestaand beleid voor automatische reparaties bijwerkt, moet u eerst automatische reparaties op de schaalset uitschakelen en opnieuw inschakelen met de bijgewerkte herstelactie. Dit proces wordt geïllustreerd in de onderstaande voorbeelden.
In dit voorbeeld ziet u hoe u de herstelactie op een schaalset bijwerkt met een bestaand beleid voor automatische reparaties. Gebruik API-versie 2021-11-01 of hoger.
Het bestaande beleid voor automatische reparaties op uw schaalset uitschakelen
PUT or PATCH on '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2021-11-01'
{
"properties": {
"automaticRepairsPolicy": {
"enabled": "false"
}
}
}
Automatisch reparatiebeleid opnieuw inschakelen met de gewenste herstelactie
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"
}
}
}
De servicestatus van het beleid voor automatische exemplaarreparaties weergeven en bijwerken
Gebruik de weergave Exemplaar ophalen met API-versie 2019-12-01 of hoger voor virtuele-machineschaalset om de serviceState weer te geven voor automatische reparaties onder de eigenschap orchestrationServices.
GET '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2019-12-01'
{
"orchestrationServices": [
{
"serviceName": "AutomaticRepairs",
"serviceState": "Running"
}
]
}
Gebruik Set Orchestration Service State om de serviceState te onderbreken of te hervatten voor automatische reparaties.
POST '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView?api-version=2023-07-01'
{
"serviceName": "AutomaticRepairs",
"action": "Suspend"
}
Problemen oplossen
Fout bij het inschakelen van beleid voor automatische reparaties
Als u een 'BadRequest'-fout krijgt met het bericht 'Kan lid 'automaticRepairsPolicy' niet vinden voor het object van het type 'properties'' en controleert u de API-versie die wordt gebruikt voor de virtuele-machineschaalset. API-versie 2018-10-01 of hoger is vereist voor deze functie.
Exemplaar wordt niet hersteld, zelfs niet wanneer beleid is ingeschakeld
Het exemplaar kan zich in respijtperiode bevindt. Deze periode is de hoeveelheid tijd die moet worden gewacht na een statuswijziging op het exemplaar voordat de reparaties worden uitgevoerd, wat helpt eventuele voortijdige of onopzettelijke reparaties te voorkomen. De herstelactie moet plaatsvinden zodra de respijtperiode voor het exemplaar is voltooid.
Status van de toepassing weergeven voor schaalsetexemplaren
U kunt de API Exemplaarweergave ophalen gebruiken voor exemplaren in een virtuele-machineschaalset om de status van de toepassing weer te geven. Met Azure PowerShell kunt u de cmdlet Get-AzVmssVM gebruiken met de vlag -InstanceView. De status van de toepassing wordt opgegeven onder de eigenschap vmHealth.
In Azure Portal kunt u ook de status zien. Ga naar een bestaande schaalset, selecteer Instanties in het menu aan de linkerkant en bekijk de kolom Status voor de status van elke schaalsetinstantie.
Volgende stappen
Meer informatie over het configureren van application Health-extensie of load balancer-statustests voor uw schaalsets .