Partilhar via


Solucionar problemas de afinidade de sessão do Gateway de Aplicativo do Azure

Saiba como diagnosticar e resolver problemas de afinidade de sessão com o Azure Application Gateway.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Descrição geral

O recurso de afinidade de sessão baseado em cookie é útil para manter uma sessão de usuário no mesmo servidor. Ao utilizar cookies geridos por um gateway, o Gateway de Aplicação pode direcionar o tráfego subsequente de uma sessão de utilizador para o mesmo servidor para processamento. Isto é importante nos casos em que o estado da sessão é guardado localmente no servidor para uma sessão de utilizador. A afinidade de sessão também é conhecida como sessões adesivas.

Nota

O Application Gateway v1 emite um cookie chamado ARRAffinity, que é usado para direcionar o tráfego para o mesmo membro do pool de back-end. No Application Gateway v2, esse cookie foi renomeado para ApplicationGatewayAffinity. Para os fins deste documento, ApplicationGatewayAffinity será usado como exemplo, ARRAffinity pode ser substituído em quando aplicável para instâncias do Application Gateway v1.

Possíveis causas do problema

O problema em manter a afinidade de sessão baseada em cookies pode acontecer devido aos seguintes motivos principais:

  • A configuração "Afinidade baseada em cookies" não está ativada
  • Seu aplicativo não pode lidar com afinidade baseada em cookies
  • O aplicativo está usando afinidade baseada em cookies, mas as solicitações ainda saltam entre servidores back-end

Às vezes, os problemas de afinidade de sessão podem ocorrer quando você se esquece de ativar a configuração "Afinidade baseada em cookies". Para determinar se você habilitou a configuração "Afinidade baseada em cookies" na guia Configurações HTTP no portal do Azure, siga as instruções:

  1. Inicie sessão no Portal do Azure.

  2. No painel de navegação esquerdo, clique em Todos os recursos. Clique no nome do gateway de aplicativo na folha Todos os recursos. Se a assinatura selecionada já tiver vários recursos, você poderá inserir o nome do gateway de aplicativo na caixa Filtrar por nome... para acessar facilmente o gateway de aplicativo.

  3. Selecione a guia Configurações HTTP em CONFIGURAÇÕES.

    A captura de tela mostra CONFIGURAÇÕES com as configurações H T T P selecionadas.

  4. Selecione a configuração HTTP e, na página Adicionar configuração HTTP, verifique se a afinidade baseada em cookies está ativada.

    A captura de tela mostra as configurações de gateway para um gateway de aplicativo, incluindo se a afinidade baseada em cookie está selecionada.

Você também pode verificar o valor de "CookieBasedAffinity" está definido como Enabledem "backendHttpSettingsCollection" usando um dos seguintes métodos:

"cookieBasedAffinity": "Enabled", 

Motivo

O gateway de aplicativo só pode executar afinidade baseada em sessão usando um cookie.

Solução

Se o aplicativo não puder lidar com afinidade baseada em cookie, você deverá usar um balanceador de carga azure externo ou interno ou outra solução de terceiros.

Sintoma

Você habilitou a configuração de afinidade baseada em cookie, quando você acessa o Application Gateway usando uma URL de nome curto no Internet Explorer, por exemplo: http://website , a solicitação ainda está saltando entre servidores back-end.

Para identificar esse problema, siga as instruções:

  1. Pegue um rastreamento do depurador da Web no "Cliente" que está se conectando ao aplicativo por trás do Application Gateway(Estamos usando o Fiddler neste exemplo). Dica Se você não sabe como usar o Fiddler, marque a opção "Quero coletar tráfego de rede e analisá-lo usando o depurador da web" na parte inferior.

  2. Verifique e analise os logs de sessão, para determinar se os cookies fornecidos pelo cliente têm os detalhes de ApplicationGatewayAffinity. Se você não encontrar os detalhes de ApplicationGatewayAffinity, como "ApplicationGatewayAffinity= ApplicationGatewayAffinityValue" dentro do conjunto de cookies, isso significa que o cliente não está respondendo com o cookie ApplicationGatewayAffinity, que é fornecido pelo Application Gateway. Por exemplo:

    A captura de tela mostra um log de sessão com uma única entrada realçada.

    A captura de tela mostra cabeçalhos de solicitação para H T T P, incluindo informações de cookies.

A aplicação continua a tentar definir o cookie em cada pedido até obter resposta.

Motivo

Esse problema ocorre porque o Internet Explorer e outros navegadores podem não armazenar ou usar o cookie com uma URL de nome curto.

Resolução

Para corrigir este problema, aceda ao Gateway de Aplicação através de um FQDN. Por exemplo, use http://website.com ou http://appgw.website.com .

Logs adicionais para solucionar problemas

Você pode coletar logs adicionais e analisá-los para solucionar os problemas relacionados à afinidade de sessão baseada em cookies

Analisar logs do Application Gateway

Para coletar os logs do Application Gateway, siga as instruções:

