Cópia de segurança consistente com aplicações de VMs Linux do Azure

Ao tirar instantâneos de cópia de segurança das suas VMs, a consistência da aplicação significa que as aplicações são iniciadas quando as VMs arrancam depois de serem restauradas. Como pode imaginar, a consistência da aplicação é extremamente importante. Para garantir que as VMs do Linux são consistentes com a aplicação, pode utilizar a arquitetura de pré-script e pós-script do Linux para fazer cópias de segurança consistentes com a aplicação. A arquitetura de pré-script e pós-script suporta máquinas virtuais do Linux implementadas Resource Manager do Azure. Os scripts para consistência de aplicações não suportam máquinas virtuais implementadas Service Manager ou máquinas virtuais do Windows.

Como funciona a arquitetura

A arquitetura fornece uma opção para executar pré-scripts e pós-scripts personalizados enquanto tira instantâneos de VM. Os pré-scripts são executados imediatamente antes de tirar o instantâneo da VM e os pós-scripts são executados imediatamente após tirar o instantâneo da VM. Os pré-scripts e pós-scripts proporcionam a flexibilidade para controlar a sua aplicação e o ambiente enquanto tira instantâneos de VM.

Os pré-scripts invocam APIs de aplicação nativas, que quiescem as E/S e removem o conteúdo dentro da memória para o disco. Estas ações garantem que o instantâneo é consistente com a aplicação. Os pós-scripts utilizam APIs de aplicações nativas para descongelar as E/S, o que permite que a aplicação retome as operações normais após o instantâneo da VM.

Passos para configurar o pré-script e o pós-script

  1. Inicie sessão como o utilizador raiz na VM do Linux para a qual pretende criar uma cópia de segurança.

  2. No GitHub, transfira VMSnapshotScriptPluginConfig.json e copie-o para a pasta /etc/azure para todas as VMs para as quais pretende criar uma cópia de segurança. Se a pasta /etc/azure não existir, crie-a.

  3. Copie o pré-script e o pós-script da sua aplicação em todas as VMs para as quais planeia criar cópias de segurança. Pode copiar os scripts para qualquer localização na VM. Certifique-se de que atualiza o caminho completo dos ficheiros de script no ficheiro VMSnapshotScriptPluginConfig.json .

  4. Confirme as seguintes permissões para estes ficheiros:

    • VMSnapshotScriptPluginConfig.json: Permissão "600". Por exemplo, apenas o utilizador "raiz" deve ter permissões de "leitura" e "escrita" para este ficheiro e nenhum utilizador deve ter permissões de "execução".

    • Ficheiro de pré-script: Permissão "700". Por exemplo, apenas o utilizador "raiz" deve ter permissões de "leitura", "escrita" e "execução" para este ficheiro. Espera-se que o ficheiro seja um script de shell, mas teoricamente este script pode gerar internamente ou referir-se a outros scripts, como um script python.

    • Pós-script Permissão "700". Por exemplo, apenas o utilizador "raiz" deve ter permissões de "leitura", "escrita" e "execução" para este ficheiro. Espera-se que o ficheiro seja um script de shell, mas teoricamente este script pode gerar internamente ou referir-se a outros scripts, como um script python.

    Importante

    A arquitetura dá aos utilizadores muita energia. Proteja a arquitetura e garanta que apenas o utilizador "raiz" tem acesso a ficheiros de script e JSON críticos. Se os requisitos não forem cumpridos, o script não será executado, o que resulta numa falha do sistema de ficheiros e numa cópia de segurança inconsistente.

  5. Configure VMSnapshotScriptPluginConfig.json conforme descrito aqui:

    • pluginName: deixe este campo tal como está ou os scripts poderão não funcionar conforme esperado.

    • preScriptLocation: indique o caminho completo do pré-script na VM que vai ser criada uma cópia de segurança.

    • postScriptLocation: indique o caminho completo do pós-script na VM que vai ser criada uma cópia de segurança.

    • preScriptParams: forneça os parâmetros opcionais que precisam de ser transmitidos para o pré-script. Todos os parâmetros devem estar entre aspas. Se utilizar vários parâmetros, separe os parâmetros com uma vírgula.

    • postScriptParams: forneça os parâmetros opcionais que precisam de ser transmitidos para o pós-script. Todos os parâmetros devem estar entre aspas. Se utilizar vários parâmetros, separe os parâmetros com uma vírgula.

    • preScriptNoOfRetries: defina o número de vezes que o pré-script deve ser repetido se ocorrer algum erro antes de terminar. Zero significa apenas uma tentativa e nenhuma repetição se ocorrer uma falha.

    • postScriptNoOfRetries: defina o número de vezes que o pós-script deve ser repetido se ocorrer algum erro antes de terminar. Zero significa apenas uma tentativa e nenhuma repetição se ocorrer uma falha.

    • timeoutInSeconds: especifique tempos limite individuais para o pré-script e o pós-script (o valor máximo pode ser 1800).

    • continueBackupOnFailure: defina este valor como verdadeiro se quiser que Azure Backup reverta para uma cópia de segurança consistente/consistente com falhas do sistema de ficheiros se o pré-script ou pós-script falhar. Definir esta opção como falso falha na cópia de segurança se ocorrer uma falha de script (exceto quando tem uma VM de disco único que reverte para uma cópia de segurança consistente com falhas, independentemente desta definição). Quando o valor continueBackupOnFailure estiver definido como falso, se a cópia de segurança falhar, a operação de cópia de segurança será novamente tentada com base numa lógica de repetição no serviço (para o número estipulado de tentativas).

    • fsFreezeEnabled: especifique se o linux fsfreeze deve ser chamado enquanto tira o instantâneo da VM para garantir a consistência do sistema de ficheiros. Recomendamos que mantenha esta definição definida como verdadeira , a menos que a sua aplicação tenha uma dependência na desativação do fsfreeze.

    • ScriptsExecutionPollTimeSeconds: defina o tempo de suspensão da extensão entre cada inquérito e a execução do script. Por exemplo, se o valor for 2, a extensão verifica se a execução do script pré/pós foi concluída a cada 2 segundos. O valor mínimo e máximo que pode ter é 1 e 5, respetivamente. O valor deve ser estritamente um número inteiro.

  6. A arquitetura de script está agora configurada. Se a cópia de segurança da VM já estiver configurada, a cópia de segurança seguinte invoca os scripts e aciona a cópia de segurança consistente com a aplicação. Se a cópia de segurança da VM não estiver configurada, configure-a com a opção Fazer cópia de segurança de máquinas virtuais do Azure para cofres dos Serviços de Recuperação.

