Alta disponibilidad de ThingWorx > Instalación y configuración de ZooKeeper para la alta disponibilidad de ThingWorx
Instalación y configuración de ZooKeeper para la alta disponibilidad de ThingWorx
Apache ZooKeeper es una solución de código fuente abierto para la gestión de la sincronización de aplicaciones distribuidas. Se proporcionan servicios de supervisión y elección de nodo principal para los nodos de ThingWorx. En una configuración de alta disponibilidad se recomienda usar al menos tres nodos de ZooKeeper. El número de instancias de ZooKeeper debe ser un número impar para mantener un quórum.
Forma en que ThingWorx utiliza ZooKeeper
Una vez que un nodo de ThingWorx se convierte en principal, mantiene una sesión con ZooKeeper y mantiene la posición de principal. Si la sesión vence porque el nodo de ThingWorx no responde, el servicio de ZooKeeper selecciona un nodo en espera de ThingWorx para que sea el siguiente principal. Se notifica al nodo de ThingWorx que es ahora el principal y toma la posición de principal, se conecta completamente a la base de datos y empieza a gestionar el tráfico.
Los nodos de ZooKeeper también supervisan el estado del otro. Si el nodo activo falla, se elige un nuevo principal de ZooKeeper. De este modo, se proporciona una alta disponibilidad para el servicio de ZooKeeper a través de un mecanismo interno de estos nodos. Los servidores ThingWorx se configuran con las direcciones de todos los nodos de ZooKeeper, lo que les permite buscar el nodo principal actual de ZooKeeper.
Implementación de ZooKeeper
Antes de instalar ZooKeeper, se deben leer y comprender todos los documentos de instalación, incluida la documentación de cualquier software de requisito previo, como Java. Es importante comprender y aplicar la configuración adecuada, incluidas las recomendaciones de seguridad. Al instalar Java para ZooKeeper, PTC recomienda desactivar la renegociación iniciada por el cliente (es decir, jdk.tls.rejectClientIntiatedRenegotiation=true).
Descargar
ZooKeeper se puede descargar de: http://zookeeper.apache.org/releases.html.
Plataforma soportadas y requisitos de software
Las directrices para implementar ZooKeeper se proporcionan aquí, incluidas las plataformas soportadas y el software necesario: http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#ch_deployment
Configuración agrupada de ZooKeeper
Para la alta disponibilidad de ThingWorx, se debe implementar una configuración agrupada (de varios servidores) de ZooKeeper. Apache hace referencia a un clúster de ZooKeeper como un conjunto. Las instrucciones para el establecimiento de un ensamblaje de ZooKeeper se proporcionan aquí: http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#sc_zkMulitServerSetup
Configuración de ThingWorx para utilizar ZooKeeper
Con ZooKeeper en funcionamiento, se puede activar la alta disponibilidad de ThingWorx. En el siguiente proceso, se configura ThingWorx para reconocer y trabajar con los servidores ZooKeeper. Uno de los pasos de este proceso solo es necesario si un ensamblaje de ZooKeeper soporta varias configuraciones de alta disponibilidad de ThingWorx.
1. Detenga todos los servicios de ThingWorx.
2. Edite platform-settings.json para que contenga lo siguiente:
a. En BasicSettings, EnableHA debe ser true. Por ejemplo
“EnableHA”: false,
b. En HASettings, CoordinatorHosts debe tener una lista delimitada por comas de todos los nodos de ZooKeeper y sus puertos. Por ejemplo
“CoordinatorHosts”:
“127.0.0.1:2181,127.0.0.2:2182,127.0.0.3:2181”,
c. (Paso opcional) En HASettings, se puede utilizar CoordinatorZNode para distinguir esta configuración de alta disponibilidad de ThingWorx cuando el ensamblaje de ZooKeeper se comparte entre varias configuraciones de alta disponibilidad de ThingWorx.
"CoordinatorZNode": "MyThingWorxHA",
3. Si fuera necesario, propague el fichero platform-settings.json modificado a todos los servidores ThingWorx.
4. Inicie todos los servidores ThingWorx, de uno en uno para obtener resultados controlados.
En este punto, todos los servidores ThingWorx deben funcionar y se debe poder acceder a ellos. Sin embargo, solo un servidor ThingWorx debe tener acceso a la base de datos y su contenido.