database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9809 게시물 읽기
No. 9809
pgpool2 failover 체크
작성자
김솔지(solji)
작성일
2017-05-12 14:46
조회수
7,462

안녕하세요,

 

지난번에 M-S Streaming Replication 구성완료 하고, 실시간 복제됨을 확인하였습니다.

 

현재 pgpool2를 구성하여 M가 down되면 S가 Master가 될수 있도록 pgpool2에서 제공하는 Failover 기능을 구성하였습니다.

 

하지만, Failover 기능이 계속해서 되고 있지 않는 상태여서 이렇게 질문드립니다.

 

아래와 같이 설정하였습니다.

 

 

 

 

 

1) MASTER - STANDBY 구성. : sudo vi /etc/pgpool2/pgpool.conf 수정.

 

# - Backend Connection Settings -

 

backend_hostname0 = '10.10.0.135'

# Host name or IP address to connect to for backend 0

backend_port0 = 5432

# Port number for backend 0

backend_weight0 = 1

# Weight for backend 0 (only in load balancing mode)

backend_data_directory0 = '/var/lib/postgresql/9.3/main/'

# Data directory for backend 0

backend_flag0 = 'ALLOW_TO_FAILOVER'

# Controls various backend behavior

# ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER

backend_hostname1 = '10.10.0.140'

backend_port1 = 5432

backend_weight1 = 1

backend_data_directory1 = '/var/lib/postgresql/9.3/main/'

backend_flag1 = 'ALLOW_TO_FAILOVER'

 

# - Authentication -

 

enable_pool_hba = on Make sure you set enable_pool_hba = on -->pool_hba.conf 파일을 사용한 인증을 하겠다는 것.

 

 

2) pgpool 인증을 위해 md5 활성화. : sudo vi /etc/pgpool2/pool_hba.conf

host all all 10.10.0.0/24 md5

 

 

3) pgpool 계정 추가.

: sudo pg_md5 -f /etc/pgpool2/pgpool.conf -m -u postgres

: /etc/pgpool2/pool_passwd.conf 생기고 안에 md5dssdfsfhsdjfsdf...로 되어있는거 확인.

 

 

< FAILOVER 설정 >

 

1. STANDBY 서버.

 

: /var/lib/postgres/9.3/main/recovery.conf 생성 및 아래 설정으로 한 상태.

 

standby_mode = 'on'

primary_conninfo = 'host=10.10.0.135 port=5432 user=replicator password=passwd'

trigger_file = '/tmp/postgresql.trigger.5432'

 

 

2. PGPOOL2 서버.

① failover.sh 생성.

: /etc/pgpgool/failover.sh 생성 및 chmod 777 권한 부여.

: 내용> ssh 10.10.0.140 "touch /tmp/postgresql.trigger.5432" > /tmp/failover.log 2>&1

 

 

② failover 설정. ( /etc/pgpool2/pgpool.conf )

0> listen_address = 'localhost' --> '*'

1> failover_command = '/etc/pgpool2/failover.sh %d %P %H %R /tmp/postgresql.trigger.5432'

2> Health check(상태체크) 설정: 자동으로 failover 기능이 활성화 되도록 설정.

health_check_period = 0 --> 15 --> 상태 점검 주기.

health_check_timeout = 20 --> 10 health_check_period보다 짧아야 함. 상태 점검 timeout 값.

health_check_period = 0 --> 15

health_check_timeout = 20 --> 10

health_check_user = 'nobody' --> 'postgres'

health_check_max_retries = 0 --> 3

health_check_retry_delay = 1

 

 

3> Master / Slave Mode.

: load_balance_mode = off --> on.

: master_slave_mode = off --> on

master_slave_sub_mode = 'slony' ---> 'stream'으로 변경 : postgres에서 제공하는 streaming replication 기능 쓰려면 변경해주어야 함.

 

: sr_check_period = 0 --> 10 ---> streaming replication 지연 시간을 체크. default 0이면, 복제 검사를 체크 안한 다는 뜻.

sr_check_user = 'nobody' --> 'postgres'

 

 

 

 

위와 같이 설정해서 pgpool2 에서 실행했는데, 다음과 같은 로그가 보이고 있습니다.

 

 

 

1. s_do_auth: expecting R got E.

2. make_persistent_db_connection: s_do_auth_failed.

3. failover_handler: no valid DB node found.

 

 

 

위에 대해서 리서치 해봤는데, 정상적으로 Health_check를 못하고 있는 상태일뿐, 따로 어떤식으로 해결해야할지 답이 안나와서 막막한 상태입니다.

인증이 잘못되어있는지 postgres를 다시 세팅하였지만, 동일합니다..

 

 

 

고수님들 답변 부탁드립니다.

이 글에 대한 댓글이 총 1건 있습니다.

일단 pgpool 데몬이 실행 되었을 때,

하나는 운영 노드이고, 다른 하나는 대기 노드다 라고 pgpool 서버가 알아야합니다.

즉, 해당 pgpool 데몬이 실행되고 있는 호스트에서 운영, 대기 노드의 디비 서버로 해당 pgpool 설정으로 접속이 가능한지 psql 같은 클라이언트로 접속 해보세요. 

 

pgpool 데몬을 실행할 때, 이전 각 노드의 상태값을 그대로 참조하기 때문에, 한 번 관리 노드에서 빠지면, (detached) 관리자가 attache 작업을 해주기 전까지 관리 대상에서 빠져버립니다. (기본정책)

그렇기 때문에, pgpool 데몬을 실행할 때, -D 옵션을 사용하는 것이 상태를 파악하는데 좀 더 낫더군요. -d 옵션과, -n 옵션도 함께 사용하면 좀 더 문제를 찾는데 도움이 됩니다.

김상기(ioseph)님이 2017-05-15 11:34에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9819잘되던 함수가... [10]
알려줘요
2017-05-17
8993
9816pgpool2 failover 오류..
김솔지
2017-05-16
6648
9815외부 이중화 솔루션 사용 중 문제발생. [1]
이정재
2017-05-15
7176
9809pgpool2 failover 체크 [1]
김솔지
2017-05-12
7462
9807PostgresSql to TIbero DBLINK [1]
김상준
2017-05-11
7536
9806큰따옴표 저장시.. 오류 [2]
따옴주스
2017-05-11
7563
9795DB의 table에 시간정보 저장할때 질문입니다. [3]
postgres
2017-04-27
6695
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다