Alta disponibilidad de ThingWorx > Equilibradores de la carga para la alta disponibilidad de ThingWorx
Equilibradores de la carga para la alta disponibilidad de ThingWorx
Se requieren uno o dos equilibradores de la carga para una configuración de alta disponibilidad de ThingWorx.
Un equilibrador de la carga para dirigir el tráfico a ThingWorx Connection Servers. Solo es necesario si ThingWorx Connection Servers forma parte de la implementación.
Un equilibrador de la carga para dirigir el tráfico al servidor ThingWorx que es el nodo principal actual. Este equilibrador de la carga es obligatorio en todas las configuraciones de alta disponibilidad de ThingWorx.
Requisitos generales del equilibrador de la carga
El equilibrador de la carga debe funcionar dentro de su propia configuración de alta disponibilidad.
Puede rutear el tráfico de socket Web.
Puede gestionar sesiones estáticas (o que se pueden recordar).
(opcional) Puede gestionar la terminación SSL.
Equilibrador de la carga para ThingWorx Connection Servers
Si se necesita un equilibrador de la carga para servidores de conexión, debe recibir todo el tráfico de ThingWorx y distribuirlo según las siguientes reglas:
El equilibrador de la carga solo debe dirigir el tráfico de socket Web a los servidores de conexión. El tráfico de usuario y otro tráfico de socket no Web deben dirigirse al otro equilibrador de la carga que rutea al nodo principal de ThingWorx.
Para obtener un rendimiento óptimo, el tráfico de socket Web de un activo siempre debe ir al mismo servidor de conexión mediante sesiones que se pueden recordar.
Si el servidor de conexión se queda fuera de línea, el tráfico del activo debe dirigirse a otro servidor de conexión.
Si la sesión entre el activo y el servidor de conexión se queda inactiva, se puede establecer una nueva sesión con cualquier servidor de conexión disponible.
Equilibrador de la carga para servidores ThingWorx
Todo el tráfico para el servidor ThingWorx (usuario, activo, servidores de conexión, etc.) se debe rutear a través de este equilibrador de la carga a fin de garantizar que se dirija al nodo principal actual de ThingWorx.
El equilibrador de la carga llama periódicamente a un servicio de cada servidor ThingWorx. Este servicio responde con el estado de su nodo principal. El servidor ThingWorx que devuelve el código principal al equilibrador de la carga recibe el tráfico de usuario y de activo. Los servidores ThingWorx que devuelven un código en espera no deben recibir tráfico.
Se puede utilizar cualquier equilibrador de la carga que cumpla los siguientes criterios:
El equilibrador de la carga puede enviar periódicamente la siguiente sentencia GET al nodo principal de ThingWorx y actuar en la respuesta.
GET /Thingworx/Admin/HA/LeaderCheck
HTTP/1.0\r\nAuthorization:\ Basic\ <base64-encoded-string>
donde <base64-encoded-string> es una cadena usuario:contraseña codificada en base64 que coincide con el valor de la configuración LoadBalancerBase64EncodedCredentials en platform-settings.json.
El equilibrador de la carga debe enviar esta llamada a cada nodo principal de ThingWorx cada 15 a 20 segundos.
Una respuesta de integridad del nodo principal de ThingWorx es el código de respuesta 200.
Mientras el nodo principal envía el código de respuesta 200, los servidores en espera deben devolver los códigos de respuesta 400, 401 o 503.
Si el nodo principal envía tres códigos de respuesta que no son 200:
El equilibrador de la carga debe verificar si los servidores ThingWorx en espera envían el código de respuesta 200.
El servidor en espera que ahora envía el código de respuesta 200 debe considerarse el nuevo nodo principal de ThingWorx.
Todo el tráfico debe dirigirse al nuevo nodo principal de ThingWorx.
Cualquier equilibrador de la carga que pueda cumplir los requisitos anteriores se puede utilizar en la implementación de la alta disponibilidad de ThingWorx. En la sección Ejemplo de HAProxy se proporciona una configuración de ejemplo de un equilibrador de la carga. El ejemplo se basa en HAProxy ( http://www.haproxy.org).