LifeKeeper の Quorum/Witness (Majority) を導入してみた

こんにちは SCSK 野口です。

前回の記事 『LifeKeeper の Quorum/Witness (Storage) を導入してみた』 では、
Quorum/Witness(Storage)を実際に導入してみました。
まだ、お読みでない方は上記リンクからご覧ください。

本記事では、Quorum/Witness(Majority)を仮想マシン上のLinux環境に導入してみます。

おさらい

前々回の記事でもお伝えしましたが、Majority構成は多数決判定をするため、
ノードを奇数用意する必要があります。そのため、Majority構成は 3ノード以上から動作可能となってます。
また、majorityモードで使用可能な Witnessモードは以下となります。
・remote_verify
・none または off

QuorumとWitnessの構成が正しくないと、サーバが誤って停止するんだったよね!

 

導入

今回の構成について

今回も Virtual Box (仮想VM) を使用し、3台のサーバ (ノード) 構成にします。
前回の Active/Standby構成のクラスターに Witnessサーバを追加することによって、多数決を実現します。
3ノード以上の奇数台構成のクラスターであれば、追加のノードを用意する必要はありません。
Majority構成では、Quorum チェックを実行した後に、Witness チェックを実行します。

専用のWitnessノードは、複数のクラスターで共有することができるわよ!
でも、複数のクラスターで同時に障害が発生したら、

通常の構成よりもフェイルオーバーに時間がかかってしまうわ。

だから、専用のWitnessノードは1つのクラスターだけで使用することをお勧めしてるんだね!

 

動作環境

今回の Quorum/Witness (Majority)を導入した構成は以下となります。

 

前回の Active/Standby構成に Witnessサーバを導入するわ!

導入する際、Witnessサーバ間でもコミュニケーションパスを作成しなきゃだね!

導入手順

1.Witnessサーバをセットアップし、他のサーバとネットワーク通信ができることを確認します。
※ サーバセットアップの詳細は省かせていただきます。

新たに追加したWitnessサーバ間とも通信できているか、pingコマンドで疎通確認してみます。

[root@rhel75wit ~]# ping -c 3 rhel75n01
PING rhel75n01 (192.168.56.130) 56(84) bytes of data.
64 bytes from rhel75n01 (192.168.56.130): icmp_seq=1 ttl=64 time=1.13 ms
64 bytes from rhel75n01 (192.168.56.130): icmp_seq=2 ttl=64 time=2.61 ms
64 bytes from rhel75n01 (192.168.56.130): icmp_seq=3 ttl=64 time=1.37 ms
--- rhel75n01 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 1.134/1.707/2.618/0.651 ms

[root@rhel75wit ~]# ping -c 3 rhel75n02 
PING rhel75n02 (192.168.56.140) 56(84) bytes of data. 
64 bytes from rhel75n02 (192.168.56.140): icmp_seq=1 ttl=64 time=0.747 ms 
64 bytes from rhel75n02 (192.168.56.140): icmp_seq=2 ttl=64 time=2.91 ms 
64 bytes from rhel75n02 (192.168.56.140): icmp_seq=3 ttl=64 time=1.67 ms 

--- rhel75n02 ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2003ms 
rtt min/avg/max/mdev = 0.747/1.779/2.914/0.888 ms

2.Witnessサーバにも LifeKeeperをインストールします。

その際、「Use Quorum/Witness functions」を有効にし、Quorum/Wintness パッケージをインストールします。

3.Witnessサーバも含めた、すべてのノード間でコミュケーションパスを作成し、ALIVEであることを確認します。
LKWMCの場合は、左タスクバーの「コミュニケーションパス」を選択します。

コミュニケーションパスのステータスが「ALIVE」であることを確認します。

4.すべてのノードで Quorum/Witnessの設定を行います。(/etc/default/LifeKeeper)

初めに、1号機と2号機を下記のように設定していきます。

次に、Witnessサーバを下記のように設定します。

上記の手順が完了すると、そのクラスターでは Quorum/Witness 機能が動作するようになり、
フェイルオーバーが許可される前に、Quorum チェックおよび Witness チェックが行われます。
前回の Quorum Witness (Storage) と違い、初期化コマンドなどはありません。

Witnessノードリソースを持たないから、

QuorumチェックWitnessチェックを実施する必要はないわ!

 

だから、QUORUM_MODE と WITNESS_MODEを「none」にしてたんだね!

 

動作確認

1号機 (rhel75n01) 2号機 (rhel75n02) 間のコミュニケーションパスを切断しても
Witnessサーバの監視により「お互いが見えている状態か」、実際に確認してみます。

今回、1,2号機間のコミュニケーションパスで利用しているネットワークインターフェース
「 enp0s8(192.168.58.130)」を ifdownコマンドで無効化(シャットダウン)します。

[root@rhel75n01 ~]# ifdown enp0s8
デバイス 'enp0s8' が正常に切断されました。

ifdownコマンドを実行後、「リソースツリー」画面を確認すると、このように表示されます。

コミュニケーションパス (192.168.58.130)のステータスが「DEAD」であることを確認します。

1号機 (rhel75n01) 2号機 (rhel75n02)のログを確認すると、
お互いがサービスを継続していることが分かるメッセージがあります。

Aug 29 18:30:05 rhel75n01 lifekeeper[14514]: NOTIFY:event.comm_down:::010469:We do have quorum on comm_down to rhel75n02, continuing
Aug 29 18:30:02 rhel75n02 lifekeeper[10132]: NOTIFY:event.comm_down:::010469:We do have quorum on comm_down to rhel75n01, continuing

最後に 1号機で lcdstatus -eコマンドを実行し、仮想IPリソースが「ISP(正常稼働)」であることを確認します。

 

まとめ

今回は Quorum/Witness(Majority) を実際に導入してみましたがいかがでしたか。
導入する際は、以下の点に注意してください。

・導入する前に、ノード数が3以上で奇数になっていることを確認する。
・導入する際は、Witnessノード含めたコミュニケーションパスを作成し、 Aliveであることを確認する。
・動作確認では、1,2号機間のコミュパスに障害を起こしても、問題なく稼働し続けることを確認する。

 

タイトルとURLをコピーしました