Condividi tramite


Configurare il backup coerente con l'applicazione per le macchine virtuali Linux di Azure usando Backup di Azure

Questo articolo descrive come creare backup coerenti con l'applicazione per macchine virtuali Linux distribuite in Azure usando Backup di Azure. Illustra come configurare il framework di script e la risoluzione dei problemi.

Quando Backup di Azure crea uno snapshot di una macchina virtuale, la coerenza dell'applicazione garantisce che le applicazioni vengano avviate correttamente dopo il ripristino della macchina virtuale. Per ottenere questo comportamento, usare il framework di prescript e postscript Linux, che supporta le macchine virtuali Linux distribuite con Azure Resource Manager. Questi script non funzionano per le macchine virtuali distribuite con System Center Service Manager o Windows.

Come funziona il framework?

Il framework offre un'opzione per eseguire prescript e postscript personalizzati durante la creazione di snapshot delle macchine virtuali. Gli script di pre-esecuzione vengono eseguiti prima di acquisire lo snapshot della macchina virtuale. I postscript vengono eseguiti immediatamente dopo aver creato lo snapshot della macchina virtuale. I prescript e i postscript offrono la flessibilità necessaria per controllare l'applicazione e l'ambiente durante la creazione di snapshot delle macchine virtuali.

Gli script richiamano le API dell'applicazione nativa, che mettono in pausa le operazioni di I/O e trasferiscono il contenuto della memoria sul disco. Queste azioni assicurano che lo snapshot sia coerente con l'applicazione. I postscript usano API native-application per scongelare l'I/O, che consente all'applicazione di riprendere le normali operazioni dopo lo snapshot della macchina virtuale.

Configurare prescript e postscript per le macchine virtuali Linux di Azure

Per configurare gli script di pre-esecuzione e post-esecuzione, seguire questi passaggi:

  1. Accedere come utente radice alla macchina virtuale Linux di cui si vuole eseguire il backup.

  2. Da GitHub scaricare VMSnapshotScriptPluginConfig.json e copiarlo nella cartella /etc/azure per tutte le macchine virtuali di cui si vuole eseguire il backup. Se la cartella /etc/azure non esiste, crearla.

  3. Copiare il pre-script e il PostScript per l'applicazione su tutte le macchine virtuali di cui eseguire il backup. È possibile copiare gli script in qualsiasi posizione della macchina virtuale. Assicurarsi di aggiornare il percorso completo del file di script nel file VMSnapshotScriptPluginConfig.json.

  4. Per utilizzare i seguenti file, assicurarsi di disporre delle autorizzazioni corrispondenti:

    • VMSnapshotScriptPluginConfig.json: l'autorizzazione è 600. Ad esempio, solo l'utente radice deve disporre delle autorizzazioni di lettura e scrittura per questo file e nessun utente deve disporre delle autorizzazioni di esecuzione.
    • File di prescrizione: l'autorizzazione è 700. Ad esempio, solo l'utente radice deve disporre delle autorizzazioni di lettura, scrittura ed esecuzione per questo file. Il file dovrebbe essere uno script della shell, ma in teoria questo script può generare internamente o fare riferimento ad altri script come uno script Python.
    • Postscript: l'autorizzazione è 700. Ad esempio, solo l'utente radice deve disporre delle autorizzazioni di lettura, scrittura ed esecuzione per questo file. Il file dovrebbe essere uno script della shell, ma in teoria questo script può generare internamente o fare riferimento ad altri script come uno script Python.

    Importante

    Il framework offre agli utenti numerosi poteri. Proteggere il framework e assicurarsi che solo l'utente radice abbia accesso ai file JSON e script critici.

    Se i requisiti non sono soddisfatti, lo script non può essere eseguito, il che provoca un arresto anomalo del file system e un backup incoerente.

  5. Configurare VMSnapshotScriptPluginConfig.json come descritto di seguito:

    • pluginName: lasciare invariato questo campo oppure gli script potrebbero non funzionare come previsto.
    • preScriptLocation: specificare il percorso completo della trascrizione nella macchina virtuale di cui eseguire il backup.
    • postScriptLocation: specificare il percorso completo del postscript nella macchina virtuale di cui eseguire il backup.
    • preScriptParams: specificare i parametri facoltativi che devono essere passati al prefisso. Tutti i parametri devono essere tra virgolette. Se si usano più parametri, separare i parametri con una virgola.
    • postScriptParams: specificare i parametri facoltativi che devono essere passati al postscript. Tutti i parametri devono essere tra virgolette. Se si usano più parametri, separare i parametri con una virgola.
    • preScriptNoOfRetries: impostare il numero di tentativi di ripetizione del codice se si verifica un errore prima di terminare. Zero significa solo un tentativo e nessuna ripetizione in caso di errore.
    • postScriptNoOfRetries: impostare il numero di tentativi di ripetizione del postscript se si verifica un errore prima di terminare. Zero significa solo un tentativo e nessuna ripetizione in caso di errore.
    • timeoutInSeconds: Specificare timeout separati per lo script preliminare e il postscript (il valore massimo è 1800).
    • continueBackupOnFailure: impostare questo valore su true se si vuole che Backup di Azure esegua il fallback a un backup coerente con file system/arresto anomalo in caso di errore dello script di pre-backup o post-backup. Se si verifica un errore di script, l'impostazione di questo valore su false provoca il fallimento del backup. Un'eccezione è quando si dispone di una macchina virtuale a disco singolo che passa al backup coerente in caso di arresto anomalo, indipendentemente da questa impostazione. Quando continueBackupOnFailure il valore è impostato su false, se il backup ha esito negativo, l'operazione di backup viene ritentata secondo una logica di ripetizione nel servizio (per il numero stabilito di tentativi).
    • fsFreezeEnabled: specificare se Linux fsfreeze deve essere chiamato durante la creazione dello snapshot della macchina virtuale per garantire la coerenza del file system. È consigliabile mantenere questa impostazione impostata su true a meno che l'applicazione non abbia una dipendenza dalla disabilitazione di fsfreeze.
    • ScriptsExecutionPollTimeSeconds: Imposta l'intervallo di tempo in cui l'estensione deve dormire tra ogni sondaggio e l'esecuzione dello script. Ad esempio, se il valore è 2, l'estensione controlla se l'esecuzione di pre-script o di post-script è stata completata ogni 2 secondi. Il valore minimo e massimo che può essere richiesto è rispettivamente 1 e 5. Il valore deve essere rigorosamente un numero intero.
  6. Il framework di script è ora configurato. Se il backup della macchina virtuale è già configurato, il backup successivo richiama gli script e attiva il backup coerente con l'applicazione. Se il backup della macchina virtuale di Azure non è configurato, configurarlo seguendo la procedura descritta in Eseguire il backup delle macchine virtuali di Azure nelle cassette di sicurezza dei Servizi di ripristino.

