ThingWorx a disponibilità elevata > Installazione e configurazione di ZooKeeper per ThingWorx a disponibilità elevata
Installazione e configurazione di ZooKeeper per ThingWorx a disponibilità elevata
Apache ZooKeeper è una soluzione open source per la gestione della sincronizzazione delle applicazioni distribuite. Fornisce servizi di monitoraggio e di elezione del leader per i nodi ThingWorx. In una configurazione a disponibilità elevata si consiglia di utilizzare almeno tre nodi ZooKeeper. È necessario che sia presente un numero dispari di istanze di ZooKeeper per mantenere un quorum.
Modalità di utilizzo di ZooKeeper da parte di ThingWorx
Una volta che un nodo ThingWorx ottiene la leadership, mantiene una sessione con ZooKeeper e la posizione di leadership. Se la sessione scade perché il nodo ThingWorx non risponde, il servizio ZooKeeper seleziona un nodo di standby ThingWorx come leader successivo. Il nodo ThingWorx riceve notifica di essere il nodo leader e assume la posizione di leadership, si connette completamente al database e avvia la gestione del traffico.
I nodi ZooKeeper inoltre monitorano reciprocamente lo stato degli altri nodi. In caso di errore del nodo attivo, viene eletto un nuovo leader ZooKeeper. In questo modo viene fornita la disponibilità elevata per il servizio ZooKeeper tramite un meccanismo interno per questi nodi. I server ThingWorx sono configurati con gli indirizzi di tutti i nodi ZooKeeper e ciò consente loro di trovare il leader ZooKeeper corrente.
Distribuzione di ZooKeeper
Prima di installare ZooKeeper, leggere e comprendere tutti i documenti di installazione, inclusa la documentazione relativa al software prerequisito necessario, ad esempio Java. È importante comprendere e applicare le impostazioni appropriate, inclusi i consigli di protezione. Durante l'installazione di Java per ZooKeeper, PTC consiglia di disattivare la rinegoziazione avviata dal client (ad esempio jdk.tls.rejectClientIntiatedRenegotiation=true).
Scarica
È possibile scaricare ZooKeeper da: http://zookeeper.apache.org/releases.html.
Piattaforme supportate e requisiti software
Di seguito sono riportate le linee guida per la distribuzione di ZooKeeper, inclusi le piattaforme supportate e il software richiesto: http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#ch_deployment
Configurazione cluster di ZooKeeper
Per ThingWorx a disponibilità elevata, è necessario distribuire una configurazione cluster (multi-server) di ZooKeeper. Apache fa riferimento a un cluster ZooKeeper come a un ensemble. Le indicazioni per creare un ensemble ZooKeeper sono disponibili qui: http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#sc_zkMulitServerSetup
Configurazione di ThingWorx per l'utilizzo di ZooKeeper
Con ZooKeeper attivo e in esecuzione, è possibile attivare ThingWorx a disponibilità elevata. Il processo seguente configura ThingWorx in modo che riconosca e utilizzi i server ZooKeeper. Uno dei passi di questo processo è necessario solo quando un ensemble ZooKeeper supporta più configurazioni a disponibilità elevata di ThingWorx.
1. Arrestare tutti i servizi ThingWorx.
2. Modificare platform-settings.json in modo che contenga quanto riportato di seguito.
a. In BasicSettings EnableHA deve essere true. Ad esempio
“EnableHA”: false,
b. In HASettings CoordinatorHosts deve avere un elenco delimitato da virgole di tutti i nodi ZooKeeper e delle relative porte. Ad esempio
“CoordinatorHosts”:
“127.0.0.1:2181,127.0.0.2:2182,127.0.0.3:2181”,
c. (Passo facoltativo) In HASettings è possibile utilizzare CoordinatorZNode per distinguere questa configurazione a disponibilità elevata di ThingWorx quando l'ensemble ZooKeeper è condiviso da più configurazioni a disponibilità elevata di ThingWorx.
"CoordinatorZNode": "MyThingWorxHA",
3. Se necessario, propagare il file platform-settings.json modificato in tutti i server ThingWorx.
4. Avviare tutti i server ThingWorx, uno alla volta per i risultati controllati.
A questo punto, tutti i server ThingWorx dovrebbero essere operativi e accessibili. Tuttavia un solo server ThingWorx deve avere accesso al database e al relativo contenuto.