Como posso saber em qual servidor estou com balanceamento de carga?

8

Desejo testar algumas alterações de configuração na sincronização unidirecional entre dois servidores que estão atrás de um balanceador de carga (isso é tudo a infraestrutura da Rackspace Cloud FYI). O problema que tenho é que não sei dizer em qual servidor estou com balanceamento de carga, porque o IP que recebo é sempre o IP do balanceador de carga.

Existe uma maneira simples (ou mesmo não muito simples) de saber para qual servidor eu realmente fui direcionado. Idealmente, eu gostaria de algo no navegador, porque significa que os membros da equipe não técnica também podem relatar problemas com relativa facilidade, mas qualquer idéia sobre as melhores abordagens para isso seria apreciada.

Informações adicionais: Ambos os servidores executam o Apache e o balanceador de carga possui a persistência de sessão configurada.

Willl
fonte

Respostas:

8

Se você quiser ser discreto, faça com que o servidor da web se identifique em um Server:cabeçalho de resposta ( RFC 2616 Sec 14.38 ). Por exemplo, no Apache, as informações retornadas nesse cabeçalho são controladas pela ServerTokensdiretiva. Depois, basta examinar os cabeçalhos de resposta na linha do tempo do Firebug , Chrome DevTools ou Safari Web Inspector .

Se você quiser ser óbvio, é possível que seu aplicativo Web incorpore o nome do servidor nas páginas que ele gera como texto visível. Você também pode relatar o nome do servidor em um comentário HTML, o que exigiria a exibição da fonte de exibição.

200_success
fonte
Obrigado @ 200_success. Isso tudo parece bem direto. Atualizei minha pergunta para dizer que os servidores estão executando o Apache para que seu link também seja útil e relevante.
Willl 02/02
2

Você não está informando qual protocolo está usando, portanto, estou assumindo que estamos falando https.

Cada back-end provavelmente conhece algumas informações sobre si, que identificariam exclusivamente esse back-end. Pode ser um nome de host ou um endereço IP unicast. O back-end pode incluir essas informações em locais apropriados. Você pode incluí-lo em um rodapé em cada página. Ou, se você acha que é muito visível, inclua-o apenas em páginas que os usuários não visitariam em circunstâncias normais. Qualquer página de erro (404, 500 etc.) deve sempre incluir identificação de back-end.

Se o seu balanceador de carga estiver apenas com balanceamento de carga e não estiver fazendo mais nada, você encerrará https no back-end e sempre que uma conexão TCP for fechada e o cliente se reconectar, é possível que o cliente seja direcionado para um back-end diferente.

O balanceador de carga pode lembrar o back-end usado mais recentemente para todos os endereços IP do cliente vistos na última hora, para reutilizar o mesmo back-end na maioria das vezes. Qualquer informação mais detalhada, como cookies e ID do usuário, estaria fora do alcance do balanceador de carga; portanto, não era possível usá-la para manter o usuário no mesmo back-end.

Isso significa que qualquer identificação de qual back-end um usuário está usando deve ser feita com um pouco de sal, pois o usuário pode ter se deslocado entre os back-ends entre o momento em que ocorreu um problema e o tempo em que descobriu qual back-end estava usando. Mas ainda é uma informação valiosa, pois na maioria dos casos, ajudará a localizar logs relevantes mais rapidamente.

Kasperd
fonte
Obrigado Kasperd, isso é útil. Atualizei a pergunta para observar que a persistência da sessão está configurada no balanceador de carga.
Willl 02/02