pgpool 아키텍처의 Postgres


9

다음은 pgpool 아키텍처의 예입니다.

여기에 이미지 설명을 입력하십시오

이것은 단일 서버에 pgpool 만 있으면된다는 것을 의미합니다. 이것이 사실입니까? 구성을 살펴보면 백엔드를 구성하는 것도 볼 수 있습니다 pgpool.conf. 추가로 이것을 암시합니다. 그러나 백엔드 서버에서 pgpool을 보는 이유는 설명하지 않습니다.

를 통해 볼 때 문서 나 또한 참조 :

PostgreSQL 8.0 이상을 사용하는 경우 pgpool-II에서 내부적으로 사용되므로 pgpool-II에서 액세스 할 모든 PostgreSQL에 pgpool_regclass 함수를 설치하는 것이 좋습니다.

그래서 어떻게 생각해야할지 모르겠습니다. 모든 백엔드 또는 전용 서버에 pgpool을 설치하는 것이 가장 좋습니다.


고 가용성을 원한다면 적어도 두 개의 postgresql 서버 앞에 두 개의 pgpool 서버가 필요합니다 (모두 다른 상자에 있음)
Neil McGuigan

답변:


10

일반적으로 백엔드 서버에는 Pgpool을 설치하지 않습니다. 당신이 당신의 사진에서 보는 것은 가장 일반적인 구성입니다. Pgpool은 기본적으로 데이터베이스 앞에있는 독립형 서버입니다. 두 Postgres 서버는 종종 스트리밍 복제로 구성됩니다. 하나는 마스터이고 다른 하나는 노예입니다.

이를 통해 Pgpool은 두 개 이상의 데이터베이스간에 모든 읽기 쿼리를로드 밸런싱 할 수 있습니다. 쓰기와 관련된 모든 쿼리는 마스터 서버로 라우팅되고 마스터 서버는 슬레이브로 복제됩니다.

으로 @Neil 맥기는 말했다 , 당신은 또한 더 높은 가용성을 달성하기 위해 여러 Pgpool 서버를 가질 수 있습니다. 기술적으로이 구성에서 데이터베이스 서버에 Pgpool을 설치할 수 있지만 이는 나쁜 습관입니다. 여러 개의 Pgpool 서버를 실행하는 것은 훨씬 더 복잡한 구성입니다. Pgpool을 처음 사용하는 경우 하나의 Pgpool 서버부터 시작하여 두 대의 서버를 작동시킵니다.

어느 구성에서나 응용 프로그램 서버는 단일 Postgres 데이터베이스에 연결되어 있다고 생각합니다.

에 대해 pgpool_regclass, 별도의 질문이어야합니다. 이것은 Pgpool FAQ에서 온 것입니다 .

PostgreSQL 8.0 이상을 사용하는 경우 pgpool-II에서 내부적으로 사용되므로 pgpool-II에서 액세스 할 모든 PostgreSQL에 pgpool_regclass 함수를 설치하는 것이 좋습니다. 이를 사용하지 않으면 다른 스키마에서 중복 테이블 이름을 처리하면 문제가 발생할 수 있습니다 (임시 테이블은 문제가되지 않음).

PostgreSQL 9.4.0 이상 및 pgpool-II 3.3.4 이상, 3.4.0 이상을 사용하는 경우 PostgreSQL 9.4에는 "to_regclass"함수와 같은 내장 pgpool_regclass가 있으므로 pgpool_regclass를 설치할 필요가 없습니다.

필요한 경우 Postgres 마스터 서버에서 일부 SQL 코드를 실행하여 Pgpool이 사용하는 기능을 추가하십시오.

regclass를 사용하면 추가 단계가 필요합니다 (insert_lock을 생각하고있었습니다). 소스에서 컴파일하는 경우 (일반적으로 대부분의 배포판에는 실제로 오래된 버전의 Pgpool이 있음) Postgres 라이브러리도 컴파일해야합니다.

소스에서 컴파일 한 경우 .../pgpool-II-3.X.X/src/sql/pgpool-regclass폴더 로 이동하여을 수행해야합니다 ./configure; make.

pgpool-regclass.so 파일을 Postgres 확장 디렉토리에 복사하십시오. 우분투 14.04 서버 (Postgres 9.3 패키지 설치 사용)에서 다음 위치에 있습니다 /usr/lib/postgresql/9.3/lib. 모든 Postgres 서버 에서이 작업을 수행해야 합니다.

완료되면 pgpool-regclass.sql마스터에서 실행할 수 있습니다 . 이것은 pgpool_regclass함수를 복사 한 라이브러리에 매핑합니다 .


1

다른 모든 것과 마찬가지로 고 가용성 배포를 수행하는 방법에는 여러 가지가 있습니다. 여기 내 경험 (내 자신의 HA 구현)에서 무언가를 제안합니다.

  1. 항상 하나의 인스턴스 대신 여러 개의 pgpool2 인스턴스를 갖는 것이 좋습니다. 그 이유는 명백합니다. 단일 pgpool2는 단일 실패 지점입니다. pgpool은 워치 독 기능을 도입 했으므로 쉽게 달성 할 수 있습니다.
  2. 일반적으로 PostgreSQL 백엔드와 pgpool2간에 동일한 머신을 공유하는 것보다 별도의 머신에 pgpool2 인스턴스를 사용하는 것이 약간 좋습니다. 그러나 PostgreSQL과 동일한 서버에서 실행하더라도 큰 단점은 없습니다. 내 HA 구현에서 모든 컴퓨터는 하나의 PostgreSQL 인스턴스와 하나의 pgpool2 인스턴스를 실행합니다.

마지막 으로이 단계별 자습서 를 추천 하여 고 가용성 구현을 완료하기 위해 처음부터 (PostgreSQL 서버 설치 중) 시작하도록 안내합니다. 언급 된 튜토리얼은 내가 사용하는 구현에 대해 설명합니다.

도움이 되었기를 바랍니다.

업데이트 : 감사합니다 @Moshe Katz-링크가 변경되었습니다. 이제 원래 게시물에서도 여기에 업데이트되었습니다.


2
itenlight.com/blog/2016/05/18/…에 의해 지적 된 웹 사이트 가 다운 된 것 같습니다. 당신은 볼 수 있습니까?
user6807024

기사 같은 외모에 사용할 수 있습니다 fatdragon.me/blog/2016/05/postgresql-ha-pgpool-ii-part-1
모세 카츠
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.