Risolvere gli errori di backup coerenti con l'applicazione della macchina virtuale Linux di Azure

Assicurarsi di aggiungere la registrazione appropriata durante la scrittura del pre-script e del post-script. Esaminare i log degli script per risolvere eventuali problemi di script. Se si verificano ancora problemi durante l'esecuzione di script, vedere la tabella seguente.

Errore Messaggio di errore Azione consigliata
Pre-ScriptExecutionFailed La trascrizione ha restituito un errore, pertanto il backup potrebbe non essere coerente con l'applicazione. Controllare i log di errore dello script per risolvere il problema.
Post-ScriptExecutionFailed Il postscript ha restituito un errore che potrebbe influire sullo stato dell'applicazione. Esaminare i log degli errori per lo script per risolvere il problema e controllare lo stato dell'applicazione.
Pre-ScriptNotFound Il prefisso non è stato trovato nel percorso specificato nel file di configurazione VMSnapshotScriptPluginConfig.json. Assicurarsi che il prefisso sia presente nel percorso specificato nel file di configurazione per garantire il backup coerente con l'applicazione.
Post-ScriptNotFound Il postscript non è stato trovato nel percorso specificato nel file di configurazione VMSnapshotScriptPluginConfig.json. Assicurarsi che il postscript sia presente nel percorso specificato nel file di configurazione per garantire il backup coerente con l'applicazione.
IncorrectPluginhostFile Il Pluginhost file, fornito con l'estensione VmSnapshotLinux , è danneggiato, quindi il prescript e il postscript non possono essere eseguiti e il backup non è coerente con l'applicazione. Disinstallare l'estensione VmSnapshotLinux . Reinstalla automaticamente con il backup successivo per risolvere il problema.
IncorrectJSONConfigFile Il file VMSnapshotScriptPluginConfig.json non è corretto, quindi il codice e il postscript non possono essere eseguiti e il backup non è coerente con l'applicazione. Scaricare la copia da GitHub ed eseguirne di nuovo la configurazione.
InsufficientPermissionforPre-Script Per l'esecuzione di script, l'utente radice deve essere il proprietario del file. Il file deve avere 700 autorizzazioni. Ovvero, solo il proprietario deve avere autorizzazioni di lettura, scrittura ed esecuzione. Assicurarsi che l'utente radice sia il proprietario del file di script e che solo il proprietario disponga delle autorizzazioni di lettura, scrittura ed esecuzione.
InsufficientPermissionforPost-Script Per l'esecuzione di script, l'utente radice deve essere il proprietario del file. Il file deve avere 700 autorizzazioni. Ovvero, solo il proprietario deve avere autorizzazioni di lettura, scrittura ed esecuzione. Assicurarsi che l'utente radice sia il proprietario del file di script e che solo il proprietario disponga delle autorizzazioni di lettura, scrittura ed esecuzione.
Pre-ScriptTimeout Si è verificato il time-out dell'esecuzione del pre-script per il backup coerente con l'applicazione. Controllare lo script e aumentare il timeout nel file VMSnapshotScriptPluginConfig.json disponibile in /etc/azure.
Post-ScriptTimeout Si è verificato il time-out dell'esecuzione del post-script per il backup coerente con l'applicazione. Controllare lo script e aumentare il timeout nel file VMSnapshotScriptPluginConfig.json disponibile in /etc/azure.