Comment savoir sur quel serveur j'ai été équilibré en charge?

8

Je veux tester certaines modifications de configuration de la synchronisation unidirectionnelle entre deux serveurs qui se trouvent derrière un équilibreur de charge (il s'agit de toute l'infrastructure Rackspace Cloud FYI). Le problème que j'ai est que je ne peux pas dire sur quel serveur j'ai été équilibré en charge car l'IP qui m'a été donnée est toujours l'IP de l'équilibreur de charge.

Existe-t-il un moyen simple (ou même pas très simple) de dire vers quel serveur je suis réellement dirigé? Idéalement, j'aimerais quelque chose dans le navigateur, car cela signifie que les membres non techniques de l'équipe peuvent également signaler des problèmes relativement facilement, mais toute idée sur les meilleures approches à ce sujet serait appréciée.

Informations supplémentaires: les deux serveurs exécutent Apache et l'équilibreur de charge a la persistance de session configurée.

Willl
la source

Réponses:

8

Si vous voulez être discret, demandez simplement au serveur Web de s'identifier dans un en- Server:tête de réponse ( RFC 2616 Sec 14.38 ). Par exemple, dans Apache, les informations renvoyées dans cet en-tête sont contrôlées par la ServerTokensdirective. Ensuite, il suffit d'inspecter les en-têtes de réponse dans la chronologie Firebug , Chrome DevTools ou Safari Web Inspector .

Si vous voulez être évident, vous pouvez demander à votre application Web d'intégrer le nom du serveur dans les pages qu'elle génère sous forme de texte visible. Vous pouvez également signaler le nom du serveur dans un commentaire HTML, ce qui nécessiterait de voir la source.

200_success
la source
Merci @ 200_success. Tout cela semble assez simple. Mise à jour de ma question pour dire que les serveurs exécutent Apache, donc votre lien est également utile et pertinent.
Willl
2

Vous n'indiquez pas le protocole que vous utilisez, donc je suppose que nous parlons de https.

Chaque backend connaît probablement des informations sur lui-même, qui identifieraient de manière unique ce backend. Il peut s'agir d'un nom d'hôte ou d'une adresse IP unicast. Le backend peut inclure ces informations dans des emplacements appropriés. Vous pouvez l'inclure dans un pied de page sur chaque page. Ou si vous pensez que c'est trop visible, ne l'incluez que sur les pages que les utilisateurs ne visiteraient pas dans des circonstances normales. Toute page d'erreur (404, 500, etc.) doit toujours inclure l'identification du backend.

Si votre équilibreur de charge ne fait qu'équilibrer la charge et ne fait rien d'autre, alors vous mettriez fin à https sur le backend, et chaque fois qu'une connexion TCP est fermée et que le client se reconnecte, il est possible que le client soit dirigé vers un autre backend.

L'équilibreur de charge peut mémoriser le backend le plus récemment utilisé pour toutes les adresses IP client vues au cours de la dernière heure afin de réutiliser le même backend la plupart du temps. Des informations plus détaillées telles que les cookies et l'ID utilisateur seraient hors de portée pour l'équilibreur de charge, il ne pouvait donc pas l'utiliser pour garder un utilisateur sur le même backend.

Cela signifie que toute identification du backend qu'un utilisateur utilise doit être prise avec un grain de sel, car l'utilisateur aurait pu se déplacer entre les backends entre le moment où il a rencontré un problème et le moment où il a découvert le backend qu'il utilisait. Mais ce sont toujours des informations précieuses, car dans la plupart des cas, elles aideront à localiser plus rapidement les journaux pertinents.

kasperd
la source
Merci Kasperd, c'est utile. J'ai mis à jour la question pour noter que la persistance de session est configurée sur l'équilibreur de charge.
Willl