Docker 기반 솔루션을 사용하려는 경우 PostDock을 시도하십시오.
pgmaster (primary node1) --|
|- pgslave1 (node2) --|
| |- pgslave2 (node3) --|----pgpool (master_slave_mode stream)----client
|- pgslave3 (node4) --|
|- pgslave4 (node5) --|
나는 다음과 같은 시나리오를 테스트 한
, 그들은 모두 아주 잘 작동 :
다음과 같이
현재 내가 스키마, 고정 표시기-작성 우리의 프로젝트에서 그것을 시도
- 복제 : 주 (즉, 마스터) 노드에서 변경 한 내용이 모든 대기 노드 (예 : 슬레이브)에 복제됩니다.
- 장애 조치 : 기본 노드와 대기 노드를 중지합니다, node4)가 자동으로 기본 역할을 대신합니다.
- 두 개의 기본 노드 예방 : 이전 기본 노드 (node1)를 부활 시키십시오. node4는 기본 노드로 계속되며 node1은 동기화되지만 대기 노드로 유지됩니다.
클라이언트 응용 프로그램의 경우 이러한 변경 사항은 모두 투명합니다. 클라이언트는 pgpool 노드를 가리키고 위에서 언급 한 모든 시나리오에서 올바르게 작동합니다.
참고 : PostDock을 실행하는 데 문제가있는 경우 my forked version of PostDock을 시도 할 수 있습니다. 감시
상기 구조의 문제점과
Pgpool-II는 pgpool 실패의 단일 포인트이다. 따라서 위임 된 가상 IP를 사용하여 Watchdog for pgpool-II을 활성화하여 단일 실패 지점을 피할 수 있도록 노력했습니다.
master (primary node1) --\
|- slave1 (node2) ---\ /pgpool1 (active) \
| |- slave2 (node3) ----|---| |----client
|- slave3 (node4) ---/ \ pgpool2 (standby)/
|- slave4 (node5) --/
나는 다음과 같은 시나리오를 테스트 한, 그들은 모두 아주 잘 작동 :
- 일반 시나리오 : 모두 pgpools 자동으로 내 경우에는, 그 중 하나에 적용되는 가상 IP로, 시작, pgpool1
- 장애 조치 : 종료 pgpool1. 가상 IP는 pgpool2에 자동으로 적용되어 활성화됩니다.
- 시작 실패 pgpool : 다시 시작 pgpool1. 가상 IP는 pgpool2와 함께 유지되고 pgpool1은 이제 대기로 작동합니다.
클라이언트 응용 프로그램의 경우 이러한 변경 사항은 모두 투명합니다. 클라이언트는 가상 IP를 가리키고 위에서 언급 한 모든 시나리오에서 정상적으로 작동합니다.
이 프로젝트는 my GitHub repository on the watchdog branch에서 찾을 수 있습니다.
마스터가 실패하고 시스템이 슬레이브 서버로 전환 한 후에는 어떻게해야합니까? 어떻게 주인을 되찾아 주인이 다시 주인이되게 할 것인가 아니면 그냥 노예가 되는가? –