Habilite o registro em log usando o portal do Azure.

  1. No portal do Azure, localize seu recurso e selecione Configuração de diagnóstico.

    Para o Application Gateway, três logs estão disponíveis: log de acesso, log de desempenho e log de firewall.

  2. Para começar a coletar dados, selecione Adicionar configuração de diagnóstico.

    A captura de tela mostra um gateway de aplicativo com as configurações de Diagnóstico selecionadas.

  3. A página Configuração de diagnóstico fornece as configurações para os logs de diagnóstico. Neste exemplo, o Log Analytics armazena os logs. Também pode utilizar os hubs de eventos e uma conta de armazenamento para guardar os registos de diagnóstico.

    A captura de tela mostra o painel Configurações de diagnóstico com a opção Configurar do Log Analytics selecionada.

  4. Confirme as configurações e selecione Salvar.

Use o depurador da Web para capturar e analisar os tráfegos HTTP ou HTTPS

Ferramentas de depuração da Web, como o Fiddler, podem ajudá-lo a depurar aplicativos da Web capturando o tráfego de rede entre a Internet e os computadores de teste. Estas ferramentas permitem-lhe inspecionar os dados recebidos e enviados à medida que o navegador os recebe/envia. O Fiddler, neste exemplo, tem a opção de repetição HTTP que pode ajudá-lo a solucionar problemas do lado do cliente com aplicativos Web, especialmente para o tipo de problema de autenticação.

Use o depurador da Web de sua escolha. Neste exemplo, usaremos o Fiddler para capturar e analisar tráfegos http ou https, siga as instruções:

  1. Baixar Fiddler.

    Nota

    Escolha Fiddler4 se o computador de captura tiver o .NET 4 instalado. Caso contrário, escolha Fiddler2.

  2. Clique com o botão direito do mouse no executável de instalação e execute como administrador para instalar.

    A captura de tela mostra o programa de instalação do Fiddler com um menu contextual com Executar como administrador selecionado.

  3. Quando você abre o Fiddler, ele deve começar automaticamente a capturar tráfego (observe a Captura no canto inferior esquerdo). Pressione F12 para iniciar ou parar a captura de tráfego.

    A captura de tela mostra o Fiddler Web Debugger com o indicador Captura realçado.

  4. Muito provavelmente, você estará interessado em tráfego HTTPS descriptografado, e você pode ativar a descriptografia HTTPS selecionando Ferramentas>Fiddler Options, e marque a caixa "Descriptografar tráfego HTTPS".

    A captura de tela mostra Opções no Fiddler com H T T P selecionado e Descriptografar tráfego HTTPS selecionado.

  5. Você pode remover sessões anteriores não relacionadas antes de reproduzir o problema clicando em X (ícone) >Remover tudo como a seguinte captura de tela:

    A captura de tela mostra o ícone X selecionado, que exibe a opção Remover tudo.

  6. Depois de reproduzir o problema, salve o arquivo para revisão selecionando Arquivo>Salvar>todas as sessões...

    A captura de tela mostra a opção Arquivo Salvar Todas as Sessões selecionada.

  7. Verifique e analise os logs de sessão para determinar qual é o problema.

    Por exemplo:

  • Exemplo A: Você encontra um log de sessão que a solicitação é enviada do cliente e ele vai para o endereço IP público do Application Gateway, clique neste log para exibir os detalhes. No lado direito, os dados na caixa inferior são o que o Application Gateway está retornando ao cliente. Selecione a guia "RAW" e determine se o cliente está recebendo um "Set-Cookie: ApplicationGatewayAffinity= ApplicationGatewayAffinityValue". Se não houver cookie, a afinidade de sessão não será definida ou o Application Gateway não aplicará o cookie de volta ao cliente.

    Nota

    Esse valor ApplicationGatewayAffinity é o cookie-id, que o Application Gateway define para que o cliente seja enviado a um determinado servidor back-end.

    A captura de tela mostra um exemplo de detalhes de uma entrada de log com o valor Set-Cookie realçado.

  • Exemplo B: O próximo log de sessão seguido pelo anterior é o cliente respondendo de volta ao Application Gateway, que definiu o ApplicationGatewayAffinity. Se o cookie-id ApplicationGatewayAffinity corresponder, o pacote deverá ser enviado para o mesmo servidor back-end usado anteriormente. Verifique as próximas linhas de comunicação http para ver se o cookie ApplicationGatewayAffinity do cliente está mudando.

    A captura de ecrã mostra um exemplo de detalhes de uma entrada de registo com um cookie realçado.

Nota

Para a mesma sessão de comunicação, o cookie não deve ser alterado. Marque a caixa superior no lado direito, selecione a guia "Cookies" para ver se o cliente está usando o cookie e enviando-o de volta para o Application Gateway. Caso contrário, o navegador do cliente não está mantendo e usando o cookie para conversas. Às vezes, o cliente pode mentir.

Próximos passos

Se as etapas anteriores não resolverem o problema, abra um tíquete de suporte.