以下の記事に続いて、pgpool-II+ストリーミング・レプリケーション構成について紹介致します。 (だいぶ時間が空いてしまいましたが。。)
pgpool-II 入門(インストールと簡易設定) - LCL エンジニアブログ
説明に利用する環境
- PostgreSQL 9.4
- pgpool-II 3.5.2
pgpool-IIのストリーミング・レプリケーション対応
ストリーミング・レプリケーション自体は、Web上で有用な記事が多く出てきているので説明を割愛します。特に以下の記事を参考にさせていただきました。
pgpool-IIをストリーミング・レプリケーションへ対応するには、pgpool.confを次のように設定します。
load_balance_modeをonにします。
load_balance_mode = on
master_slave_modをonにし、master_slave_sub_modeをstreamに指定します。
master_slave_mode = on master_slave_sub_mode = 'stream'
backend_hostnameに各DBサーバの接続情報を設定します。
backend_hostname0 = '192.168.56.100' backend_port0 = 5432 backend_weight0 = 5 backend_flag0 = 'ALLOW_TO_FAILOVER'
上記がDBサーバ1台分の接続情報のセットです。 末尾の数字を1,2,3と増やしていくことで、接続させるDBサーバを増やすことができます。
backend_weightで指定した値が、SQLを振り分ける比率となります。 例えば、以下のように設定すると、5:6:7の比率で振り分けが行われます。
backend_hostname0 = '192.168.56.100' backend_weight0 = 5 backend_hostname1 = '192.168.56.101' backend_weight1 = 6 backend_hostname2 = '192.168.56.102' backend_weight2 = 7
上記で一通りの設定は完了です。
pgpool-IIを起動し、pgpool_statusファイルを確認すると、各ノードへの接続ステータスが確認できます。 設定したノードの行数だけステータスが表示され、全て「up」になっていれば正常です。
# cat /var/log/pgpool/pgpool_status up up up
md5認証への対応
PostgreSQLの認証に md5認証を利用していると、pgpool-II側で更に追加設定が必要となります。
まず、pgpoo.confのenable_pool_hbaをonにします。
enable_pool_hba = on
pg_md5というコマンドで、認証ファイルを生成します。 usernameの引数には、PostgreSQLへ接続するユーザ・パスワードを指定します。
pg_md5 --md5auth --username=test password
実行すると、pool_passwdファイルが生成されます。
# cat /etc/pgpool-II/pool_passwd test:md587f77988ccb5aa917c93201ba314fcd4
続いて、pool_hba.confにPostgreSQLへの接続情報を定義します。
host testdb test 127.0.0.1/32 md5 host testdb test ::1/128 md5
以上で完了です。
まとめ
pgpool-IIでのストリーミングレプリケーション対応には、今回紹介しなかった「オンラインリカバリ」など他に有用な機能がありますので、より詳しく知りたい人は公式マニュアルもご参照ください。