Tutorial: Simular uma falha na leitura de dados da região primária
Este tutorial é a segunda parte de uma série. Nele, ficará a saber mais sobre as vantagens do armazenamento georredundante com acesso de leitura (RA-GZRS) ao simular uma falha.
Para simular uma falha, pode utilizar o encaminhamento estático ou o Fiddler. Ambos os métodos permitir-lhe-ão simular a falha de pedidos para o ponto final primário da sua conta de armazenamento RA-GZRS, levando a aplicação a ler a partir do ponto final secundário.
Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
Na segunda parte da série, saiba como:
- Executar e colocar em pausa a aplicação
- Simular uma falha com uma rota estática inválida ou o Fiddler
- Simular o restauro do ponto final primário
Pré-requisitos
Antes de começar este tutorial, conclua o tutorial anterior: Tornar os dados da sua aplicação altamente disponíveis com o armazenamento do Azure.
Para simular uma falha com o encaminhamento estático, irá utilizar uma linha de comandos elevada.
Para simular uma falha com o Fiddler, transfira e instale o Fiddler
Simular uma falha com uma rota estática inválida
Pode criar uma rota estática inválida para todos os pedidos para o ponto final primário da sua conta de armazenamento RA-GZRS. Neste tutorial, o anfitrião local é utilizado como o gateway de encaminhamento de pedidos para a conta de armazenamento. A utilização do anfitrião local como gateway faz com que todos os pedidos para o ponto final primário da conta de armazenamento voltem a ser executados dentro do anfitrião, o que resulta num pedido falhado. Siga os passos seguintes para simular uma falha e o restauro do ponto final primário com uma rota estática inválida.
Iniciar e colocar em pausa a aplicação
Utilize as instruções no tutorial anterior para iniciar o exemplo e transferir o ficheiro de teste, confirmando que provém do armazenamento primário. Consoante a plataforma de destino, pode colocar manualmente o exemplo em pausa ou aguardar numa linha de comandos.
Simular falha
Enquanto a aplicação estiver em pausa, abra uma linha de comandos no Windows como administrador ou execute o terminal como raiz no Linux.
Obtenha informações sobre o domínio de ponto final primário da conta de armazenamento ao introduzir o seguinte comando numa linha de comandos ou terminal, substituindo STORAGEACCOUNTNAME
pelo nome da sua conta de armazenamento.
nslookup STORAGEACCOUNTNAME.blob.core.windows.net
Copie o endereço IP da sua conta de armazenamento para um editor de texto, para utilização posterior.
Para obter o endereço IP do anfitrião local, escreva ipconfig
na linha de comandos do Windows, ou ifconfig
no terminal do Linux.
Para adicionar uma rota estática para um anfitrião de destino, escreva o seguinte comando numa linha de comandos do Windows ou terminal do Linux, substituindo <destination_ip>
pelo endereço IP da conta de armazenamento e <gateway_ip>
pelo endereço IP do anfitrião local.
Linux
sudo route add <destination_ip> gw <gateway_ip>
Windows
route add <destination_ip> <gateway_ip>
Na janela com o exemplo em execução, retome a aplicação ou prima a tecla adequada para transferir o ficheiro de exemplo e confirmar que provém do armazenamento secundário. Em seguida, pode colocar o exemplo novamente em pausa ou aguardar na linha de comandos.
Simular o restauro do ponto final primário
Para simular o ponto final primário a ficar funcional novamente, elimine a rota estática inválida da tabela de encaminhamento. Isto permite que todos os pedidos para o ponto final primário sejam encaminhados através de um gateway predefinido. Escreva o seguinte comando numa linha de comandos do Windows ou num terminal do Linux.
Linux
sudo route del <destination_ip> gw <gateway_ip>
Windows
route delete <destination_ip>
Em seguida, pode retomar a aplicação ou premir a tecla adequada para transferir novamente o ficheiro de exemplo, desta vez confirmando que é novamente proveniente do armazenamento primário.
Simular uma falha com o Fiddler
Para simular a falha com o Fiddler, injete uma resposta falhada para pedidos para o ponto final primário da sua conta de armazenamento RA-GZRS.
As secções seguintes mostram como simular uma falha e o restauro do ponto final primário com o fiddler.
Iniciar o fiddler
Abra o Fiddler, selecione Regras e Personalizar Regras.
O Fiddler ScriptEditor inicia e apresenta o ficheiro SampleRules.js . Este ficheiro é utilizado para personalizar o Fiddler.
Cole o seguinte exemplo de código na OnBeforeResponse
função, substituindo STORAGEACCOUNTNAME
pelo nome da sua conta de armazenamento. Consoante o exemplo, também poderá ter de substituir HelloWorld
pelo nome do ficheiro de teste que está a ser transferido ou remover essa parte da condição se não se aplicar. O novo código é comentado para garantir que não é executado imediatamente.
Depois de concluído, selecione Ficheiro e Guardar para guardar as alterações. Deixe a janela ScriptEditor aberta para utilização nos passos seguintes.
/*
// Simulate data center failure
// After it is successfully downloading the blob, pause the code in the sample,
// uncomment these lines of script, and save the script.
// It will intercept the (probably successful) responses and send back a 503 error.
// When you're ready to stop sending back errors, comment these lines of script out again
// and save the changes.
if ((oSession.hostname == "STORAGEACCOUNTNAME.blob.core.windows.net")
// depending on the sample, you may need to modify or remove the line below
&& (oSession.PathAndQuery.Contains("HelloWorld"))) {
oSession.responseCode = 503;
}
*/
Iniciar e colocar em pausa a aplicação
Utilize as instruções no tutorial anterior para iniciar o exemplo e transferir o ficheiro de teste, confirmando que provém do armazenamento primário. Consoante a plataforma de destino, pode colocar manualmente o exemplo em pausa ou aguardar numa linha de comandos.
Simular falha
Enquanto a aplicação estiver em pausa, regresse ao Fiddler e anule o comentário da regra personalizada que guardou na OnBeforeResponse
função. Certifique-se de que seleciona Ficheiro e Guardar para guardar as alterações para que a regra entre em vigor. Este código procura pedidos para a conta de armazenamento RA-GZRS e, se o caminho contiver o nome do ficheiro de exemplo, devolve um código de resposta de 503 - Service Unavailable
.
Na janela com o exemplo em execução, retome a aplicação ou prima a tecla adequada para transferir o ficheiro de exemplo e confirmar que provém do armazenamento secundário. Em seguida, pode colocar o exemplo novamente em pausa ou aguardar na linha de comandos.
Simular o restauro do ponto final primário
No Fiddler, remova ou comente novamente a regra personalizada. Selecione Ficheiro e Guardar para garantir que a regra deixará de estar em vigor.
Na janela com o exemplo em execução, retome a aplicação ou prima a tecla adequada para transferir o ficheiro de exemplo e confirme que vem novamente do armazenamento primário. Em seguida, pode sair do exemplo.
Passos seguintes
Na segunda parte da série, aprendeu a simular uma falha ao testar o armazenamento georredundante com acesso de leitura.
Para saber mais sobre como funciona o armazenamento RA-GZRS e os riscos associados, veja Designing HA apps with RA-GZRS (Conceber aplicações HA com RA-GZRS).