
説明
この記事では、Pacemaker、Corosyncを使用してPostgreSQLのアクティブ/パッシブクラスターをセットアップする例を説明します。 ディスクサブシステムとして、ストレージシステム(CSV)のディスクが考慮されます。 このソリューションは、MicrosoftのWindowsフェールオーバークラスターに似ています。
技術的な詳細:
オペレーティングシステムのバージョン-CentOS 7.1
ペースメーカーパッケージのバージョンは1.1.13-10です。
Pcsパッケージバージョン-0.9.143
PostgreSQLバージョン-9.4.6
サーバーとして(2pcs)-Ironサーバー2 * 12 CPU / 94GBメモリ
CSV(クラスター共有ボリューム)として-クラスMid-Range Hitachi RAID 1 + 0の配列クラスターノードの準備
両方のホストで/ etc / hostsを編集し、互いのホストを短い名前で表示できるようにします。例:
[root@node1 ~]
また、SSHキーを介してサーバー間で交換を行い、ホスト間でキーを分散します。
その後、両方のサーバーが短い名前でお互いを見るようにする必要があります。
[root@node1 ~]
パッケージをインストールしてクラスターを作成する
両方のホストに必要なパッケージをインストールして、クラスターを組み立てます。
yum install -y pacemaker pcs psmisc policycoreutils-python
次に、pcsサービスを開始してオンにします。
systemctl start pcsd.service systemctl enable pcsd.service
クラスターを管理するには、特別なユーザーが必要です。両方のホストで作成します。
passwd hacluster Changing password for user hacluster. New password: Retype new password: passwd: all authentication tokens updated successfully. Pacemaker|Corosync
認証を確認するには、最初のノードから次のコマンドを実行する必要があります。
[root@node1 ~]
次に、クラスターを起動し、起動ステータスを確認します。
pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore pcs cluster start --all pcs status --all
クラスターの状態に関する結論は次のようになります。
[root@node1 ~]
それでは、クラスタ内のリソースのセットアップに移りましょう。
CSVの設定
最初のホストに移動して、LVMを構成します。
pvcreate /dev/sdb vgcreate shared_vg /dev/sdb lvcreate -l 100%FREE -n ha_lv shared_vg mkfs.ext4 /dev/shared_vg/ha_lv
ディスクの準備ができました。 ここで、LVMの自動マウントルールがディスクに適用されていないことを確認する必要があります。 これは、両方のホストで/etc/lvm/lvm.confファイル(アクティベーションセクション)に変更を加えることで実行されます。
activation {.....
initramを更新し、ノードをリロードします。
dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r) shutdown -h now
クラスターへのリソースの追加
次に、クラスター内にリソースグループ(ファイルシステムとIPを含むディスク)を作成する必要があります。
pcs resource create virtual_ip IPaddr2 ip=10.1.66.25 cidr_netmask=24 --group PGCLUSTER pcs resource create DATA ocf:heartbeat:LVM volgrpname=shared_vg exclusive=true --group PGCLUSTER pcs resource create DATA_FS Filesystem device="/dev/shared_vg/ha_lv" directory="/data" fstype="ext4" force_unmount="true" fast_stop="1" --group PGCLUSTER pcs resource create pgsql pgsql pgctl="/usr/pgsql-9.4/bin/pg_ctl" psql="/usr/pgsql-9.4/bin/psql" pgdata="/data" pgport="5432" pgdba="postgres" node_list="node1 node2" op start timeout="60s" interval="0s" on-fail="restart" op monitor timeout="60s" interval="4s" on-fail="restart" op promote timeout="60s" interval="0s" on-fail="restart" op demote timeout="60s" interval="0s" on-fail="stop" op stop timeout="60s" interval="0s" on-fail="block" op notify timeout="60s" interval="0s" --group PGCLUSTER
すべてのリソースには1つのグループがあることに注意してください。
また、dafaultクラスターパラメーターを修正することを忘れないでください。
failure-timeout=60s migration-threshold=1
最終的に、次のように表示されます。
[root@node1 ~]
リソースグループがあるホスト上のPostgreSQLサービスのステータスを確認します。
[root@node2~]
パフォーマンスを確認する
node2でのサービスドロップをシミュレートし、何が起こるかを確認します。
[root@node2 ~]
node1のステータスを確認します。
[root@node1 ~]
ご覧のとおり、node1のサービスは既に素晴らしい感じです。
ToDO:グループ内でリソースの依存関係を作成...
参照:
clusterlabs.org