[pgsql-jp: 31753] Re: クラスタサーバが起動出来ない (pgcluster-1.0.5)
八田
s-hatta @ exl.ne.jp
2003年 12月 10日 (水) 18:40:49 JST
八田です。
先に謝ります。
このメール長いです。
クラスラサーバー 2台 Redhat9.0
レプリケーションサーバー 1台 Redhat9.0 DNSサーバ
ロードバランサー 無し
で構成した環境での動作した1例です。
rsyncは全サーバで動かしてます。(標準インストールしたもの)
ハードスペックは3台とも
CPU P2 266Mhz
メモリ 64M
HD 4G(1台)
NIC 100Mhz(1枚)
と今となっては超非力マシンですが、、、、
HUBは10の馬鹿HUB使ってます!
OSやシェルの違いで構築方法は違ってくると思いますが、
1動作事例として参考にしてください。
1.コンパイルの準備
1.1 ユーザの追加
postgres ユーザを追加します。
*webminを使用すると楽にユーザ管理ができます。
http://jp.webmin.com/
1.2ホスト名の設定
レプリケーションサーバにDNSサーバを起動させ、
ホスト名を登録する。
注)各サーバ起動前にDNSサーバが起動していないと
うまく動きません。
*hostsファイルにホスト名を記述する方が障害に
強いと思われる。
1.2ユーザ環境整備
*シェルが/bin/bashの場合「.bash_profile」に
#POSTGRES
POSTGRES_HOME=/usr/local/pgsql
export POSTGRES_HOME
PGDATA=/usr/local/pgsql/data
export PGDATA
LD_LIBRARY_PATH=/usr/local/pgsql/lib
export LD_LIBRARY_PATH
MANPATH="$MANPATH":$POSTGRES_HOME/man
export MANPATH
PATH=$PATH:$POSTGRES_HOME/bin
を追加する
レプリケーションサーバの場合
PGDATA=/usr/local/pgsql/etc
や
PGDATA=/usr/local
に変更する。
*注意:OSやシェルの違いでset PGDATA=/usr/local
とかにしないといけない場合がある。
2.クラスターサーバのコンパイル
バージョン1.0.5で作業場所を/usr/local/srcとした場合。
# cd /usr/local/src
# tar -zxvf pgcluster-1.0.5.tar.gz > t.log
# chown -R postgres.postgres pgcluster-1.0.5
# su -l postgres
$ cd /usr/local/src/pgcluster-1.0.5
$ ./configure --enable-syslog
$ make
$ make install
3.レプリケーションサーバのコンパイル
# su -l postgres
$ cd /usr/local/src/pgcluster-1.0.5/src/pgcluster/pgrp
$ ./configure
$ ./configure --enable-syslog
$ make
$ su
# make install
4.ロードバランサのコンパイル
#su -l postgres
$cd /usr/local/src/pgcluster-1.0.5/src/pgcluster/pglb
$./configure
$make
$su
#make install
*動作させてないので、、、、
5.rsyncの設定
5.1opensshの設定
マスタースレーブ共に公開キーを作成する。
(postgresユーザで!)
# su -l postgres
$ ssh-keygen -t rsa1
$ cd ./.ssh <--Redhat 9.0では.sshはエラーになった!
$ cp identity.pub authorized_keys
公開キーの取得
ftp等で相手側のauthorized_keysを取得してくる。
(a_authorized_keysと名前を変えた仮定します。)
$ cat a_authorized_keys >> authorized_keys
*注意:オリジナルのidentity.pubは壊さないように
しましょう!
6.データベースの初期化
マスター、スレーブ両方で作成します。
# su -l postgres
$ /usr/local/pgsql/bin/initdb --encoding=EUC_JP --no-locale -D /usr/local/pgsql/data
7.環境ファイルの編集
7.1 レプリケーションサーバ
「pgreplicate.conf」の編集
/usr/local/pgsql/etc/pgreplicate.conf.sampleを
動作環境に応じpgreplicate.confとコピーする。
# cp /usr/local/pgsql/etc/pgreplicate.conf.sample /usr/local/pgreplicate.conf
クラスタサーバを登録する。
<Cluster_Server_Info>
<Host_Name> Asv.***.jp </Host_Name>
<Port> 5432 </Port>
<Recovery_Port> 7779 </Recovery_Port>
</Cluster_Server_Info>
<Cluster_Server_Info>
<Host_Name> Bsv.***.jp </Host_Name>
<Port> 5432 </Port>
<Recovery_Port> 7779 </Recovery_Port>
</Cluster_Server_Info>
Asv.***.jpやBsv.***.jpは動作環境に合わせてください。
注1)ホスト名にIPアドレスは指定しない。
注2)ホスト名A,Bなどの1文字で使用しない。
*rsyncが失敗しているような現象が発生。
注3)初めに記述したクラスタサーバがマスタDBとなる。
7.2 クラスターサーバーの設定
「pg_hba.conf」の編集
host all 192.168.3.0 255.255.255.0 trust #アクセス対象を指定
「cluster.conf」の編集
<Replicate_Server_Info>
<Host_Name> Csv.***.jp </Host_Name>
<Port> 8777 </Port>
<Recovery_Port> 7778 </Recovery_Port>
</Replicate_Server_Info>
Asv.***.jpやBsv.***.jpは動作環境に合わせてください。
注1)ホスト名にIPアドレスは指定しない。
「postgresql.conf」の編集
tcpip_socket = on
ssl = on
を追加!
8.起動と停止
8.1クラスタサーバ
起動
# /usr/local/pgsql/bin/pgreplicate -D /usr/local
停止
# /usr/local/pgsql/bin/pgreplicate stop -D /usr/local
テストで動かす場合ログが見えるのでこちらが良いかと!
起動
# /usr/local/pgsql/bin/pgreplicate -D /usr/local -nv
停止
# /usr/local/pgsql/bin/pgreplicate stop -D /usr/local -nv
8.2レプリケーションサーバ
起動
$ /usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -o "-i"
停止
$ /usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data -o "-i"
以上で正常にレプリケーションしてくれます。
テーブル作成やレコードの更新を行うと間髪入れずに
レプリケートしてくれるのは感動物です。
お詫び:既に動作されていて必要のない方、PGClusterを使用しない方
長くなりまして申し訳ありません。
追伸 :PGCluster非常に良いと推薦します、使用されていない方は
使用されることをお勧めします。
--
hatta <s-hatta @ exl.ne.jp>
pgsql-jp メーリングリストの案内