PGCluster
インストールと設定
postgresqlのマルチマスタレプリケーション
http://pgfoundry.org/projects/pgcluster/ http://pgcluster.projects.postgresql.org/jp/index.html
日本人が開発されている!
ロードバランサー、レプリケーションサーバ、クラスタサーバの機能がある
クラスタサーバがpostgresqlのDBサーバとなる
/etc/hostsファイルがポイント!
すべてのホストについてhostsで明示的に接続可能な状況にしておく
CentOS5.xの最小構成インストールからでは以下を追加インストール
- readline-devel
- zlib-devel
インストール
useradd -d /usr/local/pgsql postgres ./configure gmake gmake install mkdir /usr/local/pgsql/data chown -R postgres /usr/local/pgsql su - postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data -E EUC_JP --no-locale mkdir etc cp share/pgreplicate.conf.sample etc/pgreplicate.conf cp share/pglb.conf.sample etc/pglb.conf
設定ファイルの変更
- data/pg_hba.conf
レプリケーションサーバとクラスタサーバはネットワーク接続されるため ネットワーク接続を許可しておく 最終行に追加 host all all xxx.xxx.xxx.xxx netmask trust
- data/postgres.conf
TCP接続を有効にし、最大接続数やポート番号を設定 tcpip_socket = true max_connections = 100 port = 5432
- data/cluster.conf
クラスターサーバーの設定
- etc/pgreplicate.conf
レプリケーションサーバの設定
- etc/pglb.conf
ロードバランサーサーバの設定
- rsyncの設定
レプリケーションはデータ復旧時、rsyncを利用するので事前に設定が必要
- RSA認証の秘密鍵と公開鍵(identity.pub)を作成
su -l postgres ssh-keygen -t rsa1 Generating public/private rsa1 key pair. Enter file in which to save the key (/usr/local/pgsql/.ssh/identity): &color(green){←空白でEnter} Created directory '/usr/local/pgsql/.ssh'. Enter passphrase (empty for no passphrase): &color(green){←空白でEnter} Enter same passphrase again: &color(green){←空白でEnter} Your identification has been saved in /usr/local/pgsql/.ssh/identity. Your public key has been saved in /usr/local/pgsql/.ssh/identity.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx postgres@<ホスト名> cd .ssh cp identity.pub authorized_keys
- sshサーバの設定変更、rsyncコマンド実行時にパスワードを入力せずにRSA認証だけでも許可する
~# vi /etc/ssh/sshd_config Protocol 2,1 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ++sshサーバに公開鍵登録 (最初にコピーしたクライアント公開鍵ファイルをclient.pubで取り込み済みと仮定) cd .ssh cat client.pub >> authorized_keys ++接続を確認 rsync -auzr -e "ssh-1" <ホスト名>:/usr/local/pgsql/test /usr/local/pgsql
デフォルトではクラスタサーバはレプリケーションサーバとの接続が切れた時点で read_onlyモードで稼動する
レプリケーションサーバのカスケードは下位側のpgreplicate.confのみに設定する 設定すると、下位側が起動した際に上位側と通信を行う (1.9.0rc2では不具合があるみたい)
クラスタサーバの自動復旧モードは非常に便利!
起動と停止の順番は重要です
起動時
- レプリケーションサーバ
- クラスターサーバ
- ロードバランサー
停止時
- ロードバランサー
- クラスターサーバ
- レプリケーションサーバ