ThingWorx 고가용성 > PostgreSQL 고가용성
PostgreSQL 고가용성
각 노드가 읽기 또는 쓰기 요청을 수신할 때 최신 상태를 유지하려면 PostgreSQL 10이 모든 노드에서 해당 데이터를 동기화해야 합니다. 잠재적인 동기화 문제를 제거하는 단일 솔루션은 없으므로 여러 가지 HA 옵션을 고려해야 합니다. PostgreSQL 10용 HA 솔루션에 대한 비교는 표 형식의 목록( https://www.postgresql.org/docs/10/different-replication-solutions.html)으로 제공됩니다.
다음 다이어그램에서는 PostgreSQL HA 배포를 위한 PTC 권장 구성을 보여줍니다.
PostgreSQL
ThingWorx는 데이터베이스에 많은 양의 콘텐츠를 쓸 수 있으므로 모든 PostgreSQL 노드에 걸쳐 쓰기 순서가 그대로 유지되도록 하는 것이 중요합니다. 계단식 복제 아키텍처 내에서 모든 PostgreSQL 노드에 동기화 복제를 구성하고 동기화 복제에 대해 제한을 두는 것이 좋습니다. 이 옵션을 사용하려면 다음 요구사항을 충족해야 합니다.
동일한 크기의 PostgreSQL 서버 노드 세 개를 배포해야 합니다.
한 노드는 쓰기 요청이 전달되는 마스터여야 합니다. 마스터는 WAL 레코드를 대기 노드로 스트리밍하고 대기 노드가 승인한 경우에만 트랜잭션을 커밋합니다.
한 노드는 마스터에서 스트리밍 콘텐츠를 수신하는 대기 노드여야 합니다. 이 노드도 해당 콘텐츠를 두 번째 대기 노드에 스트리밍합니다.
또 다른 한 개의 추가 노드는 첫 번째 대기 노드에서 스트리밍 콘텐츠를 수신하는 대기 노드여야 합니다. 노드 실패 시 또는 노드가 오프라인이 될 경우 이 노드가 나머지 두 노드 중 하나가 되며 마스터-대기가 승인한 스트리밍 프로세스를 완료합니다.
Pgpool-II
PostgreSQL HA 구성을 완료하려면 쓰기 및 읽기 요청이 적절한 노드로 전달되어야 하고 노드 상태가 모니터링되어야 하며 정상이 아닌 노드는 오프라인으로 전환되어 복구되어야 합니다. 이러한 작업에 Pgpool-II를 사용하는 것이 좋습니다. 이 옵션을 사용하려면 다음 요구사항을 충족해야 합니다.
동일한 크기의 Pgpool 서버 노드 두 개를 배포해야 합니다. 해당 노드는 활성/수동 모드에서 작동합니다.
노드 하나는 마스터로 작동합니다. 이 노드는 쓰기 트래픽을 PostgreSQL 마스터 노드로 전달하고 읽기 트래픽을 PostgreSQL 대기 노드로 전달합니다.
다른 노드 하나는 대기로 작동합니다. Pgpool 마스터 노드가 실패하면 트래픽 분산을 넘겨 받습니다.
하나의 가상 IP 주소를 Pgpool-II 노드가 관리해야 합니다. 마스터는 이 주소를 사용하여 클라이언트에서 PostgreSQL 트래픽을 수신합니다.
Pgpool-II에 대한 참고 사항:
Pgpool-II는 Windows 환경에서 지원되지 않습니다.
PostgreSQL의 클라우드 구현에서는 Pgpool-II 대신 직접 DNS 장애 조치 메커니즘을 사용할 수 있습니다.
ThingWorx 응용 프로그램과 동일한 서버에서 Pgpool-II 프로세스를 실행하여 HA 환경의 총 서버 수를 줄일 수 있습니다.
PostgreSQL 복제를 관리하는 데 Pgpool-II를 사용하는 것은 권장되지 않습니다. 이 문서에 제공된 지침에서는 트래픽 라우팅, 노드 상태 모니터링 및 장애 조치 자동화를 위해 PostgreSQL의 스트리밍 복제 및 Pgpool-II를 사용합니다.