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 un'istanza non integra viene trovata dall'estensione integrità dell'applicazione o dai probe di integrità del servizio di bilanciamento del carico, le riparazioni automatiche tenteranno di ripristinare l'istanza attivando azioni di ripristino come l'eliminazione dell'istanza non integra e la creazione di una nuova istanza per sostituirla, ricreando l'istanza non integra o riavviando l'istanza non integra.

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 usando l'estensione Integrità applicazioni o i probe di integrità del servizio di bilanciamento del carico, dove è possibile abilitarne solo uno 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 usato dall'agente di orchestrazione del set di scalabilità per monitorare l'integrità dell'istanza ed eseguire le riparazioni quando necessario.

Configurare l'endpoint per fornire lo stato di integrità

Prima di abilitare i criteri di ripristino automatico delle istanze, assicurarsi che le istanze del set di scalabilità abbiano un endpoint dell'applicazione configurato per generare lo stato di integrità dell'applicazione. Per configurare lo stato di integrità nell'estensione Integrità applicazione, è possibile usare Stati di integrità binari o Stati di integrità avanzata. 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 i criteri di ripristino automatico per evitare riparazioni impreviste dell'istanza, mentre l'endpoint viene configurato.

Versione dell'API

I criteri di ripristino automatici sono supportati per l'API di calcolo versione 2018-10-01 o successiva.

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.

Restrizione 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 scenari in cui un'istanza di macchina virtuale è contrassegnata come non integra a causa di un errore di 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 ripristino automatico dell'istanza si basa sul monitoraggio dell'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 trovata un'istanza non integra, il set di scalabilità eseguirà un'azione di ripristino preconfigurata nell'istanza non integra. I ripristini automatici delle istanze possono essere abilitate nel modello del set di scalabilità di macchine virtuali usando l'oggetto automaticRepairsPolicy.

