3. Configuring Pgpool-II

3.1 Configuring pgpool.conf

pgpool.conf는 Pgpool-II의 메인 구성파일 이다. -f 옵션을 사용하여 Pgpool-II를 시작할 때 파일의 경로를 지정해야 한다. Pgpool.conf는 기본적으로 $perfix/etc/pgpool.conf에 위치한다.(/etc/pgpool-II/pcp.conf)


3.2 Running mode of Pgpool-II

Pgpool-II에는 스트리밍 복제모드(Streaming replication mode), 논리 복제모드(logical replication mode), 마스터 슬레이브 모드(master slave mode(slony mode)), 네이티브 복제모드(native replication mode), 원시 모드(raw mode)등 네가지 실행모드가 있다. 어떤 모드에서든 Pgpool-II는 Connection pooling, automatic failover, onlice recovery를 제공하며 각 모드의 샘플 구성파일이 제공된다. 그것들은 $perfix/etc 아래에 있으며 이 중 하나를 $prefix/etc/pgpool.conf 에 복사할 수 있다.


이 모드들은 서로 독점적이며 서버를 시작한 후에는 변경할 수 없다. 시스템을 설계하는 초기단계에서 사용해야 할 것을 결정해야 한다. 확실하지 않은 경우 스트리밍 복제모드를 사용하는 것이 좋다.


스트리밍 복제모드(Streaming replication mode)

PostgreSQL 서버에서 스트리밍 복제를 사용할 때 사용할 수있따. 이 모드에서는 PostgreSQL이 데이터베이스를 동기화한다. 이 모드는 널리 사용되고 Pgpool-II를 사용하는 가장 좋은 방법이며 Load balancing이 가능하다. 샘플 구성 파일은 $prefix/etc/pgpool.conf.sample-stream이다.


논리 복제모드(logical replication mode)

논리 복제를 실행하는 PostgreSQL 서버에서 사용할 수 있다. 이 모드에서 PostgreSQL은 테이블 동기화를 담당하며 Load Balancing이 가능하다. 논리 복제는 모든 테이블을 복제하지 않으므로, Load balancing이 가능한 테이블을 복제하는 것은 사용자의 책임이다. Pgpool-II는 모든 테이블을 Load balace한다.

이것은 테이블이 복제 되지 않은 경우, Pgpool-II는 구독자 측에서 오래된 테이블을 조회할 수 있다는 것을 의미한다. 샘플 구성파일은 $prefix/etc/pgpool.conf.sample-logical 이다.


마스터 슬레이브 모드(master slave mode(slony mode))

Slony를 운영하는 PostgreSQL 서버와 함께 사용할 수 있으며 Slony/PostgreSQL은 데이터베이스 동기화를 담당한다. Slony-I는 스트리밍 복제로 인해 사용되지 않으므로, Slony를 사용해야 할 구체적인 이유가 없는 한 이 모드를 사용하지 않는 것이 좋다. Load balancing이 가능하며 샘플 구성파일은 $prefix/etc/pgpool.conf.sample-master-slave 이다.


네이티브 복제모드(native replication mode)

이 모드의 장점은 동기식으로 동기화가 수행된다는 것이다. 즉, 모든 PostgreSQL 서버가 쓰기 작업을 완료할 때까지 데이터베이스에 쓰기가 반환되지 않는다는 것이다. 그러나 PostgreSQL9.6이상에서 스트리밍 복제에 synchronous_commit = remote_apply를 설정한 상태와 유사한 효과를 얻을 수 있다. 설정을 사용할 수 있는 경우 네이티브 복제모드에서 일부 제한을 피할 수 있으므로 네이티브 복제모드 대신 이 설정을 사용하는 것이 좋다. PostgreSQL은 노드간 스냅샷 제어를 제공하지 않기 때문에 세션Y가 노드 B에서 데이터를 커밋하기 전에 세션 X에서 노드 A에서 커밋된 데이터를 볼 수 있다. 세션 X가 노드 A에 표시된 데이터를 기반으로된 노드 B의 데이터를 업데이트 하려고 하면 노드 A와 B 사이의 데이터의 일관성이 손실될 수있다. 이 문제를 방지하려면 사용자가 데이터에 대한 탐색잠금을 발행해야 한다. 이것이 우리가 synchronous_commit = remote_apply와 함께 스트리밍 복제 모드를 사용할 것을 권고하는 또 다른 이유다. Load balancing이 가능하며 샘플 구성파일은 $prefix/etc/pgpool.conf.sample-replication 이다.


원시 모드(raw mode)

Pgpool-II는 데이터베이스 동기화에 신경쓰지 않는다. 전체 시스템이 의미 있는 일을 하게 하는 것은 사용자의 책임이다. 로드 밸런싱이 가능하지 않으며 샘플 구성파일은 $prefix/etc/pgpool.conf/sample 이다.


4. Configuring backend information

Pgpool -II 가 PostgreSQL 백엔드 서버를 인식하려면 pgpool.conf에서 backend*를 구성해야 한다. 우선 Pgpool-II 서버를 시작하기 위해 backend_hostname과 backend_port 매개변수를 설정해야 한다.

+ Recent posts