Haute disponibilité ThingWorx > Installation et configuration de ZooKeeper pour ThingWorx haute disponibilité
Installation et configuration de ZooKeeper pour ThingWorx haute disponibilité
Apache ZooKeeper est une solution open source permettant de gérer la synchronisation des applications distribuées. Elle fournit des services de contrôle et d'élection de leader pour les noeuds ThingWorx. Au moins trois noeuds ZooKeeper sont recommandés dans une configuration HA. Le nombre d'instances de ZooKeeper doit être impair pour former un quorum.
Utilisation de ZooKeeper par ThingWorx
Lorsqu'un noeud ThingWorx est promu leader, il maintient une session avec ZooKeeper et conserve sa position de leader. Si la session expire, car le noeud ThingWorx ne répond pas, le service ZooKeeper sélectionne un noeud de secours ThingWorx comme nouveau noeud leader. Le noeud ThingWorx est informé de son élection en tant que leader. Il devient alors le noeud leader, se connecte entièrement à la base de données et commence à gérer le trafic.
Chaque noeud ZooKeeper surveille également le statut des autres noeuds ZooKeeper. Si le noeud actif échoue, un nouveau noeud leader ZooKeeper est élu. Le service ZooKeeper dispose ainsi d'une configuration haute disponibilité grâce à un mécanisme interne associé à ces noeuds. Les serveurs ThingWorx sont configurés avec les adresses de tous les noeuds ZooKeeper, ce qui leur permet de trouver le noeud leader ZooKeeper actuel.
Déploiement de ZooKeeper
Avant d'installer ZooKeeper, lisez et comprenez tous les documents d'installation, y compris la documentation relative aux logiciels prérequis, notamment Java. Il est important de comprendre et d'appliquer les paramètres appropriés, y compris les recommandations de sécurité. Lors de l'installation de Java pour ZooKeeper, PTC recommande de désactiver la renégociation démarrée par le client (c.-à-d. jdk.tls.rejectClientIntiatedRenegotiation=true).
Téléchargement
ZooKeeper est disponible en téléchargement à l'adresse suivante : http://zookeeper.apache.org/releases.html.
Plateformes prises en charge et logiciels requis
Les instructions relatives au déploiement de ZooKeeper, y compris les plateformes prises en charge et les logiciels requis, sont accessibles à l'adresse suivante : http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#ch_deployment.
Configuration en cluster de ZooKeeper
Pour une configuration de ThingWorx haute disponibilité, il convient de déployer une configuration en cluster (multiserveur) de ZooKeeper. Apache fait référence à un cluster ZooKeeper en tant qu'ensemble. Des instructions relatives à l'établissement d'un ensemble ZooKeeper sont accessibles à l'adresse suivante : http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#sc_zkMulitServerSetup.
Configuration de ThingWorx pour une utilisation de ZooKeeper
Lorsque ZooKeeper est opérationnel, la configuration de ThingWorx en mode HA peut être activée. Dans le processus suivant, vous configurez ThingWorx pour détecter et utiliser les serveurs ZooKeeper. L'une des étapes de ce processus n'est nécessaire que si un ensemble ZooKeeper prend en charge plusieurs configurations de ThingWorx en mode HA.
1. Arrêtez tous les services ThingWorx.
2. Modifiez le fichier platform-settings.json pour qu'il contienne les éléments suivants :
a. Sous BasicSettings, EnableHA doit être "vrai". Par exemple :
“EnableHA”: false,
b. Sous HASettings, CoordinatorHosts doit disposer d'une liste séparée par une virgule de tous les noeuds ZooKeeper et de leurs ports. Par exemple :
“CoordinatorHosts”:
“127.0.0.1:2181,127.0.0.2:2182,127.0.0.3:2181”,
c. (Etape facultative) Sous HASettings, CoordinatorZNode peut être utilisé pour distinguer cette configuration de ThingWorx en mode HA lorsque l'ensemble ZooKeeper est partagé par plusieurs configurations ThingWorx en mode HA.
"CoordinatorZNode": "MyThingWorxHA",
3. Si nécessaire, propagez le fichier platform-settings.json modifié sur tous les serveurs ThingWorx.
4. Démarrez tous les serveurs ThingWorx, l'un après l'autre pour contrôler les résultats.
A ce stade, tous les serveurs ThingWorx doivent être opérationnels et accessibles. Toutefois, un seul serveur ThingWorx doit avoir accès à la base de données et à son contenu.