Il processo di riparazione automatica delle istanze è il seguente:

  1. L'estensione Integrità dell'applicazione o i probe di integrità del servizio di bilanciamento del carico effettuano il ping dell'endpoint dell'applicazione all'interno di ogni macchina virtuale nel set di scalabilità per ottenere lo stato di integrità dell'applicazione per ogni istanza.
  2. Se l'endpoint risponde con uno stato 200 (OK), l'istanza viene contrassegnata come "Integra". In tutti gli altri casi (incluso se l'endpoint non è raggiungibile), l'istanza è contrassegnata come "Non integra".
  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. I ripristini delle istanze vengono eseguiti in batch. 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, i ripristini vengono eseguiti per un'istanza non integra alla volta.
  5. Il processo precedente continua fino a quando non viene ripristinata tutta l'istanza non integra nel set di scalabilità.

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.

  • 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 integra.

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

Azione di ripristino ID istanza di macchina virtuale mantenuto? IP privato mantenuto? Disco dati gestito mantenuto? Disco del sistema operativo gestito mantenuto? Disco locale (temporaneo) mantenuto?
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.

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 simultanea e la ricreazione di un numero elevato di istanze, se rilevate contemporaneamente non integre.

Periodo di prova

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 tolleranza è la quantità di tempo per consentire all'istanza di tornare allo stato integro. 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 rispettato per qualsiasi istanza appena creata nel set di scalabilità, incluso quello creato in seguito all'operazione di ripristino. 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 offrono la possibilità di sospendere temporaneamente il ripristino automatico delle istanze, se necessario. ServiceState per le riparazioni automatiche nella proprietà orchestrationServices, nella visualizzazione dell'istanza del set di scalabilità di macchine virtuali, mostra lo stato corrente dei ripristini automatici. Quando un set di scalabilità viene scelto per il ripristino automatico, 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 i ripristini automatici venfono sospesi 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, i ripristini automatici non vengono eseguiti su 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 Sostituisci, l'eliminazione di un'istanza non integra segue la configurazione di terminazione della notifica. 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 integra non attende il completamento del timeout di ritardo.

Abilitazione dei criteri di rripristino 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 i criteri di ripristino automatico durante la creazione di un nuovo set di scalabilità, assicurarsi che siano soddisfatti tutti i requisiti per acconsentire esplicitamente a questa funzionalità. L'endpoint dell'applicazione deve essere configurato correttamente per le istanze del set di scalabilità per evitare l'attivazione di ripristini imprevisti durante la configurazione dell'endpoint. Per i nuovi set di scalabilità creati, tutti i ripristini di istanze vengono eseguite solo dopo il completamento del periodo di tolleranza. Per abilitare il ripristino automatico dell'istanza in un set di scalabilità, 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. Il set di scalabilità ha un probe di integrità del servizio di bilanciamento del carico e il ripristino automatico delle istanze abilitate con un periodo di tolleranza di 30 minuti.

La procedura seguente consente di abilitare i criteri di ripristino automatico durante la creazione di un nuovo set di scalabilità.

  1. Passare a set di scalabilità di 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.

Abilitazione dei criteri di ripristino automatico durante l'aggiornamento di un set di scalabilità esistente

Prima di abilitare i criteri di ripristino automatico in un set di scalabilità esistente, assicurarsi che vengano soddisfatti tutti i requisiti per acconsentire esplicitamente a questa funzionalità. L'endpoint dell'applicazione deve essere configurato correttamente per le istanze del set di scalabilità per evitare l'attivazione di ripristini imprevisti durante la configurazione dell'endpoint. Per abilitare il ripristino automatico dell'istanza in un set di scalabilità, 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

Abilitare l'estensione Integrità applicazione o i probe di integrità di bilanciamento del carico nei 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 sta monitorando il set di scalabilità usando l'estensione Integrità applicazione:

  1. Scegliere Estensione Integrità applicazione dall'elenco a discesa di Health Monitor dell'applicazione.

  2. Nell'elenco a discesa Protocollo, scegliere il protocollo di rete usato dall'applicazione per segnalare l'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. In Percorso, specificare il percorso dell'endpoint dell'applicazione (ad esempio, "/") usato per segnalare l'integrità dell'applicazione.

    Nota

    L'estensione Integrità applicazione effettuerà il ping di questo percorso all'interno di ogni macchina virtuale nel 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 (incluso se l'endpoint non è raggiungibile), l'istanza è contrassegnata come "Non integra". Per altre opzioni relative allo stato di integrità, vedere Stati di integrità avanzati.

Se si sta monitorando il set di scalabilità usando probe di integrità di bilanciamento del carico:

  • Scegliere Probe di bilanciamento del carico dall'elenco a discesa di Health Monitor dell'applicazione. Per il probe di integrità del servizio di bilanciamento del carico, selezionare un probe di integrità esistente o creare un nuovo probe di integrità 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 da 10 a 90.
  4. Al termine, seleziona Salva.

Configurare un'azione di ripristino sui criteri di ripristino automatico

L'impostazione repairAction in automaticRepairsPolicy consente di specificare l'azione di ripristino desiderata eseguita in risposta a un'istanza non integra. 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.

In questo esempio viene illustrato come aggiornare l'azione di ripristino in un set di scalabilità con un criterio di ripristino automatico esistente. Usare la versione dell'API 2021-11-01 o successiva.

Disabilitare i criteri di ripristino automatico esistenti nel 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"
        }
    }
}

Riabilitare i criteri di ripristino automatico con l'azione di ripristino 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 Ottieni visualizzazione istanza con API versione 2019-12-01 o successiva per il set di scalabilità di macchine virtuali per visualizzare serviceState per il ripristino automatico nella proprietà orchestrationServices.

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

Usare Imposta stato del servizio di orchestrazione per sospendere o riprendere serviceState per il ripristino automatico.

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 ripristinata anche quando i criteri sono abilitati

L'istanza potrebbe essere nel periodo di tolleranza. 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'azione di ripristino deve essere eseguita una volta completato il periodo di tolleranza per l'istanza.

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

È possibile usare l'API Ottieni visualizzazione istanza per le istanze in 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à.