Scikit Web

PostgreSQL PGPool Active StandBy Using Docker 개발 환경 구축 - 3 본문

Backend/PostgresSQL

PostgreSQL PGPool Active StandBy Using Docker 개발 환경 구축 - 3

Keun0 2023. 2. 18. 10:32
728x90
반응형

앞서 도커로 실행한 PostgreSQL Active(Primary) 서버와 Standby 서버를 PgPool로 연결하는 작업을 한다.

 

pgpool.conf 파일을 수정한다

vi /etc/pgpool/pgpool.conf
#------------------------------------------------------------------------------
# CONNECTIONS
#------------------------------------------------------------------------------
listen_addresses = '*'
port = 1111

#------------------------------------------------------------------------------
# - Backend Connection Settings -
#------------------------------------------------------------------------------
backend_hostname0 = 'PRIMARY_SERVER_IP'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/var/lib/postgresql/data'
backend_flag0 = 'ALLOW_TO_FAILOVER'

backend_hostname1 = 'STANDBY_SERVER_IP'
backend_port1 = 5431
backend_weight1 = 1
backend_data_directory1 = '/var/lib/postgresql/data'
backend_flag1 = 'ALLOW_TO_FAILOVER'


#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------
logdir = '/var/log/pgpool'


#------------------------------------------------------------------------------
# MASTER/SLAVE MODE
#------------------------------------------------------------------------------
master_slave_mode = on
master_slave_sub_mode = 'stream'

#------------------------------------------------------------------------------
# - Streaming -
#------------------------------------------------------------------------------
sr_check_period = 0
sr_check_user = 'DB_ACCOUNT'
sr_check_password = 'DB_CONNECTION_PASSWORD'
sr_check_database = 'DB_NAME'
delay_threshold = 0

#------------------------------------------------------------------------------
# FAILOVER AND FAILBACK
#------------------------------------------------------------------------------
search_primary_node_timeout = 10

pgpool2를 재시작 한다

sudo systemctl restart pgpool2.service

 

마지막으로 동작을 테스트 하고 Primary Standby 설정을 되돌리는 방법에 대한 설명이다.

동작테스는 Active(Primary) Server Docker 를 stop 한 이후 에도 해당 DB와 연결된 서비스가 문제없이 데이터를 가져오면 동작이 구축이 문제없이 된것으로 보인다.

 

하지만 한번 이렇게 동작 모드가 변경되면.. 두 서버 모두 Standby Standby 로 변경 되었다.

관련 설정을 다시 변경해줘야 Primary Standby mode로 돌아올수 있다.

 

우선 pgpool2 서비스를 stop 하고 저장되어 있던 정보를 삭제한다.

sudo systemctl stop pgpool2.service
rm -rf /var/log/pgpool/pgpool_status

 

Active(Primary) 서버 재시작

sudo docker compose -f dokcer-compose.yml up -d

 

Active(Primary) 서버에서 아래 명령어로 동작 관련 설정을 복구 한다.

psql -h PRIMARY_SERVER_IP -p PRIMARY_DB_PORT -U DB_USER DB_NAME -c "select pg_is_in_recovery();"

 

pgpool2 서비스 재시작

sudo systemctl start pgpool2.service

 

728x90
반응형
Comments