Ripristini automatici delle istanze per i set di scalabilità di macchine virtuali di Azure

L'abilitazione del ripristino automatico delle istanze per i set di scalabilità di macchine virtuali di Azure consente di ottenere una disponibilità elevata per le applicazioni mantenendo un set di istanze integre. Se viene rilevata un'istanza non sana da Application Health extension o da Load balancer health probes, le riparazioni automatiche dell'istanza tenteranno di ripristinarla attivando azioni di riparazione, ad esempio eliminando l'istanza non sana e creandone una nuova in sostituzione, rieseguendo il reimaging dell'istanza non sana oppure riavviando l'istanza non sana.

Requisiti per l'uso dei ripristini automatici delle istanze

Abilitare il monitoraggio dell'integrità delle applicazioni per il set di scalabilità

Il set di scalabilità deve avere il monitoraggio dell'integrità delle applicazioni per le istanze abilitate. Il monitoraggio dell'integrità può essere eseguito tramite l'estensione Application Health o le probe di integrità del bilanciamento del carico e solo una delle due può essere abilitata alla volta. L'estensione per l'integrità dell'applicazione o i probe del servizio di bilanciamento del carico effettuano il ping dell'endpoint applicazione configurato nelle istanze della macchina virtuale per determinare lo stato di integrità dell'applicazione. Questo stato di integrità viene utilizzato dall'orchestratore del set di scalabilità per monitorare l'integrità dell'istanza ed effettuare riparazioni quando necessario.

Configurare l'endpoint per fornire lo stato di salute

Prima di abilitare il criterio di riparazione automatica delle istanze, assicurarsi che le istanze del set di scalabilità abbiano un endpoint dell'applicazione configurato per emettere lo stato di integrità dell'applicazione. Per configurare lo stato di integrità nell'estensione Application Health, è possibile usare Stati di integrità binari oppure Stati di integrità dettagliati. Per configurare lo stato di integrità usando i probe di integrità del servizio di bilanciamento del carico, vedere Comportamento del probe.

