ThingWorx 고가용성
ThingWorx 고가용성 클러스터링 개요
중요 사물 인터넷(IoT) 시스템의 중단 기간을 줄이기 위해 클러스터 모드의 HA(고가용성) 환경에서 작동하도록 ThingWorx를 구성할 수 있습니다. 클러스터링은 모든 구성 요소가 올바르게 구성되었다고 간주되면 추가 확장성과 고가용성을 제공합니다.
|
재해 복구 솔루션에는 HA 클러스터링을 사용하면 안 됩니다.
|
|
HA 배포에 여러 가용성 영역을 사용하는 것은 지원되지 않습니다. 영역 간의 네트워크 지연 시간은 ThingWorx 노드와 Apache Ignite 노드 간의 지속적인 통신에 비해 너무 클 수 있습니다.
|
다음 단원에서는 클러스터링 환경의 설정 및 구성과 ThingWorx HA 배포에 대한 구성 요소 및 고려 사항에 대해 간략하게 설명합니다.
모든 HA 배포는 기능 및 확장 요구사항만 충족하도록 설계된 배포와 비교했을 때 추가 리소스가 필요합니다. 이러한 추가 리소스는 하드웨어 기반 리소스(예: 서버, 디스크, 부하 분산 등) 및 소프트웨어 기반 리소스(예: 동기화 서비스 및 부하 분산)입니다. 그런 다음 HA 배포 내에 단일 실패 지점이 없도록 추가 리소스를 구성합니다.
모든 HA 배포는 사용자 배포에서 응용 프로그램의 가동 시간 요구사항을 분석한 SLA(서비스 수준 계약)를 기반으로 해야 합니다. 예를 들어, 매월 몇 시간이나 시스템이 오프라인 상태가 될 수 있습니까? 이 시간이 시스템 실패, 응용 프로그램 업그레이드 또는 둘 다를 위한 허용된 다운타임입니까? HA 시스템에 필요한 추가 리소스 수는 목표하는 SLA에 따라 달라집니다. 일반적으로 SLA는 늘어나므로 이를 충족하기 위한 리소스 요구량도 증가합니다.
용어 설명
• 고가용성
장시간 지속적으로 작동하는 시스템 또는 구성 요소입니다.
• 확장성
메모리, 디스크 또는 CPU를 늘리거나 서버를 추가하여 시스템에서 지원할 수 있는 로드를 늘리는 기능입니다.
• 클러스터
동시에 작동할 수 있는 동일한 응용 프로그램의 인스턴스 수입니다. 클러스터는 고가용성과 확장성을 제공합니다.
• 단일
단일 서버는 타이머, 스케줄러와 같은 교차 클러스터 동작을 처리하는 클러스터에 있는 하나의 서버입니다. 즉, 클러스터 내에서 작업이 한 번만 실행되도록 합니다.
• 가상 IP 주소
응용 프로그램을 나타내는 IP 주소입니다. 가상 IP를 사용하는 클라이언트는 일반적으로 부하 분산으로 라우팅된 후 응용 프로그램을 실행 중인 서버로 요청을 전달합니다.
• 부하 분산
네트워크 트래픽을 수신하고 트래픽을 수락할 준비가 된 응용 프로그램으로 트래픽을 분산하는 장치입니다.
• 장애 조치
실패나 예약된 다운타임으로 인해 주 구성 요소를 사용할 수 없을 때 시스템 구성 요소(예: 프로세서, 서버, 네트워크 또는 데이터베이스)의 기능을 보조 시스템 구성 요소가 수행하는 백업 작동 모드입니다.
• 최종 일관성
변경 사항을 클러스터 환경의 모든 서버에 전파하는 데 시간이 걸립니다.자세한 내용은
최종 일관성을 참조하십시오.
• 공유 상태
클러스터의 여러 서버 간에 공유되는 상태이며 조회하는 서버에 상관없이 동일하게 보장됩니다.속성 데이터는 모든 서버에서 현재 속성 값이 동일한 공유 상태의 예입니다.
고가용성을 위한 ThingWorx 참조 아키텍처
다음 이미지는 클러스터 구성의 ThingWorx를 보여줍니다.
다음 구성 요소는 클러스터 배포의 일부일 수 있습니다.
• 사용자 및 장치 - HA 기능에서 역할이 없습니다. 사용자 및 장치 관점에서는 어떤 변경도 없습니다. 주 ThingWorx 서버가 변경되더라도 사용자 및 장치는 항상 동일한 URL 및 IP 주소를 사용합니다.
• 방화벽 - 어떠한 HA 기능도 선택적 기능으로 간주할 수 없습니다. 대개 방화벽은 보안 요구사항을 구현하기 위해 배치됩니다.
• 부하 분산 - 부하 분산은 부하 부산이 지원하는 응용 프로그램에 대한 가상 IP 주소를 관리합니다. 해당 가상 IP 주소로 라우팅되는 모든 트래픽은 트래픽을 수신할 수 있는 활성 응용 프로그램으로 전달됩니다.
• ThingWorx Connection Servers - 자산에서 WebSocket 트래픽을 수신하여 ThingWorx Platform으로 라우팅합니다. Connection Server는 클러스터 구성에서 작동할 수 있습니다. 자산이 특정 Connection Server로 전달된 후에는 항상 동일한 Connection Server를 사용해야 합니다. 해당 서버가 오프라인 상태가 되면 사용 가능한 다른 Connection Server로 자산이 리디렉션되어야 합니다.
• ThingWorx Foundation - 모든 사용자 및 자산 트래픽을 수신합니다.
• ThingWorx 저장소 - ThingworxPlatform, ThingworxStorage 및 ThingworxBackupStorage와 같은 필수 스토리지 위치 및 구현을 지원하기 위해 추가된 추가 스토리지 위치입니다. 클러스터 환경의 경우 스토리지 폴더가 모든 ThingWorx 서버에서 동등하게 액세스할 수 있는 공통 스토리지 위치에 있어야 합니다.
• Apache ZooKeeper - ZooKeeper는 서비스 검색, 단일 선택 및 분산 조정을 위해 ThingWorx Connection Server 및 Ignite에서 사용되는 중앙 집중식 조정 서비스입니다.
• Apache Ignite - Ignite는 클러스터에서 서버 간에 상태를 공유하기 위한 분산 메모리 캐시를 제공합니다.
• PostgreSQL HA 구성의 경우 PostgreSQL은 상시 대기 구성에 있는 하나 이상의 서버 노드를 통해 작동합니다. 한 노드가 모든 쓰기 트래픽을 수신하고 다른 노드 중 하나가 모든 읽기 트래픽을 수신할 수 있습니다. 각 노드를 최신 상태로 유지하기 위해 모든 노드 간에 스트리밍 복제가 활성화됩니다.
• Pgpool-II - PostgreSQL HA 구성에서만 사용됩니다. Pgpool-II 노드는 ThingWorx 요청(읽기 및 쓰기)을 수신하여 적절한 PostgreSQL 노드로 전달합니다. 또한 각 PostgreSQL 노드의 상태를 모니터링하고 노드 중 하나가 오프라인 상태가 되면 작업의 대상을 변경하고 장애 조치를 시작할 수 있습니다.
• Microsoft SQL Server(그림에 없음) - Microsoft 장애 조치(Failover)는 하나 이상의 MS SQL 서버가 온라인이고 사용 가능한 상태가 되도록 보장하는 데 사용됩니다.
• InfluxDB - ThingWorx 클러스터링 구성에는 InfluxDB 구현이 필요하지 않습니다. 구현의 수집 요구사항을 충족하기 위해 필요한 경우에는 HA에 맞게 구성되어 있는지 확인하십시오.