がらくたネット


PGCluster

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では不具合があるみたい)

クラスタサーバの自動復旧モードは非常に便利!

起動と停止の順番は重要です

起動時

  1. レプリケーションサーバ
  2. クラスターサーバ
  3. ロードバランサー

停止時

  1. ロードバランサー
  2. クラスターサーバ
  3. レプリケーションサーバ