Per le istanze contrassegnate come "Non integro" o "Sconosciuto" (lo stato Sconosciuto è disponibile solo con l'estensione Integrità applicazioni - Stati avanzati di integrità), i ripristini automatici vengono attivati dal set di scalabilità. Assicurarsi che l'endpoint dell'applicazione sia configurato correttamente prima di abilitare il criterio di riparazione automatica, per evitare riparazioni indesiderate dell'istanza durante la configurazione dell'endpoint.

Versione dell'API

Il criterio di ripristino automatico è supportato per la versione 2018-10-01 dell'API di calcolo o per versioni successive.

L'impostazione repairAction per Reimage and Restart è supportata per le versioni dell'API di calcolo 2021-11-01 o successive.

Restrizioni relative a spostamenti di risorse o sottoscrizioni

Gli spostamenti di risorse o sottoscrizioni non sono attualmente supportati per i set di scalabilità quando è abilitata la funzionalità di ripristino automatico.

Limitazione per i set di scalabilità di Service Fabric

Questa funzionalità non è attualmente supportata per i set di scalabilità di Service Fabric.

Restrizione per le macchine virtuali con errori di provisioning

Le riparazioni automatiche attualmente non supportano gli scenari in cui un'istanza di macchina virtuale è contrassegnata come Unhealthy a causa di un errore durante il provisioning. Le macchine virtuali devono essere inizializzate correttamente per abilitare il monitoraggio dell'integrità e le funzionalità di ripristino automatico.

Come funzionano le riparazioni automatiche delle istanze?

La funzionalità di riparazione automatica delle istanze si basa sul monitoraggio dello stato di integrità delle singole istanze in un set di scalabilità. Le istanze di macchine virtuali in un set di scalabilità possono essere configurate per generare lo stato di integrità dell'applicazione usando l'estensione Integrità dell'applicazione o i probe di integrità del servizio di bilanciamento del carico. Se viene rilevata un'istanza non integra, il set di scalabilità eseguirà un'azione di ripristino preconfigurata sull'istanza non integra. Le riparazioni automatiche delle istanze possono essere abilitate nel modello del set di scalabilità di macchine virtuali utilizzando l'oggetto automaticRepairsPolicy.

Il processo di riparazione automatica delle istanze è il seguente:

  1. L'estensione per l'integrità dell'applicazione o i probe di integrità del bilanciamento del carico eseguono il ping dell'endpoint dell'applicazione all'interno di ogni macchina virtuale del set di scalabilità per ottenere lo stato di integrità dell'applicazione per ogni istanza.
  2. Se l'endpoint risponde con un codice di stato 200 (OK), l'istanza viene contrassegnata come "Sana". In tutti gli altri casi (compreso il caso in cui l'endpoint non sia raggiungibile), l'istanza è contrassegnata come "Non sana".
  3. Quando viene trovata un'istanza non integra, il set di scalabilità applica l'azione di ripristino configurata (il valore predefinito è Sostituisci) all'istanza non integra.
  4. Le riparazioni delle istanze vengono eseguite in gruppi. In qualsiasi momento, non vengono ripristinate più del 5% delle istanze totali nel set di scalabilità. Se un set di scalabilità ha meno di 20 istanze, le riparazioni vengono effettuate su una sola istanza non integra per volta.
  5. Il processo sopra descritto continua fino a quando tutte le istanze non integre nel set di scalabilità non vengono riparate.

Azioni di ripristino disponibili

Sono disponibili tre azioni di ripristino per le riparazioni automatiche delle istanze: Sostituisci, Ricrea immagine e Riavvia. L'azione di ripristino predefinita è Sostituisci, ma è possibile configurare le riparazioni automatiche per l'uso di Reimage o Restart modificando l'impostazione repairAction in automaticRepairsPolicy oggetto.

Nota

Le riparazioni automatiche con l'azione "Sostituisci" creeranno sempre nuove macchine virtuali in base al modello vmSS corrente. Se sono state collegate macchine virtuali con configurazioni diverse dal modello del set di scalabilità delle macchine virtuali, quelle differenze non verranno mantenute. La nuova macchina virtuale corrisponderà al modello vmSS corrente, non alla configurazione della macchina virtuale eliminata.

  • Sostituisci elimina l'istanza non integra e crea una nuova istanza per sostituirla. Il modello più recente del set di scalabilità di macchine virtuali viene usato per creare la nuova istanza. Questa azione di ripristino è l'impostazione predefinita.
  • Ricrea applica l'operazione di ricreazione dell'immagine all'istanza non integra.
  • Riavvia applica l'operazione di riavvio all'istanza non sana.

Nella tabella seguente vengono confrontate le differenze tra tutte e tre le azioni di ripristino:

Azione di ripristino ID istanza VM mantenuto? IP privato conservato? Disco dati gestito conservato? Disco del sistema operativo gestito mantenuto? Disco locale (temporaneo) conservato?
Sostituisci (impostazione predefinita) NO NO NO NO NO
Ricreare l'immagine NO
Riavviare

Per informazioni dettagliate sull'aggiornamento dell'azione di ripristino nei criteri di riparazione automatica, vedere la sezione configurare un'azione di ripristino sui criteri di ripristino automatico.

Elaborazione in batch

Le operazioni di ripristino automatico dell'istanza vengono eseguite in batch. In qualsiasi momento, non più del 5% delle istanze nel set di scalabilità vengono ripristinate tramite i criteri di ripristino automatico. Questo processo consente di evitare l'eliminazione e la ricreazione simultanee di un gran numero di istanze, qualora vengano rilevate contemporaneamente come non integre.

Periodo di tolleranza

Quando un'istanza passa attraverso un'operazione di modifica dello stato a causa di un'azione PUT, PATCH o POST eseguita nel set di scalabilità, qualsiasi azione di ripristino su tale istanza viene eseguita solo dopo il termine del periodo di tolleranza. Il periodo di grazia è l'intervallo di tempo necessario affinché l'istanza torni a uno stato di integrità. Il periodo di tolleranza inizia dopo il completamento della modifica dello stato, che consente di evitare eventuali operazioni di ripristino premature o accidentali. Il periodo di tolleranza viene applicato a qualsiasi istanza creata di recente nel set di scalabilità, inclusa quella creata in seguito a un'operazione di riparazione. Il periodo di tolleranza viene specificato in minuti in formato ISO 8601 e può essere impostato usando la proprietà automaticRepairsPolicy.gracePeriod. Il periodo di tolleranza può variare tra 10 minuti e 90 minuti e ha un valore predefinito di 10 minuti.

Sospensione dei ripristini

I set di scalabilità di macchine virtuali consentono di sospendere temporaneamente la riparazione automatica delle istanze se necessario. Il serviceState per le riparazioni automatiche nella proprietà orchestrationServices nella visualizzazione dell'istanza del set di scalabilità di macchine virtuali mostra lo stato corrente delle riparazioni automatiche. Quando un set di scalabilità viene configurato per le riparazioni automatiche, il valore del parametro serviceState è impostato su In esecuzione. Quando il ripristino automatico viene sospeso per un set di scalabilità, il parametro serviceState è impostato su Sospeso. Se automaticRepairsPolicy è definito in un set di scalabilità, ma la funzionalità di ripristino automatico non è abilitata, il parametro serviceState è impostato su Non in esecuzione.

Se le istanze appena create per sostituire quelle non integre in un set di scalabilità continuano a rimanere non integre anche dopo l'esecuzione ripetuta delle operazioni di ripristino, come misura di sicurezza la piattaforma aggiorna serviceState per il ripristino automatico in Sospeso. È possibile riprendere le riparazioni automatiche impostando il valore di serviceState per il ripristino automatico su In esecuzione. Le istruzioni dettagliate sono disponibili nella sezione relativa alla visualizzazione e all'aggiornamento dello stato del servizio dei criteri di ripristino automatico per il set di scalabilità.

È anche possibile configurare le regole di avviso di Azure per monitorare le modifiche di serviceState e ricevere una notifica se le riparazioni automatiche vengono sospese nel set di scalabilità. Per informazioni dettagliate, vedere Usare le regole di avviso di Azure per monitorare le modifiche nello stato del servizio di ripristino automatico delle istanze.

Protezione delle istanze e riparazioni automatiche

Se un'istanza di un set di scalabilità è protetta applicando uno dei criteri di protezione, le riparazioni automatiche non vengono eseguite per tale istanza. Questo comportamento si applica a entrambi i criteri di protezione: proteggere da azioni con scalabilità orizzontale e Proteggi dalle azioni del set di scalabilità.

Terminare la notifica e le riparazioni automatiche

Se la funzionalità di notifica di terminazione è abilitata in un set di scalabilità, durante un'operazione di Replace l'eliminazione di un'istanza non integra segue la configurazione della notifica di terminazione. Una notifica di terminazione viene inviata tramite il servizio metadati di Azure, ovvero gli eventi pianificati, e l'eliminazione dell'istanza viene ritardata durante il timeout del ritardo configurato. Tuttavia, la creazione di una nuova istanza per sostituire quella non sana non aspetta che il periodo di ritardo si completi.

Abilitare il criterio di ripristino automatico durante la creazione di un nuovo set di scalabilità

Importante

A partire da novembre 2023, i set di scalabilità di macchine virtuali creati con PowerShell e l'interfaccia della riga di comando di Azure avranno per impostazione predefinita la modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica che causa un'interruzione per i clienti di PowerShell/CLI di VMSS - Hub della community Microsoft

Per abilitare il criterio di riparazione automatica durante la creazione di un nuovo set di scalabilità, assicurarsi di soddisfare tutti i requisiti necessari per aderire a questa funzionalità. L'endpoint applicativo deve essere configurato correttamente per le istanze del set di scalabilità, per evitare di attivare riparazioni indesiderate mentre l'endpoint viene configurato. Per i set di scalabilità creati di recente, eventuali riparazioni delle istanze vengono eseguite solo dopo la fine del periodo di tolleranza. Per abilitare il ripristino automatico delle istanze in un set di scalabilità di macchine virtuali, usare l'oggetto automaticRepairsPolicy nel modello del set di scalabilità di macchine virtuali.

È anche possibile usare questo modello di avvio rapido per distribuire un set di scalabilità di macchine virtuali. Nella guida introduttiva, il set di scalabilità include una probe di integrità del bilanciamento del carico e ha abilitate le riparazioni automatiche delle istanze con un periodo di tolleranza impostato su 30 minuti.

I passaggi seguenti consentono di abilitare il criterio di riparazione automatica durante la creazione di un nuovo set di scalabilità.

  1. Passare a set di scalabilità delle macchine virtuali.
  2. Selezionare + Aggiungi per creare un nuovo set di scalabilità.
  3. Passare alla scheda Integrità.
  4. Individuare la sezione Integrità.
  5. Abilitare l'opzione Monitorare l'integrità dell'applicazione.
  6. Individuare la sezione Criteri di ripristino automatico.
  7. Attivare l'opzione Ripristino automatico.
  8. In Periodo di tolleranza (min), specificare il periodo di tolleranza in minuti, i valori consentiti sono compresi tra 10 e 90 minuti.
  9. Al termine della creazione del nuovo set di scalabilità, selezionare pulsante Rivedi e crea.

Abilitare il criterio di ripristino automatico durante l'aggiornamento di un set di scalabilità esistente

Prima di abilitare i criteri di riparazione automatica in un set di scalabilità esistente, assicurarsi che siano soddisfatti tutti i requisiti per aderire a questa funzionalità. L'endpoint applicativo deve essere configurato correttamente per le istanze del set di scalabilità per evitare l'avvio di riparazioni non intenzionali durante la configurazione dell'endpoint. Per abilitare il ripristino automatico delle istanze in un set di scalabilità di macchine virtuali, usare l'oggetto automaticRepairsPolicy nel modello del set di scalabilità di macchine virtuali.

Dopo aver aggiornato il modello di un set di scalabilità esistente, assicurarsi che il modello più recente venga applicato a tutte le istanze della scala. Vedere le istruzioni su come aggiornare le macchine virtuali con il modello di set di scalabilità più recente.

È possibile modificare i criteri di ripristino automatico di un set di scalabilità esistente tramite il portale di Azure.

Nota

Abilita l'estensione Integrità applicazioni o le probe di integrità del servizio di bilanciamento del carico nei tuoi set di scalabilità di macchine virtuali prima di iniziare i passaggi successivi.

  1. Passare a un set di scalabilità di macchine virtuali esistente.
  2. In Impostazioni, nel menu a sinistra, selezionare Integrità e ripristino.
  3. Abilitare l'opzione Monitorare l'integrità dell'applicazione.

Se si monitora il set di scalabilità tramite l'estensione Application Health:

  1. Selezionare l'estensione di integrità dell'applicazione dal menu a discesa del monitor integrità dell'applicazione.

  2. Nell'elenco a discesa Protocollo, scegliere il protocollo di rete utilizzato dall'applicazione per segnalare lo stato di integrità. Selezionare il protocollo appropriato in base ai requisiti dell'applicazione. Le opzioni del protocollo sono HTTP, HTTPS o TCP.

  3. Nella casella di configurazione Numero porta, digitare la porta di rete usata per monitorare l'integrità dell'applicazione.

  4. Per Percorso, specifica il percorso dell'endpoint dell'applicazione (ad esempio, "/") usato per segnalare lo stato di integrità dell'applicazione.

    Nota

    L'estensione Integrità dell'applicazione eseguirà il ping di questo percorso all'interno di ogni macchina virtuale del set di scalabilità per ottenere lo stato di integrità dell'applicazione per ogni istanza. Se si usano Stati di integrità binari e l'endpoint risponde con uno stato 200 (OK), l'istanza viene contrassegnata come "Integra". In tutti gli altri casi (compreso il caso in cui l'endpoint non sia raggiungibile), l'istanza è contrassegnata come "Non sana". Per altre opzioni relative allo stato di integrità, vedere Stati di integrità avanzati.

Se si monitora il set di scalabilità tramite probe di integrità dell'SLB:

  • Scegliere Probe di bilanciamento del carico dall'elenco a discesa del Monitoraggio dell'integrità dell'applicazione. - Per la probe di integrità del bilanciamento del carico, selezionare una probe di integrità esistente o crearne una nuova da usare per il monitoraggio.

Per abilitare il ripristino automatico:

  1. Individuare la sezione Criteri di ripristino automatico.
  2. Attivare l'opzione Ripristino automatico.
  3. In Periodo di tolleranza (min), specificare il periodo di tolleranza in minuti. I valori consentiti sono compresi tra 10 e 90 minuti.
  4. Al termine, seleziona Salva.

Configurare un'azione di riparazione nel criterio di riparazione automatica

L'impostazione repairAction sotto automaticRepairsPolicy consente di specificare l'azione di riparazione desiderata da eseguire in risposta a un'istanza non sana. Se si aggiorna l'azione di ripristino in un criterio di ripristino automatico esistente, è necessario prima disabilitare il ripristino automatico nel set di scalabilità e riabilitarlo con l'azione di ripristino aggiornata. Questo processo è illustrato negli esempi seguenti.

Questo esempio illustra come aggiornare l'azione di riparazione in un set di scalabilità con un criterio di riparazioni automatiche esistente. Usare la versione dell'API 2021-11-01 o successiva.

Disabilita il criterio di riparazione automatica esistente nel tuo set di scalabilità

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

Riattivare i criteri per le riparazioni automatiche con l'azione di riparazione desiderata

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"
        }
    }
}

