5 フェンシング(stonith)の構成
この章では、フェンシング(stonith
)の構成方法を説明します。
フェンシング(stonith)構成について
フェンシング、つまりstonith
(Shoot The Other Node In The Head)は、ノードが応答しなくなった場合にデータを保護するために使用されます。ノードは、応答に失敗しても、データにアクセスしていることがあります。データが安全であることを確実にするために、フェンシングを使用して、元のノードが完全にオフラインになるまでライブ・ノードがデータにアクセスしないようにできます。このタスクを実行するには、ノードをオフラインにできるデバイスを構成する必要があります。この目的のために構成できる使用可能なフェンシング・エージェントが多数あります。一般に、stonith
は、クラスタを保護するためにノードを物理的にリブートまたはシャットダウンすることのできる特定のハードウェアおよびサービス・プロトコルに依存します。
次に、使用可能なフェンシング・エージェントのいくつかを使用する様々な構成を示します。これらの例では、ハードウェアに関して特定の想定を行い、影響を受けるハードウェアの設定、構成および使用方法をすでに理解していることを前提にしています。次の例は、基本的なガイダンスのみを目的としています。このドキュメントで説明する概念をよく理解するには、上位のドキュメントも参照してください。
次のいずれかの構成に進む前に、stonith
がクラスタ構成に対して有効になっていることを確認します。
sudo pcs property set stonith-enabled=true
stonith
を構成した後、次のコマンドを実行して構成を確認し、正しく設定されていることを確認します。
sudo pcs stonith config
sudo pcs cluster verify --full
stonith
構成のステータスを確認するには、次のコマンドを実行します。
sudo pcs stonith
クラスタのステータスを確認するには、次のコマンドを実行します。
sudo pcs status
フェンシング構成の例
次の例では、実装できる様々なタイプのフェンシング構成について説明します。
IPMI LANフェンシング
Intelligent Platform Management Interface (IPMI)は、ホスト・システムのハードウェアおよびファームウェアの管理機能を提供するサブシステムとのインタフェースであり、システムのオペレーティング・システムにアクセスする必要なく、専用ネットワーク経由でシステムの電源を切断後ただちに投入する機能を備えています。stonith
がIPMI LAN全体で実行されるように、クラスタのfence_ipmilan
フェンシング・エージェントを構成できます。
システムがIPMI向けに構成されている場合は、クラスタ内のいずれかのノードで次のコマンドを実行して、ipmilan
フェンシング・エージェントを有効にし、両方のノードにstonith
を構成できます。次に例を示します。
sudo pcs stonith create ipmilan_n1_fencing fence_ipmilan pcmk_host_list=node1 delay=5 \
ipaddr=203.0.113.1 login=root passwd=password lanplus=1 op monitor interval=60s
sudo pcs stonith create ipmilan_n2_fencing fence_ipmilan pcmk_host_list=node2 \
ipaddr=203.0.113.2 login=root passwd=password lanplus=1 op monitor interval=60s
この例では、node1は、IPアドレス203.0.113.1にIPMI LANインタフェースが構成されているホストです。node2という名前のホストには、IP 203.0.113.2上に構成されているIPMI LANインタフェースがあります。両方のシステムのIPMIログイン用のroot
ユーザー・パスワードは、この例ではpasswordとして指定されています。各インスタンスにおいて、これらの構成変数を特定の環境に適した値に置き換える必要があります。
遅延オプションは1つのノードにのみ設定する必要があることに注意してください。この設定により、フェンス競合状態のまれなケースで、1つのノードのみが強制終了され、もう一方は実行が続行されるようになります。このオプションを設定しないと、どちらのノードも自分が唯一残っているノードであると想定し、同時にお互いをリセットする可能性があります。
注意:
IPMI LANエージェントは、IPMIサブシステムのログイン資格証明をプレーン・テキストで公開します。Pacemaker構成およびツールにアクセスできるユーザーがこれらの資格証明および関連する基礎となるサブシステムにもアクセスできることを、セキュリティ・ポリシーで保証する必要があります。
SCSIフェンシング
SCSIフェンシング・エージェントは、ストレージレベルのフェンシングを提供するために使用されます。この構成では、SCSI-3 Persistent Reservation (PR)を使用して、ストレージ・リソースが2つのノードで同時に書き込まれないようにします。ウォッチドッグ・サービスと組み合せて使用すると、ノードが予約なしでSCSIリソースにアクセスしようとした場合に、stonith
を使用してそのノードを自動的にリセットできます。
この方法で環境を構成するには:
-
次の例に示すように、ウォッチドッグ・サービスを両方のノードにインストールし、指定された
fence_scsi_check
スクリプトをウォッチドッグ構成にコピーしてから、サービスを有効にします。sudo dnf install watchdog sudo cp /usr/share/cluster/fence_scsi_check /etc/watchdog.d/ sudo systemctl enable --now watchdog
-
両方のノードで、
iscsi-initiator-utils
パッケージで提供されるiscsid
サービスを有効にします。sudo dnf install -y iscsi-initiator-utils sudo systemctl enable --now iscsid
-
ウォッチドッグ・サービスと
iscsid
サービスを使用して両方のノードを構成した後、いずれかのクラスタ・ノードでfence_scsi
フェンシング・エージェントを構成し、iSCSIターゲットなどの共有ストレージ・デバイスをモニターできます。次に例を示します。sudo pcs stonith create scsi_fencing fence_scsi pcmk_host_list="node1 node2" \ devices="/dev/sdb" meta provides="unfencing"
この例では、node1とnode2はクラスタ内のノードのホスト名を表し、/dev/sdbは共有ストレージ・デバイスです。これらの変数を特定の環境に適した値に置き換えます。
SBDフェンシング
Storage Based Death (SBD)デーモンは、システム上で実行され、共有ストレージをモニターできます。SBDデーモンは、メッセージ・システムを使用してクラスタのヘルスを追跡できます。適切なフェンシング・エージェントがstonith
を実装する必要があると判断した場合、SBDはリセットをトリガーすることもできます。
ノート:
SBDフェンシングは、Oracle Cloud Infrastructureで実行されているOracle Linux HAクラスタで使用される方法です。詳細は、Oracle Cloud Infrastructure (OCI)での高可用性クラスタの作成を参照してください。
SBDフェンシングを設定および構成するには:
-
いずれかのノードで次のコマンドを実行して、クラスタを停止します。
sudo pcs cluster stop --all
-
各ノードで、SBDデーモンをインストールして構成します。
sudo dnf install sbd
-
sbd
systemdサービスを有効にします。sudo systemctl enable sbd
sbd
systemdサービスは、pacemaker
サービスの依存関係に従って自動的に起動および停止されるため、このサービスを個別に実行する必要はありません。sbd
systemdサービスを起動または停止しようとすると失敗し、依存関係サービスとして制御されていることを示すエラーが返されます。 -
/etc/sysconfig/sbd
ファイルを編集し、SBD_DEVICE
パラメータを設定して共有ストレージ・デバイスを識別します。たとえば、共有ストレージ・デバイスが/dev/sdcで使用可能な場合は、ファイルに次の行が含まれていることを確認してください。SBD_DEVICE="/dev/sdc"
-
いずれかのノードで、共有ストレージ・デバイスにSBDメッセージング・レイアウトを作成し、そのレイアウトが設定されていることを確認します。たとえば、/dev/sdcにある共有ストレージ・デバイスでメッセージングを設定して検証するには、次のコマンドを実行します。
sudo sbd -d /dev/sdc create sudo sbd -d /dev/sdc list
-
最後に、クラスタを起動し、共有ストレージ・デバイスの
fence_sbd
フェンシング・エージェントを構成します。たとえば、共有ストレージ・デバイス/dev/sdcを構成するには、いずれかのノードで次のコマンドを実行します。sudo pcs cluster start --all sudo pcs stonith create sbd_fencing fence_sbd devices=/dev/sdc
IF-MIBフェンシング
IF-MIBフェンシングは、SNMPを使用してイーサネット・ネットワーク・スイッチのIF-MIBにアクセスし、さらにスイッチ上のポートをシャットダウンします。これにより、ホストは実質的にオフラインになります。この構成では、ホストがネットワークから切断されている間、ホストは実行中のままになります。イーサネット接続が停止しても、ファイバチャネル接続またはインフィニバンド接続はそのまま残る可能性があることに注意してください。つまり、これらの接続で使用可能なデータは引き続き危険にさらされる可能性があります。したがって、このフェンシング方法をフォールバック・フェンシング・メカニズムとして構成することを検討してください。複数のフェンシング・エージェントを組み合せてstonith
の成功を最大限にする方法の詳細は、フェンシング・レベルの構成を参照してください。
IF-MIBフェンシングを構成するには:
-
少なくともSNMP v2cのスイッチを構成し、SNMP SETメッセージが有効になっていることを確認します。たとえば、Oracleスイッチでは、ILOM CLIを使用して次のコマンドを実行できます。
sudo set /SP/services/snmp/ sets=enabled sudo set /SP/services/snmp/ v2c=enabled
-
クラスタ内のいずれかのノードで、次の例に示すように、環境内の各ノードに
fence_ifmib
フェンシング・エージェントを構成します:sudo pcs stonith create ifmib_n1_fencing fence_ifmib pcmk_host_list=node1 \ ipaddr=203.0.113.10 community=private port=1 delay=5 op monitor interval=60s sudo pcs stonith create ifmib_n2_fencing fence_ifmib pcmk_host_list=node2 \ ipaddr=203.0.113.10 community=private port=2 op monitor interval=60s
この例では、SNMP IF-MIBスイッチはIPアドレス203.0.113.10でアクセスでき、node1ホストはスイッチ上のポート1に接続され、node2ホストはスイッチ上のポート2に接続されます。これらの変数を特定の環境に適した値に置き換えます。
フェンシング・レベルの構成
複数のフェンシング・エージェントを構成している場合は、異なるフェンシング・レベルを設定できます。フェンシング・レベルを使用すると、様々なフェンシング方法に優先順位を付けることができ、デフォルトのフェンシング・メカニズムが失敗した場合のフォールバック・オプションに有用なメカニズムを提供できます。
各フェンシング・レベルは、レベル1から昇順で試行されます。特定のレベル用に構成されているフェンシング・エージェントが失敗すると、次のレベルのフェンシング・エージェントが試行される、というようになります。
たとえば、レベル1でIPMI-LANフェンシングを構成し、レベル2オプションとしてIF-MIBフェンシングにフォールバックする場合があります。フェンシング構成の例の構成例を使用して、いずれかのノードで次のコマンドを実行し、構成済エージェントごとにフェンシング・レベルを設定します。
sudo pcs stonith level add 1 node1 ipmilan_n1_fencing
sudo pcs stonith level add 1 node2ipmilan_n2_fencing
sudo pcs stonith level add 2 node1ifmib_n1_fencing
sudo pcs stonith level add 2 node2ifmib_n2_fencing