ThingWorx 고가용성 > ThingWorx HA를 위한 ZooKeeper 설치 및 구성
ThingWorx HA를 위한 ZooKeeper 설치 및 구성
Apache ZooKeeper는 분산된 응용 프로그램의 동기화를 관리하기 위한 오픈 소스 솔루션입니다. Apache ZooKeeper는 ThingWorx 노드에 대해 모니터링 및 리더 선택 서비스를 제공합니다. HA 구성에는 세 개 이상의 ZooKeeper 노드가 권장됩니다. 쿼럼을 유지하려면 ZooKeeper 인스턴스의 수가 홀수여야 합니다.
ThingWorx가 ZooKeeper를 사용하는 방법
ThingWorx 노드가 리더십을 얻으면 ZooKeeper와 세션을 유지하고 리더십 위치를 유지합니다. ThingWorx 노드가 응답하는 데 실패해 세션이 만료되면 ZooKeeper 서비스에서 ThingWorx 대기 노드를 다음 리더로 선택합니다. ThingWorx 노드는 이제 해당 노드가 리더라는 알림을 받고 리더십 위치를 넘겨 받아 데이터베이스에 연결하고 트래픽 처리를 시작합니다.
또한 ZooKeeper 노드는 서로의 상태를 모니터링합니다. 활성 노드가 실패하면 새 ZooKeeper 리더가 선택됩니다. 이는 이러한 노드에 대한 내부 메커니즘을 통해 ZooKeeper 서비스에 고가용성을 제공합니다. ThingWorx 서버는 모든 ZooKeeper 노드의 주소로 구성되며 따라서 현재 ZooKeeper 리더를 찾을 수 있습니다.
ZooKeeper 배포
Zookeeper를 설치하기 전에 Java와 같은 필요한 필수 소프트웨어에 대한 설명서를 포함하여 모든 설치 문서를 읽고 이해하십시오. 보안 권장 사항을 포함하여 적절한 설정을 이해하고 적용하는 것이 중요합니다. Java for Zookeeper를 설치할 때 클라이언트가 시작한 재협상(jdk.tls.rejectClientIntiatedRenegotiation=true)을 비활성화하는 것이 좋습니다.
다운로드
ZooKeeper는 http://zookeeper.apache.org/releases.html에서 다운로드할 수 있습니다.
지원되는 플랫폼 및 소프트웨어 요구사항
지원되는 플랫폼 및 필수 소프트웨어를 포함하여 ZooKeeper 배포에 관한 지침은 여기에 제공되어 있습니다. http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#ch_deployment
클러스터링된 ZooKeeper 설정
ThingWorx HA의 경우 클러스터링된(다중 서버) ZooKeeper 설정을 배포해야 합니다. Apache는 ZooKeeper 클러스터를 앙상블이라고 합니다. ZooKeeper 앙상블 설정에 관한 지침은 여기에 제공되어 있습니다. http://zookeeper.apache.org/doc/r3.4.5/zookeeperAdmin.html#sc_zkMulitServerSetup
ZooKeeper를 사용하도록 ThingWorx 구성
ZooKeeper가 시작되어 실행되면 ThingWorx HA를 활성화할 수 있습니다. 다음 프로세스에서는 ZooKeeper 서버를 인식하고 ZooKeeper 서버와 작동하도록 ThingWorx를 구성합니다. 이 프로세스의 단계 중 하나는 하나의 ZooKeeper 앙상블이 여러 ThingWorx HA 구성을 지원할 때만 필요합니다.
1. 모든 ThingWorx 서비스를 중지합니다.
2. 다음을 포함하도록 platform-settings.json을 편집합니다.
a. BasicSettings 아래의 EnableHA가 true여야 합니다. 예를 들면 다음과 같습니다.
“EnableHA”: false,
b. HASettings 아래의 CoordinatorHosts에 모든 ZooKeeper 노드 및 해당 포트의 쉼표로 구분된 목록이 있어야 합니다. 예를 들면 다음과 같습니다.
“CoordinatorHosts”:
“127.0.0.1:2181,127.0.0.2:2182,127.0.0.3:2181”,
c. (선택적 단계) ZooKeeper 앙상블을 여러 ThingWorx HA 구성이 공유할 경우 HASettings 아래의 CoordinatorZNode를 사용하여 이 ThingWorx HA 구성을 구별할 수 있습니다.
"CoordinatorZNode": "MyThingWorxHA",
3. 필요한 경우 수정된 platform-settings.json을 모든 ThingWorx 서버에 전파합니다.
4. 제어된 결과에 대해 한 번에 하나씩 모든 ThingWorx 서버를 시작합니다.
이때 모든 ThingWorx 서버가 작동하고 액세스 가능해야 하지만 하나의 ThingWorx 서버만 데이터베이스 및 해당 콘텐츠에 액세스할 수 있어야 합니다.