Resolução de problemas

Certifique-se de que adiciona o registo adequado ao escrever o pré-script e pós-script e reveja os registos de scripts para corrigir quaisquer problemas de script. Se ainda tiver problemas ao executar scripts, consulte a tabela seguinte para obter mais informações.

Erro Mensagem de erro Ação recomendada
Pre-ScriptExecutionFailed O pré-script devolveu um erro, pelo que a cópia de segurança pode não ser consistente com a aplicação. Observe os registos de falhas do script para corrigir o problema.
Pós-ScriptExecutionFailed O pós-script devolveu um erro que pode afetar o estado da aplicação. Observe os registos de falhas do script para corrigir o problema e verificar o estado da aplicação.
Pre-ScriptNotFound O pré-script não foi encontrado na localização especificada no ficheiro de configuração VMSnapshotScriptPluginConfig.json . Certifique-se de que o pré-script está presente no caminho especificado no ficheiro de configuração para garantir uma cópia de segurança consistente com a aplicação.
Post-ScriptNotFound O pós-script não foi encontrado na localização especificada no ficheiro de configuração VMSnapshotScriptPluginConfig.json . Certifique-se de que o pós-script está presente no caminho especificado no ficheiro de configuração para garantir uma cópia de segurança consistente com a aplicação.
IncorrectPluginhostFile O ficheiro Pluginhost , fornecido com a extensão VmSnapshotLinux, está danificado, pelo que o pré-script e pós-script não podem ser executados e a cópia de segurança não será consistente com a aplicação. Desinstale a extensão VmSnapshotLinux e será reinstalada automaticamente com a próxima cópia de segurança para corrigir o problema.
IncorrectJSONConfigFile O ficheiro VMSnapshotScriptPluginConfig.json está incorreto, pelo que o pré-script e o pós-script não podem ser executados e a cópia de segurança não será consistente com a aplicação. Transfira a cópia do GitHub e configure-a novamente.
InsufficientPermissionforPre-Script Para executar scripts, o utilizador "raiz" deve ser o proprietário do ficheiro e o ficheiro deve ter permissões "700" (ou seja, apenas "proprietário" deve ter permissões de "leitura", "escrita" e "execução"). Certifique-se de que o utilizador "raiz" é o "proprietário" do ficheiro de script e que apenas o "proprietário" tem permissões de "leitura", "escrita" e "execução".
InsufficientPermissionforPost-Script Para executar scripts, o utilizador raiz deve ser o proprietário do ficheiro e o ficheiro deve ter permissões "700" (ou seja, apenas "proprietário" deve ter permissões de "leitura", "escrita" e "execução"). Certifique-se de que o utilizador "raiz" é o "proprietário" do ficheiro de script e que apenas o "proprietário" tem permissões de "leitura", "escrita" e "execução".
Pré-ScriptTimeout A execução do pré-script de cópia de segurança consistente com a aplicação excedeu o limite de tempo. Verifique o script e aumente o tempo limite no ficheiro VMSnapshotScriptPluginConfig.json localizado em /etc/azure.
Pós-ScriptTimeout A execução da cópia de segurança consistente com a aplicação após o script excedeu o limite de tempo. Verifique o script e aumente o tempo limite no ficheiro VMSnapshotScriptPluginConfig.json localizado em /etc/azure.

Passos seguintes

Configurar a cópia de segurança da VM para um cofre dos Serviços de Recuperação