Visualizzazione e aggiornamento dello stato del servizio dei criteri di riparazione automatica delle istanze

Usare Get Instance View con la versione dell'API 2019-12-01 o successiva per un set di scalabilità di macchine virtuali, per visualizzare serviceState delle riparazioni automatiche nella proprietà orchestrationServices.

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

Usa Imposta lo stato del servizio di orchestrazione per sospendere o riprendere serviceState per le riparazioni automatiche.

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

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

Risoluzione dei problemi

Mancata abilitazione dei criteri di ripristino automatico

Se viene visualizzato un errore "BadRequest" con un messaggio che indica che non è stato possibile trovare il membro "automaticRepairsPolicy" nell'oggetto di tipo "properties", controllare la versione dell'API usata per il set di scalabilità di macchine virtuali. Per questa funzionalità è necessaria la versione API 2018-10-01 o successiva.

L'istanza non viene riparata anche quando il criterio è abilitato

L'istanza potrebbe trovarsi nel periodo di grazia. Questo periodo è la quantità di tempo di attesa dopo qualsiasi modifica dello stato nell'istanza prima di eseguire riparazioni, che consente di evitare eventuali riparazioni premature o accidentali. L'operazione di ripristino deve essere eseguita dopo il completamento del periodo di tolleranza per l'istanza.

Visualizzazione dello stato di integrità dell'applicazione per le istanze del set di scalabilità

È possibile usare l'API Get Instance View per le istanze di un set di scalabilità di macchine virtuali per visualizzare lo stato di integrità dell'applicazione. Con Azure PowerShell è possibile usare il cmdlet Get-AzVmssVM con il flag -InstanceView. Lo stato di integrità dell'applicazione viene fornito nella proprietà vmHealth.

Nel portale di Azure è possibile visualizzare anche lo stato di integrità. Passare a un set di scalabilità esistente, selezionare Istanze dal menu a sinistra e esaminare la colonna Stato di integrità per lo stato di integrità di ogni istanza del set di scalabilità.

Passaggi successivi

Informazioni su come configurare l'estensione Integrità delle applicazioni o i probe di integrità del servizio di bilanciamento del carico per i set di scalabilità.