Contents
方針
- 2台のLinuxをpacemakerを使用したClusterを構築します
- Cluster構成はVIPとPostfixを使った簡単な冗長システムを作ります
- pacemakerでの死活監視対象は、デフォルトゲートウェイ、VIP、Postfixとします
- 単純なClusterのみ構築するので、Resource Agentの監視は
start
stop
monitor
位しか設定しません(まずは動けばいい 🙂 )
環境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
+.254(GW) | | | +-------+-----------------+----------------+--------+ 192.168.1.0/24 | | | | | | | | |.50(VIP) | |.22 |.23 +-------------+ +-------------+ | | | | | | | | | |.1 .2| | | +--------------------+ | | | Interconnect | | | pacemaker01 | 192.168.3.0/24 | pacemaker02 | +-------------+ +-------------+ |
項目 | バージョン |
---|---|
CentOS | 7.3.1611 |
pacemaker | 1.1.15-11.el7_3.4 |
corosync | 2.4.0-4.el7 |
pcs | 0.9.152-10.el7.centos.3 |
検証環境のため、firewalld/SELinuxは無効化しています。
pacemaker cluster構築
pacemakerインストール
(1) pacemakerのインストールをします。
pacemaker01
1 2 |
[root@pacemaker01 ~]# yum install -y pacemaker pcs psmisc policycoreutils-python |
pacemaker02
1 2 |
[root@pacemaker02 ~]# yum install -y pacemaker pcs psmisc policycoreutils-python |
pcsdプロセス起動
(1) pcsd(クラスタ管理ツール)を起動します。
pacemaker01
1 2 3 4 |
[root@pacemaker01 ~]# systemctl start pcsd [root@pacemaker01 ~]# systemctl enable pcsd Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service. |
pacemaker02
1 2 3 4 |
[root@pacemaker02 ~]# systemctl start pcsd [root@pacemaker02 ~]# systemctl enable pcsd Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service. |
ステータス確認用アカウントパスワード設定
(1) pacemakerのステータスを確認するアカウントのパスワードを設定します。
pacemaker01
1 2 |
[root@pacemaker01 ~]# passwd hacluster |
pacemaker02
1 2 |
[root@pacemaker02 ~]# passwd hacluster |
(2) Clusterの認証設定をします。
1 2 3 4 5 6 |
[root@pacemaker01 ~]# pcs cluster auth pacemaker01 pacemaker02 Username: hacluster Password: pacemaker01: Authorized pacemaker02: Authorized |
Clusterの同期
(1) pacemaker01/02でClusterを構築して設定を同期します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@pacemaker01 ~]# pcs cluster setup --name postfix_cluster pacemaker01 pacemaker02 Destroying cluster on nodes: pacemaker01, pacemaker02... pacemaker01: Stopping Cluster (pacemaker)... pacemaker02: Stopping Cluster (pacemaker)... pacemaker01: Successfully destroyed cluster pacemaker02: Successfully destroyed cluster Sending cluster config files to the nodes... pacemaker01: Succeeded pacemaker02: Succeeded Synchronizing pcsd certificates on nodes pacemaker01, pacemaker02... pacemaker01: Success pacemaker02: Success Restarting pcsd on the nodes in order to reload the certificates... pacemaker01: Success pacemaker02: Success |
Clusterの起動
(1) 全ノードのClusterを起動します。
1 2 3 4 |
[root@pacemaker01 ~]# pcs cluster start --all pacemaker01: Starting Cluster... pacemaker02: Starting Cluster... |
(2) Clusterのステータスを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@pacemaker01 ~]# pcs status Cluster name: postfix_cluster WARNING: no stonith devices and stonith-enabled is not false Stack: corosync Current DC: pacemaker02 (version 1.1.15-11.el7_3.4-e174ec8) - partition with quorum Last updated: Mon Mar 27 01:06:41 2017 Last change: Mon Mar 27 01:06:38 2017 by hacluster via crmd on pacemaker02 2 nodes and 0 resources configured Online: [ pacemaker01 pacemaker02 ] No resources Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled |
Onlineに全ノードが存在していること
現状の確認
(1) Cluster設定の有効性を確認します。
1 2 3 4 5 6 |
[root@pacemaker01 ~]# crm_verify -L -V error: unpack_resources: Resource start-up disabled since no STONITH resources have been defined error: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option error: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity Errors found during check: config not valid |
stonithがデフォルトでは有効になっていることが分かります。
stonithは、確かスプリットブレインにならないようにIPMI経由でサーバを停止する機能だったかと思います。。。
仮想マシンでHA構成を組む時は必要ないので無効化します。
(2) stonithの無効化をします。
1 2 3 |
[root@pacemaker01 ~]# pcs property set stonith-enabled=false [root@pacemaker01 ~]# crm_verify -L -V |
何も表示されなくなったことを確認します。
Postfix Cluster構築
(1) pacemaker01/02のpostfixを停止します。
pacemaker01
1 2 3 4 |
[root@pacemaker01 ~]# systemctl stop postfix [root@pacemaker01 ~]# systemctl disable postfix Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service. |
pacemaker02
1 2 3 |
[root@pacemaker02 ~]# systemctl disable postfix Removed symlink /etc/systemd/system/multi-user.target.wants/postfix.service. |
Resource Agentの確認方法
ここで、pacemakerのResource Agent(RA)の確認方法についてメモっておきます。
RAの種類を確認したい場合
1 2 3 4 |
[root@pacemaker01 ~]# pcs resource list <- 全RAが表示される [root@pacemaker01 ~]# pcs resource list ocf <- ocfのRAが表示される [root@pacemaker01 ~]# pcs resource list lsb <- lsbのRAが表示される |
RAのマニュアルを見たい場合
ocf:heartbeat:IPaddr2
のマニュアルを見てみます。
これで、RAの設定内容が理解できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@pacemaker01 ~]# pcs resource describe ocf:heartbeat:IPaddr2 ocf:heartbeat:IPaddr2 - Manages virtual IPv4 and IPv6 addresses (Linux specific version) This Linux-specific resource manages IP alias IP addresses. It can add an IP alias, or remove one. In addition, it can implement Cluster Alias IP functionality if invoked as a clone resource. (snip) cidr_netmask: The netmask for the interface in CIDR format (e.g., 24 and not 255.255.255.0) If unspecified, the script will also try to determine this from the routing table. (snip) arp_interval: Specify the interval between unsolicited ARP packets in milliseconds. (snip) |
(2) VIPのRAを設定します。
1 2 3 4 |
[root@pacemaker01 ~]# pcs resource create VIP ocf:heartbeat:IPaddr2 \ > ip=192.168.2.50 nic=eno16780032 cidr_netmask=24 \ > op monitor interval=30s |
(3) PostfixのRAを設定します。
1 2 3 4 5 6 7 |
[root@pacemaker01 ~]# pcs resource create postfix ocf:heartbeat:postfix \ > binary=/usr/sbin/postfix \ > config_dir=/etc/postfix \ > op start interval=30s \ > op stop interval=30s \ > op monitor interval=30s |
(4) pingのRAを設定します。
1 2 3 4 5 6 7 8 |
[root@pacemaker01 ~]# pcs resource create ping ocf:pacemaker:ping \ name=gw_ping \ dampen=5s \ multiplier=1000 \ host_list=192.168.1.254 \ op monitor interval=10s \ --clone |
この状態だと、リソースが同ホストで起動せず、あっちゃこっちゃで起動してしまいます。
以下の例では、pacemaker01でVIPが起動していますがPostfixはpacemaker02で起動しています。
本来はpacemaker01で起動してほしいのに。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[root@pacemaker01 ~]# pcs status Cluster name: postfix_cluster Stack: corosync Current DC: pacemaker02 (version 1.1.15-11.el7_3.4-e174ec8) - partition with quorum Last updated: Mon Mar 27 02:52:10 2017 Last change: Mon Mar 27 02:50:28 2017 by root via cibadmin on pacemaker01 2 nodes and 4 resources configured Online: [ pacemaker01 pacemaker02 ] Full list of resources: VIP (ocf::heartbeat:IPaddr2): Started pacemaker01 postfix (ocf::heartbeat:postfix): Started pacemaker02 Clone Set: ping-clone [ping] Started: [ pacemaker01 pacemaker02 ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled |
と、言うことで INFINITY
スコアを使用して同一ホストで全て起動するようにします。
(5) INFINITY
スコアをpostfixへ付与します。
1 2 |
[root@pacemaker01 ~]# pcs constraint colocation add postfix with VIP INFINITY |
これで VIP
が起動しているホスト上でPostfixが起動するようになります。
1 2 3 4 5 6 7 8 9 |
[root@pacemaker01 ~]# pcs status (snip) Full list of resources: VIP (ocf::heartbeat:IPaddr2): Started pacemaker01 postfix (ocf::heartbeat:postfix): Started pacemaker01 Clone Set: ping-clone [ping] Started: [ pacemaker01 pacemaker02 ] |
あとは、切り替わるか試してみましょう。
うん。
だんだん思い出してきて 🙂
Heartbeat時代は、crmを使って設定していたけど、pcsの方が簡単に出来るようになってる感じがします。
プロセスの再起動に何回失敗したら切り替えとか、リソースグループ化とか色々と複雑なHA構成は、また別途やって思い出そう…。