¿Cómo puedo saber a qué servidor se me ha equilibrado la carga?

8

Quiero probar algunos cambios de configuración para la sincronización unidireccional entre dos servidores que se encuentran detrás de un equilibrador de carga (esto es todo infraestructura de Rackspace Cloud para su información). El problema que tengo es que no puedo decir a qué servidor se me ha equilibrado la carga porque la IP que recibo es siempre la IP del equilibrador de carga.

¿Hay una manera simple (o incluso no muy simple) de saber a qué servidor realmente me han dirigido? Idealmente me gustaría algo en el navegador porque significa que los miembros del equipo no técnicos también pueden informar problemas con relativa facilidad, pero cualquier idea sobre los mejores enfoques para esto sería apreciada.

Información adicional: Ambos servidores ejecutan Apache y el equilibrador de carga tiene una persistencia de sesión configurada.

Willl
fuente

Respuestas:

8

Si desea ser discreto, solo haga que el servidor web se identifique en un Server:encabezado de respuesta ( RFC 2616 Sec 14.38 ). Por ejemplo, en Apache, la información devuelta en ese encabezado está controlada por la ServerTokensdirectiva. Entonces, solo es cuestión de inspeccionar los encabezados de respuesta en Firebug , Chrome DevTools o la línea de tiempo de Safari Web Inspector .

Si quiere ser obvio, puede hacer que su aplicación web incruste el nombre del servidor en las páginas que genera como texto visible. También puede informar el nombre del servidor en un comentario HTML, lo que requeriría Ver código fuente para ver.

200_success
fuente
Gracias @ 200_success. Todo eso suena bastante sencillo. Actualicé mi pregunta para decir que los servidores están ejecutando Apache, por lo que su enlace también es útil y relevante.
Willl
2

No está indicando qué protocolo está utilizando, por lo que supongo que estamos hablando de https.

Es probable que cada backend conozca algo de información sobre sí mismo, lo que identificaría de manera única ese backend. Puede ser un nombre de host o una dirección IP de unidifusión. El backend puede incluir esa información en ubicaciones apropiadas. Puede incluirlo en un pie de página en cada página. O si cree que es demasiado visible, solo inclúyalo en páginas que los usuarios no visitarían en circunstancias normales. Cualquier página de error (404, 500, etc.) siempre debe incluir la identificación del backend.

Si su equilibrador de carga solo equilibra la carga y no hace nada más, entonces estaría terminando https en el backend, y cada vez que se cierra una conexión TCP y el cliente se vuelve a conectar, existe la posibilidad de que el cliente se dirija a un backend diferente.

El equilibrador de carga podría recordar el backend utilizado más recientemente para todas las direcciones IP de clientes vistas en la última hora para reutilizar el mismo backend la mayor parte del tiempo. Cualquier información más detallada, como cookies e identificación de usuario, estaría fuera del alcance del equilibrador de carga, por lo que no podría usarla para mantener a un usuario en el mismo backend.

Esto significa que cualquier identificación de qué backend está usando un usuario debe tomarse con un grano de sal, ya que el usuario podría haberse movido entre backends entre el momento en que experimentó un problema y el momento en que descubrió qué backend estaba usando. Pero sigue siendo información valiosa, ya que en la mayoría de los casos ayudará a localizar registros relevantes más rápido.

kasperd
fuente
Gracias Kasperd, eso es útil. He actualizado la pregunta para tener en cuenta que la persistencia de la sesión está configurada en el equilibrador de carga.
Willl