Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Resumo
Saiba como diagnosticar e resolver problemas de afinidade de sessão com o Gateway de Aplicativo do Azure. Mantendo os usuários no mesmo servidor de back-end, você pode melhorar o desempenho do aplicativo.
Observação
Use o módulo Az PowerShell do Azure para interagir com o Azure. Para começar, consulte Instalar Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, consulte Migrate Azure PowerShell do AzureRM para o Az.
Visão geral
O recurso de afinidade de sessão baseada em cookies é útil para manter uma sessão de usuário no mesmo servidor. Usando cookies gerenciados por gateway, o Application Gateway direciona o tráfego subsequente de uma sessão de usuário para o processamento no mesmo servidor. Esse recurso é importante nos casos em que o estado da sessão é salvo localmente no servidor para uma sessão de usuário. A afinidade de sessão também é conhecida como sessões temporárias.
Observação
O Gateway de Aplicativo v1 usa um cookie chamado ARRAffinity para direcionar o tráfego para o mesmo membro do pool de back-end. No Gateway de Aplicativo v2, esse cookie é renomeado para ApplicationGatewayAffinity. Para os fins deste documento, ApplicationGatewayAffinity é usado como exemplo. O ARRAffinity pode ser substituído nas instâncias aplicáveis do Gateway de Aplicações v1.
Possíveis causas para o problema
Os problemas de manutenção da afinidade de sessão baseada em cookie podem ocorrer pelos seguintes motivos:
- Você não habilitou a configuração afinidade baseada em cookie .
- Seu aplicativo não pode lidar com afinidade baseada em cookie.
- Seu aplicativo usa afinidade baseada em cookie, mas as solicitações ainda pulam entre servidores de back-end.
Verifique se a configuração "Afinidade baseada em cookie" está habilitada
Problemas de afinidade de sessão podem ocorrer se você esquecer de habilitar a configuração "Afinidade baseada em cookie". Para verificar se você habilitou a configuração "Afinidade baseada em cookie" na guia Configurações de Back-end no portal do Azure, siga estas etapas:
Entre no portal Azure.
No painel de navegação esquerdo , selecione Todos os recursos. Selecione o nome do gateway de aplicativo na folha Todos os recursos . Se a assinatura selecionada já tiver vários recursos, insira o nome do gateway de aplicativo na caixa Filtrar por nome... para acessar facilmente o gateway de aplicativo.
Selecione a guia Configurações de back-end em CONFIGURAÇÕES.
Selecione a configuração de back-end. Na configuração Adicionar Back-end, verifique se a afinidade baseada em Cookie está habilitada.
Para verificar se o valor de "CookieBasedAffinity" está definido como Habilitado em "backendHttpSettingsCollection", use um dos seguintes métodos:
- Execute Get-AzApplicationGatewayBackendHttpSetting no PowerShell.
- Examine o arquivo JSON usando o modelo do Azure Resource Manager.
"cookieBasedAffinity": "Enabled",
O aplicativo não pode lidar com afinidade baseada em cookie
Motivo
O gateway de aplicativo só pode executar a afinidade baseada em sessão usando um cookie.
Solução alternativa
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.
O aplicativo usa afinidade baseada em cookies, mas as solicitações ainda são redirecionadas entre servidores de back-end.
Sintoma
Você habilita a configuração de afinidade baseada em cookie. Quando você acessa o Application Gateway usando uma URL de nome curto no Internet Explorer, como http://website, a solicitação ainda retorna entre servidores back-end.
Para identificar esse problema, siga estas instruções:
Faça um rastreamento do depurador web no Client que se conecta ao aplicativo atrás do Application Gateway. Este exemplo usa Fiddler. Dica Se você não souber como usar o Fiddler, selecione a opção Quero coletar o tráfego de rede e analisá-lo usando o depurador da Web na parte inferior.
Verifique e analise os logs de sessão para determinar se os cookies que o cliente fornece incluem os detalhes do ApplicationGatewayAffinity. Se você não encontrar os detalhes do ApplicationGatewayAffinity, como
ApplicationGatewayAffinity=ApplicationGatewayAffinityValuedentro do conjunto de cookies, o cliente não está respondendo com o cookie ApplicationGatewayAffinity que o Gateway de Aplicações fornece. Por exemplo:
O aplicativo continua tentando definir o cookie em cada solicitação até obter uma resposta.
Motivo
Esse problema ocorre porque o Internet Explorer e outros navegadores não armazenam ou usam o cookie com uma URL de nome curto.
Resolução
Para corrigir esse problema, acesse o Gateway de Aplicativo usando um FQDN (nome de domínio totalmente qualificado). Por exemplo, use http://website.com ou http://appgw.website.com.
Logs adicionais para solucionar problemas
Você pode coletar e analisar logs adicionais para solucionar problemas relacionados à afinidade de sessão baseada em cookie.
- Analisar logs do Gateway de Aplicações
- Usar um depurador da Web para capturar e analisar o tráfego HTTP ou HTTPS
Analisar logs do Gateway de Aplicativo do Azure
Para coletar logs do Gateway de Aplicações, siga estas instruções:
Habilite o registro de log usando o portal Azure.
No portal Azure, encontre seu recurso e então selecione Configuração de Diagnósticos.
No Gateway de Aplicativo, três logs estão disponíveis: log de Acesso, log de Desempenho e log de Firewall.
Selecione Adicionar configuração de diagnóstico para começar a coletar dados.
A página Configurações de diagnóstico fornece as configurações dos logs de diagnóstico. Neste exemplo, Log Analytics armazena os logs. Você também pode usar os Hubs de Eventos do Azure e uma conta de armazenamento para salvar os logs de diagnóstico.
Confirme as configurações e selecione em Salvar.
Usar um depurador da Web para capturar e analisar o tráfego HTTP ou HTTPS
Ferramentas de depuração da Web, como o Fiddler, podem ajudá-lo a depurar aplicativos Web capturando o tráfego de rede entre a Internet e os computadores de teste. Essas ferramentas permitem que você inspecione os dados de entrada e saída à medida que o navegador recebe ou envia. Neste exemplo, o Fiddler tem a opção de reprodução HTTP que pode ajudá-lo a solucionar problemas do lado do cliente com aplicativos Web, especialmente problemas de autenticação.
Use o depurador da Web de sua escolha. Neste exemplo, use o Fiddler para capturar e analisar o tráfego HTTP ou HTTPS. Siga as instruções:
Baixe o Fiddler.
Observação
Escolha Fiddler4 se o computador de captura tiver .NET 4 instalado. Caso contrário, escolha Fiddler2.
Clique com o botão direito do mouse no executável de instalação e execute como administrador para instalar.
Quando você abre o Fiddler, ele inicia automaticamente a captura de tráfego (observe a Captura no canto inferior esquerdo). Pressione F12 para iniciar ou parar a captura de tráfego.
Provavelmente, você está interessado em descriptografar o tráfego HTTPS. Habilite a descriptografia HTTPS selecionando Ferramentas>Opções do Fiddler e marcando a caixa Descriptografar o tráfego HTTPS.
Para remover sessões não relacionadas anteriores antes de reproduzir o problema, selecione X>Remover Tudo.
Ao reproduzir o problema, salve o arquivo para revisão selecionando Salvar>>Todas as Sessões.
Verifique e analise os logs de sessão para determinar qual é o problema.
Por exemplo:
Exemplo A: Você encontra um log de sessão mostrando que a solicitação é enviada do cliente e direcionada para o endereço IP público do Application Gateway. Selecione este log para exibir os detalhes. No lado direito, os dados na caixa inferior são o que o Gateway de Aplicações retorna 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 Gateway de Aplicativo não aplicará o cookie de volta ao cliente.
Observação
O valor de ApplicationGatewayAffinity é a cookie-id que o Gateway de Aplicativo define para que o cliente seja enviado a um servidor back-end específico.
Exemplo B: O próximo log de sessão, que segue o anterior, é o cliente respondendo ao Gateway de Aplicações, que define o ApplicationGatewayAffinity. Se a ID de cookie ApplicationGatewayAffinity corresponder, o pacote irá para o mesmo servidor de back-end usado anteriormente. Verifique as próximas várias linhas de comunicação HTTP para ver se o cookie ApplicationGatewayAffinity do cliente está mudando.
Observação
Para a mesma sessão de comunicação, o cookie não deve ser alterado. Marque a caixa de seleção superior no lado direito, selecione a guia Cookies para verificar se o cliente está usando o cookie e enviando-o de volta para o Gateway de Aplicações. Se isso não estiver ocorrendo, o navegador do cliente não estará usando o cookie para conversas. Às vezes, o cliente pode mentir.