PGPoolクラスタの構築とテスト

5129 ワード

PGPoolクラスタの構築とテスト
CentOS6.5 192.168.0.101   cnode1 //pgpool1,datanode1
CentOS6.5 192.168.0.102   cnode1 //pgpool2,datanode2
CentOS6.5 192.168.0.103   cnode1 //datanode3

一、ホスト計画
cnode1 (pgpool1,datanode1)
cnode2 (pgpool2,datanode2)
cnode3 (datanode3) 

二、各ノードにホストホストホストを配置する
#vim/etc/hosts
192.168.0.101 cnode1
192.168.0.102 cnode2
192.168.0.103 cnode3 

三、PostgresとPGPoolのインストール
1.各ノードに依存パッケージをインストールする
# yum install -y flex bison readline-devel zlib-devel openjade docbook-style-dsssl
2.各ノードにPostgresをインストールする
tar -xf linux-postgresql-9.4.1.tar.bz2
cd postgresql-9.4.1
./configure --prefix=/usr/local/pgsql
make
make install

3.各ノードにPGPoolをインストールする
tar -xf pgpool-II-3.4.2.tar.gz
cd pgpool-II-3.4.2
./configure --prefix=/usr/local/pgpool
make
make install

四、環境変数の配置
(1). postgresユーザーの作成
#adduser postgres
postgresパスワードの変更
#passwd postgres
(2).postgresユーザーの環境変数の設定
postgresユーザーに切り替え
#su - postgres
postgresのホームディレクトリに入る
#cd ~
編集~/.bash_プロファイルファイル
#vi ~/.bash_profile
cnode1、cnode2 :
export PATH
export PATH=/usr/local/pgsql/bin:/usr/local/pgpool/bin:$PATH
export PGDATA=/usr/local/pgsql/data
export MANPATH=$MANPATH:/usr/local/pgsql/man
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib

cnode 3ノードに次の環境変数を追加します.
export PATH
export PATH=/usr/local/pgsql/bin:$PATH
export PGDATA=/usr/local/pgsql/data
export MANPATH=$MANPATH:/usr/local/pgsql/man
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib

(3). サービスへのPostgresの追加
cp /opt/postgresql-9.4.1/contrib/start-scripts/linux /etc/init.d/postgresql
ckcfg --add postgresql

保存してviを終了します.環境変数を有効にするには、次のコマンドを実行します.
#source ~/.bash_profile
五、pgpoolクラスタの構成
1.pgpool 1およびpgpool 2ノードの/etc/pgpool 2/pgpoolを構成する.conf
*pgpool 1およびpgpool 2ノードpgpoolを修正する.conf、コピーモード有効
replication_mode = false
load_balance_mode = false
次のように変更します.
replication_mode = true
load_balance_mode = true
2.pgpool 1ノードpgpool.confファイルには以下の内容が追加されています.
backend_hostname1 = 'cnode2'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/data1'
backend_flag1 = 'ALLOW_TO_FAILOVER'

backend_hostname2 = 'cnode3'
backend_port2 = 5432
backend_weight2 = 1
backend_data_directory2 = '/data2'
backend_flag2 = 'ALLOW_TO_FAILOVER'

3.pgpool 2ノードpgpool.confファイルには以下の内容が追加されています.
backend_hostname1 = 'cnode1'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/data1'
backend_flag1 = 'ALLOW_TO_FAILOVER'

backend_hostname2 = 'cnode3'
backend_port2 = 5432
backend_weight2 = 1
backend_data_directory2 = '/data2'
backend_flag2 = 'ALLOW_TO_FAILOVER'

4.WATCHDOGの構成
(1)pgpool 1のwatchdogの構成
# - Enabling -
use_watchdog = on

# Host name or IP address of this watchdog
# (change requires restart)
wd_hostname = 'cnode1'                                 
wd_port = 9000

# - Virtual IP control Setting -
#クラスタを起動すると、2つのpgpoolのうちmasterとして選択されたノードがそのノードを占有し、
#フェイルオーバが発生しました.masterノードがシャットダウンしました.standbyノードはこのIPを占有し、サービスを継続します.
delegate_IP = '192.168.0.105'

# Host name or IP address of destination 0
# for sending heartbeat signal.
# (change requires restart)
heartbeat_destination0 = 'cnode2'
heartbeat_destination_port0 = 9694

# - Other pgpool Connection Settings -
# Host name or IP address to connect to for other pgpool 0
# (change requires restart)
other_pgpool_hostname0 = 'cnode2'

# Port number for othet pgpool 0
other_pgpool_port0 = 9999
                                    
# (change requires restart)
other_wd_port0 = 9000

(2)pgpool 2のwatchdogの構成
# - Enabling -
use_watchdog = on

# Host name or IP address of this watchdog
# (change requires restart)
wd_hostname = 'cnode2'                                 
wd_port = 9000

# - Virtual IP control Setting -
delegate_IP = '192.168.0.105'

# Host name or IP address of destination 0
# for sending heartbeat signal.
# (change requires restart)
heartbeat_destination0 = 'cnode1'
heartbeat_destination_port0 = 9694

# - Other pgpool Connection Settings -
# Host name or IP address to connect to for other pgpool 0
# (change requires restart)
other_pgpool_hostname0 = 'cnode1'

# Port number for othet pgpool 0
other_pgpool_port0 = 9999
                                    
# (change requires restart)
other_wd_port0 = 9000

六、クラスタの起動
1.まず3つのデータノードdatanode 1,datanode 2,datanode 3を起動する
service postgresql start
2.pgpool 2個起動:pgpool 1、pgpool 2
pgpool -n &
注意:
接続プールを閉じる
pgpool stop
七.テストクラスタ
pgpool 1ノードにアクセスし、ノードにデータベースを作成し、schemaを作成し、schemaにテーブルを作成し、テーブルにデータを挿入します.これらのデータはすべて
3つのデータノード(datanode 1、datanode 2、datanode 3)に同期します.