|
この文書は、書籍で割愛したものです。 pgpool-IIの準備pgpool-IIの解説で使うシステム構成を[<図5-XX>]に示す。
便宜上、3台のPostgreSQLサーバにホスト名を設定する。
各サーバの前提条件を以下に示す。
ユーザpostgresの環境変数PATHに、PostgreSQLとpgpool-IIのバイナリパス"/usr/local/pgsql/bin"、"/usr/local/pgpool2/bin"を設定する。 export PATH=$PATH:/usr/local/pgsql/bin:/usr/local/pgpool2/bin
全サーバにsshとrsync、およびPostgreSQLをインストールする。
全サーバがポート番号5432に接続できるように設定する。 さらにサーバpgpoolはポート番号9898にも接続できるように設定する。 pgpool-IIのインストールpgpool-IIインストールする。 ソフトウエアの入手バージョン3.1以上のpgpool-IIを入手する。 http://pgfoundry.org/projects/pgpool/ インストール
pgpool-IIのアーカイブをダウンロードしたら、
適当なディレクトリで展開してconfigureコマンドとmakeコマンドを実行する。
root@pgpool> mkdir /usr/local/pgpool2 root@pgpool> chown postgres:postgres /usr/local/pgpool2 root@pgpool> su postgres postgres@pgpool> tar xvfz pgpool-II-3.1.tar.gz postgres@pgpool> cd pgpool-II-3.1 postgres@pgpool> ./configure --prefix=/usr/local/pgpool2 \ > --with-pgsql-libdir=/usr/local/pgsql/lib postgres@pgpool> make && make install postgres@pgpool> cd sql postgres@pgpool> make && make install 最後に、ディレクトリ/var/run/pgpoolを作成する。 このディレクトリにはpidファイルを書き込む。 postgres@pgpool> mkdir -p /var/run/pgpool 設定ファイルの準備pgpool-IIのインストールが終了したら、3つの設定ファイルを準備する。 postgres@pgpool> cd /usr/local/pgpool2/etc postgres@pgpool> cp pcp.conf.sample pcp.conf postgres@pgpool> cp pgpool.conf.sample pgpool.conf postgres@pgpool> cp pool_hba.conf.sample pool_hba.conf pcp.confpcp.confファイルは、pgpool-IIを制御するpcp関連コマンドの認証に必要である。
pcp.confファイルの書式は「ユーザ名:パスワードのmd5ハッシュ値」で、
md5ハッシュ値はコマンドpg_md5を使って得る。
postgres@pgpool> pg_md5 pass-pgpool2 80e4b055b928d76dc7bdbc2dbedb9307 pg_md5で得た値を、pcp.confファイルの末尾に追加する。 [< pcp.confの末尾に追加>]pgpool2:80e4b055b928d76dc7bdbc2dbedb9307 pgpool.confpgpool.confの設定は、レプリケーションモードとマスタスレーブモードで異なる。 詳細は[<5-07>]と[<5-08>]で解説する。 pool_hba.confpgpool-IIのアクセス制御を行う設定ファイルpool_hba.confを編集する。 書式はPostgreSQLのアクセス制御ファイルpg_hba.confと同じである([<3-08>]参照)。 [< pool_hba.confの末尾に追加>]host all all 127.0.0.1/32 trust host all all 192.168.0.0/24 trust PostgreSQLの設定オンラインリカバリのためのライブラリを全PostgreSQLサーバにコピーし、 バッチファイルを実行する。 まず、ライブラリpgpool-recovery.soをPostgreSQLのあるサーバの/usr/local/pgsql/libに、 バッチファイルpgpool-recovery.sqlを/usr/local/pgsql/shareにコピーする。 postgres@pgpool> cd sql/pgpool-recovery postgres@pgpool> scp pgpool-recovery.so 192.168.0.10:/usr/local/pgsql/lib postgres@pgpool> scp pgpool-recovery.so 192.168.0.11:/usr/local/pgsql/lib postgres@pgpool> scp pgpool-recovery.so 192.168.0.12:/usr/local/pgsql/lib postgres@pgpool> scp pgpool-recovery.sql 192.168.0.10:/usr/local/pgsql/share postgres@pgpool> scp pgpool-recovery.sql 192.168.0.11:/usr/local/pgsql/share postgres@pgpool> scp pgpool-recovery.sql 192.168.0.12:/usr/local/pgsql/share 各PostgreSQLサーバ上でバッチファイルpgpool-recovery.sqlを実行する。 以下はnode0での実行例である。node1、node2でも同様に実行する。 postgres@node0> psql -c "\i /usr/local/pgsql/share/pgpool-recovery.sql" -U postgres template1 sshの設定レプリケーションモードでオンラインリカバリを行う、もしくはマスタスレーブモードでフェールオーバーを行う場合、 パスワードなしでsshを実行できるように設定しなければならない。
全PostgreSQL間でパスワードなしでsshを実行できるように設定する。
pgpoolサーバがslave1に対してfailover.shを、slave2に対してfollowmaster.shを実行するため。 例として、node0からnode1に対してパスワードなしでsshを実行するための準備を示す。 postgres@node0> ssh-keygen -t dsa # パスフレーズは空白 postgres@node0> scp ~/.ssh/id_dsa.pub node1:~/ postgres@node0> ssh node1 postgres@node1> cat id_dsa.pub >> ~/.ssh/authorized_keys2 postgres@node1> rm id_dsa.pub postgres@node1> chmod 700 ~/.ssh postgres@node1> chmod 600 ~/.ssh/authorized_keys2
Last-modified: 2013-3-15
|