Exercício – Alta disponibilidade de uso geral

Concluído

Na unidade anterior, você aprendeu sobre a arquitetura de alta disponibilidade do SQL do Azure. Neste exercício, você aprenderá como a camada de Uso Geral do Banco de Dados SQL do Azure se comporta de maneira semelhante a uma instância de cluster de failover local. A configuração local dessa funcionalidade pode ser demorada ou complicada, mas você a obtém com o SQL do Azure.

Neste exercício, você usará a ferramenta ostress, que talvez tenha usado no módulo anterior para criar uma carga de trabalho. Em seguida, você iniciará um failover usando o módulo Azure PowerShell no Azure Cloud Shell. Por fim, verá o efeito que o failover tem sobre a carga de trabalho ostress.

Alta disponibilidade básica na camada de serviço de Uso Geral do SQL do Azure

Neste exercício, você vai concluir as seguintes etapas:

  1. Executar a carga de trabalho do ostress.
  2. Confirme se o ambiente está configurado corretamente.
  3. Use o PowerShell para iniciar um failover do Banco de Dados SQL do Azure.
  4. Veja os resultados no ostress.
  5. Procurar sinais no portal de que um failover ocorreu.

Executar a carga de trabalho do ostress

A primeira etapa é criar uma carga de trabalho de execução longa. Essa carga de trabalho permite que você veja como um failover afeta a capacidade de ler e gravar dados e quanto tempo um failover leva na camada de serviço Uso Geral para o Banco de Dados SQL do Azure. Você usará o ostress.

  1. Abra uma nova janela do Prompt de Comando no computador local. Use cd para acessar o diretório no repositório clonado ou baixado anteriormente que contém o módulo de disponibilidade. Por exemplo, você pode usar este comando:

    cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
    

    O arquivo executável ostress está nessa pasta (ele é pequeno). A carga de trabalho ostress executa e se conecta a uma consulta simples 50 mil vezes.

  2. Use o script ostress a seguir para executar a carga de trabalho. Substitua serverName pelo nome do servidor lógico do Banco de Dados SQL do Azure. Substitua password pela sua senha.

    .\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r50000
    

    Se a carga de trabalho estiver sendo executada corretamente, você verá o resultado da consulta 847 aparecendo repetidamente na janela Prompt de Comando.

    Se você quiser interromper a execução da carga de trabalho ostress antes que ela seja concluída, selecione Ctrl+C no terminal.

    Se você quiser executar a carga de trabalho novamente, poderá executar o comando outra vez.

Usar o PowerShell no Azure Cloud Shell para iniciar um failover e observar os resultados

  1. No terminal do Azure Cloud Shell no lado direito desta página, execute este script do PowerShell para configurar seu ambiente:

    $resourceGroup = "<rgn>Sandbox resource group name</rgn>"
    $database = "AdventureWorks"
    $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup
    $server = $server.ServerName
    
    # Specify your default resource group and Azure SQL Database logical server
    az configure --defaults group=$resourceGroup sql-server=$server
    
    # Confirm the defaults are set
    az configure --list-defaults
    
  2. Configure suas janelas para que você possa ver esse navegador e a janela Prompt de Comando ao mesmo tempo.

  3. Execute este código no terminal do Azure Cloud Shell:

    # Create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  4. Observe os resultados no ostress da janela Prompt de Comando. Enquanto esse comando estiver em execução, você deverá observar as alterações que aparecem na janela Prompt de Comando. Você observará que não é possível acessar o banco de dados enquanto o failover ocorre. O failover será concluído após cerca de 30 segundos, e você verá que a carga de trabalho é executada com êxito novamente. A lógica de repetição em seu aplicativo é importante porque, se o failover do Azure falhar (por vários motivos), você não vai querer que o aplicativo falhe ou tenha um tempo de inatividade maior que necessário para que o failover.

  5. Essa capacidade de criar um failover por comando pode ser útil em determinados cenários. Observe que o serviço o impede de fazer isso com muita frequência. Execute o seguinte comando para tentar outro failover:

    # Create a failover again
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    

    Você verá um erro semelhante a este:

    Invoke-AzSqlDatabaseFailover: Long running operation failed with status 'Failed'. Additional Info:'There was a recent failover on the database or pool if database belongs in an elastic pool.  At least 15 minutes must pass between database failovers.'
    
  6. Agora você pode interromper a carga de trabalho na janela Prompt de Comando selecionando a janela e, em seguida, selecionando Ctrl+C. Você pode deixar a janela aberta porque usará a mesma carga de trabalho no próximo exercício.

    Talvez você se pergunte se há uma forma de verificar se ocorreu um failover. No momento, não há mensagem de "Failover ocorrido" clara, mas o Resource Health pode ser um bom indicador.

  7. No portal do Azure, acesse o banco de dados SQL do Azure. No painel esquerdo, em Ajuda, selecione Resource Health. De 5 a 15 minutos após um failover, você poderá ver um evento de integridade semelhante ao mostrado na captura de tela a seguir. Esse evento pode indicar várias coisas, mas uma possibilidade é que algo aconteceu e o failover do Azure falhou.

    Screenshot that shows a health event in the Azure portal.