Blog Agility

Persistência por Cookie em uma estrutura onde o tráfego passa por dois Big-IPs

Persistência por Cookie em uma estrutura onde o tráfego passa por dois Big-IPs

Em alguns clientes podemos nos deparar com um cenário no qual o tráfego passa por mais de um Big-IP dentro da mesma estrutura. Tendo em vista os possíveis problemas que esse tipo de configuração pode gerar, criei este artigo com o intuito de alertar sobre uma das particularidades desta estrutura citada anteriormente.

O Big-IP nos possibilita criar uma estrutura na qual o mesmo tráfego pode passar por mais de um balanceador. Contudo, pontos de atenção devem ser levados em consideração numa arquitetura como essa. Um desses pontos de atenção, é o tipo de Persistência utilizada nesta conexão. Mais especificamente, a persistência por Cookie de Sessão.

Utilizarei o cenário abaixo para exemplificar esse tipo de ambiente:

2015_07_VitorGasparini_Persistencia_por_Cookie_Trafego_em_2_BigIPs_01
Imagem01: Conexão Cliente – Servidor

Na imagem podemos ver a conexão partindo do Cliente até o Virtual Server configurado no Big-IP 1. De lá a conexão segue pela rede até alcançar o Servidor Aplicação 1 (Pool Member). No cenário que criamos, esse é o tipo de aplicação que necessita acessar outra aplicação para enviar a resposta ao cliente. No caso, essa segunda aplicação também tem suas conexões balanceadas.

Podemos então visualizar uma segunda conexão, partindo do Servidor Aplicação 1 até o Virtual Server configurado no Big-IP 2. De lá, a conexão segue até alcançar o Servidor Aplicação 2.

Pensaremos agora, a respeito da persistência utilizada em ambos Big-IPs (Cookie de Sessão). |Neste caso o Big-IP envia um Cookie criptografado ao browser do cliente. Sempre que tráfego for balanceado para um novo Pool Member, o Cookie é alterado e reenviado ao cliente.

Em um cenário como no descrito acima, se ambos Big-IP tiverem uma profile de persistência por Cookie associada ao Virtual Server responsável pela aplicação, não podemos atribiur o mesmo ‘Cookie Name’ nas duas profiles.

No caso, o Cookie com o mesmo nome nos dois Big-IPs faz com que o navegador do cliente não saiba qual Cookie respeitar para manter a conexão estabelecida. Uma vez que o mesmo acesso/consulta passa por ambos balanceadores.As imagens à seguir, exemplificam o cenário descrito acima:

2015_07_VitorGasparini_Persistencia_por_Cookie_Trafego_em_2_BigIPs_02
Imagem02: Tela de configuração da Profile de Persistência por Cookie

2015_07_VitorGasparini_Persistencia_por_Cookie_Trafego_em_2_BigIPs_03
Imagem03: Cookies na ‘Console JavaScript’ do Google Chrome
Como solução para o problema deve-se alterar o ‘Cookie Name’ de uma das profiles. Outra opção, é utilizar métodos diferentes de persistência em cada um dos Big-IPs. Desta forma, não haverá conflito de informações no browser do cliente.

O problema descrito neste artigo é dificilmente identificado nas primeiras análises e pode causar impacto ao cliente. Portanto, se pudermos nos previnir dele antes mesmo que aconteça, otimizaremos tempo de troubleshooting em um cenário como este.