0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

シングル構成だけどPgpool-Ⅱを構築する

Posted at

はじめに

仕事の関係で検証環境にpgpool-Ⅱを構築する必要ができた。
普通、冗長構成を持たないWeb-DBサーバであればpgpool-Ⅱ構成は不要だけど
pgpool-Ⅱの検証のためにあえて作るってことであんまし実用性はないんだけど、思い出としてメモっとく。

参考

このとおりにやったらすぐできた!感謝

全体像を理解する際にこちらも参考にしました

コマンドまとめ

先によく使うコマンドまとめとく

PGPOOL側
# ノードの確認
pcp_node_info -v -h localhost -U pgpool -w
# ノードの接続
pcp_attach_node -h localhost -U pgpool -n 0 -w
# ノードの切り離し
pcp_detach_node -h localhost -U pgpool -n 0 -w
# DBサーバへの直接接続
psql -h nbfr151v -U postgres
# pgpool経由でのDB接続
psql -p 9999 -U postgres
# pgpoolの起動
sytemctl start pgpool
# pgpoolの停止
sytemctl stop pgpool
DB側
# PostgreSQL起動
pg_ctl -D ${PGDATA} start
# PostgreSQL停止
pg_ctl -D ${PGDATA} start

主要な設定ファイルまとめ

PGPOOL側
# サービス定義ファイル
/usr/lib/systemd/system/pgpool.service
# サービス定義ファイルのオプションまとめ
/etc/sysconfig/pgpool
# メインとなるPGPOOLの設定ファイル
/usr/local/pgpool-II/etc/pgpool.conf
# pcpプロトコル通信するときに使用するパスワード設定
/usr/local/pgpool-II/etc/pcp.conf

## ほかにもたくさんあるけどそこんところは参考資料を見ることにする
DB側
# メインとなるPostgreSQLの設定ファイル
/home/postgres/data/postgresql.conf

構成

※nbfr151v→nbdb151vは鍵認証でのssh通信が可能な状態になっていること

HOST名 IPアドレス 備考
nbfr151v 10.1.0.5 Web(Tomcat+PGPOOL)
nbdb151v 10.1.0.7 DB(PostgreSQL)

Pgpool-Ⅱ構成に必要なポート

  • 22(SSH)
  • 5432(PostgreSQL)
  • 9898(PCP)※pgpoolが使う独自の通信
  • 9999(PGPOOL)※ユーザーがPGPOOL経由でDBにアクセスするとき使うポート
    ※ほかにもあるけどよく見かけるのはこれらになる

設定ファイル

PGPOOLの設定ファイルを載せておく。ほかの設定は参考資料のほうが参考になる。

nbfr151vにて設定。
内容精査はできてないのであくまで「この設定で動いた」っていう実績の意味で残してます。

/usr/local/pgpool-II/etc/pgpool.conf
[root@pgpool .ssh]# cat /usr/local/pgpool-II/etc/pgpool.conf | grep -v ^# | grep -v ^$
backend_clustering_mode = 'streaming_replication'
listen_addresses = '*'
port = 9999
pcp_listen_addresses = 'localhost'
pcp_port = 9898
pcp_socket_dir = '/tmp'

backend_hostname0 = '10.1.0.5'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/home/postgres/data'
backend_flag0 = 'ALWAYS_PRIMARY'
backend_application_name0 = '10.1.0.5'

log_destination = 'stderr'
logging_collector = on
log_directory = '/var/log/pgpool'
log_filename = 'pgpool-%Y-%m-%d_%H%M%S.log'
log_file_mode = 0600
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 10MB

sr_check_period = 10
sr_check_user = 'pgpool'
sr_check_database = 'postgres'

delay_threshold = 0
delay_threshold_by_time = 5
prefer_lower_delay_standby = on
follow_primary_command = '/usr/local/pgpool-II/etc/follow_primary.sh %d %h %p %D %m %H %M %P %r %R'

health_check_period = 10
health_check_timeout = 20
health_check_user = 'pgpool'
health_check_database = 'postgres'
health_check_max_retries = 0
health_check_retry_delay = 1

connect_timeout = 10000
failover_command = '/usr/local/pgpool-II/etc/failover.sh %d %h %p %D %m %H %M %P %r %R %N %S'
failover_on_backend_error = on
failover_on_backend_shutdown = on

detach_false_primary = on
search_primary_node_timeout = 5min
recovery_user = 'pgpool'
recovery_1st_stage_command = 'recovery_1st_stage'
recovery_timeout = 90
client_idle_limit_in_recovery = 10
auto_failback = on
auto_failback_interval = 1min
hostname0 = ''

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?