Como posso saber para qual servidor eu tenho balanceamento de carga?

8

Eu quero testar algumas alterações de configuração para sincronização unidirecional entre dois servidores que ficam atrás de um balanceador de carga (isso é tudo infra-estrutura FYI da Rackspace Cloud). O problema que tenho é que eu não posso dizer qual servidor eu tenho carga balanceada porque o IP que eu estou dado é sempre o IP do balanceador de carga.

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

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

    
por Willl 02.02.2015 / 10:34

2 respostas

8

Se você deseja ser discreto, basta que o servidor da Web se identifique em um cabeçalho de resposta Server: ( RFC 2616 Sec 14.38 ). Por exemplo, no Apache, as informações retornadas nesse cabeçalho são controladas pelo ServerTokens diretiva. Então, é só uma questão de inspecionar os cabeçalhos de resposta no Firebug , Chrome DevTools ou cronograma do Safari Web Inspector .

Se você quiser ser ostensivamente óbvio, pode fazer com que seu aplicativo da 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 que o View Source visse.

    
por 02.02.2015 / 10:50
2

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

Cada back-end provavelmente conhece algumas informações sobre si mesmo, o que identificaria 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ê poderia incluí-lo em um rodapé em cada página. Ou, se você achar que isso é visível demais, 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 a identificação de back-end.

Se o seu balanceador de carga for apenas balanceamento de carga e não fizer mais nada, você estará encerrando https no backend e sempre que uma conexão TCP for fechada e o cliente for reconectado, existe a possibilidade de o cliente ser direcionado para um backend diferente.

O balanceador de carga pôde 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 a maior parte do tempo. Quaisquer informações mais detalhadas, como cookies e ID de usuário, estariam fora do alcance do balanceador de carga. Por isso, não é possível usá-lo para manter um usuário no mesmo back-end.

Isso significa que qualquer identificação de qual back-end um usuário está usando deve ser tomada com muita cautela, já que o usuário poderia ter se movido entre os back-ends entre o momento em que ocorreu um problema e o momento em que descobriu qual backend estava usando. Mas ainda é uma informação valiosa, já que na maioria dos casos ajudará a localizar registros relevantes mais rapidamente.

    
por 02.02.2015 / 10:50