Pgpool-II

Pgpool-II는 PostgreSQL 서버와 PostgreSQL 데이터베이스 클라이언트 사이에 위치하는 proxy 소프트웨어이다. 다음과 같은 기능을 제공한다.


1. Connection Pooling

Pgpool-II는 PostgreSQL 서버와의 연결을 유지하고, 동일한 속성(사용자 이름, 데이터베이스, 프로토콜 버전)을 가진 새로운 연결이 들어오면 이를 재사용 한다. 그것은 연결 연결 오버헤드를 줄이고, 시스템의 전체 처리량을 증가시킨다.


2. Load Balancing

데이터베이스가 복제되는 경우(복제모드 또는 Master/slave 모드에서 실행중이기 때문에) 서버에서 SELECT 쿼리를 수행하면 동일한 결과가 반환된다. Pgpool-II는 각 PostgreSQL 서버의 로드를 줄이기 위해 복제 기능을 활용한다. SELECT 쿼리를 사용 가능한 서버간에 배포하여 시스템의 전체 처리량을 증가시킨다. 이상적인 시나리오에서 읽기 성능은 서버의 수에 비례하여 향상될 수 있다. Load Balancing은 많은 사용자가 동시에 많은 읽기 전용 쿼리를 동시에 실행하는 시나리오에서 가장 잘 작동 된다.

3. Automated failover

데이터베이스 서버중 하나가 다운되거나 도달되지 않으면, Pgpool-II는 이를 차단하고 나머지 데이트베이스 서버를 사용하여 작업을 계쏙한다. 시간 초과와 재시도를 포함한 자동화된 failover 기능을 돕는 정교한 기능들이 있다.

4. Replication

Pgpool-II는 여러 PostgreSQL 서버를 관리할 수 있다. 복제 기능을 활성화하면 2개 이상의 PostgreSQL 클러스터에 실시간 백업을 생성할 수 있으므로, 이러한 클러스터중 하나에 장애가 발생하더라도 서비스를 중단없이 계속 할 수 있다.

5. Limiting Exceeding Connections

PostgreSQL과의 최대 동시 연결 수는 제한이 있으며, 이 수에 도달하면 새 연결이 거부된다. 그러나 이 최대 연결 수를 늘리면, 리소스 사용이 증가하고 전체 시스템 성능에 부정적인 영향을 미친다. Pgpool-II도 최대 연결수에 제한이 있지만, 오류를 즉시 반환하는 대신 추가 연결이 대기열에 추가 된다.



Pgpool-II는 PostgreSQL의 백엔드와 프론트엔드 프로토콜을 말하고 백엔드와 프런트엔드 사이로 메시지를 전달한다. 따라서 데이터베이스 에플리케이션(프론트앤드)는 Pgpool-II가 실제 PostgreSQL 서버라고 생각하며, 서버(백앤드)는 Pgpool-II 클라이언트중 하나로 본다. Pgpool-II는 서버와 클라이언트 모두에게 투명하기 때문에, 기존 데이터베이스 에플리케이션은 그것의 소스코드를 거의 변경하지 않고 Pgpool-II와 함께 사용될 수 있다.


Pgpool-II는 Linux, Solaris, FreeBSD 및 대부분의 UNIX 계열 아키텍쳐에서 작동하며 Windows는 지원되지 않는다. 지원되는 PostgreSQL 서버의 버전은 6.4 이상이며, PostgreSQL 7.3 이하를 사용하면 Pgpool-II의 일부 기능을 사용할 수 없다. 그러나 어쨌든 그런 낡은 버전을 사용하지 않는 것을 권장한다. 또한 모든 PostgreSQL 서버가 동일한 major 버전을 사용하고 있는지 확인해야한다. 추가적으로, 다른 빌드 옵션으로 다른 PostgreSQL 설치를 혼합하는 것을 권장하지 않는다. : SSL 지원여부 포함, --disable-integer-datetime 또는 아닌, 다른 블록 크기. 이것들이 Pgpool-II의 기능적인 부분에 영향을 미칠 수 있다. PostgreSQL minor 버전의 차이는 보통 문제가 되지 않는다. 그러나, minor 버전의 모든 증상을 테스트하지 않으며 동일한 minor 버전의 PostgreSQL을 사용할 것을 권장한다.

+ Recent posts