フェンシング構成の例
次の例では、実装できる様々なタイプのフェンシング構成について説明します。
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に接続されます。これらの変数を特定の環境に適した値に置き換えます。
Azure ARMフェンシング
高可用性Oracle LinuxクラスタがAzure仮想マシンでホストされている場合は、Azure Resource Manager (ARM)フェンシング・エージェントを使用する必要があります。
ノート:
Azureでホストされているシステムでは、PacemakerとCorosyncによるクラスタリングはAzure x86 VMでのみ使用できます。Azure ARMフェンシングを設定および構成するには:
-
クラスタ内の各ノードで、Azure SDK依存関係を持つパッケージをインストールします:
sudo dnf install fence-agents-azure-arm python3-azure-sdk
-
pcs
cluster
を設定したノードで、クラスタ内のノードごとに1回、次を実行します:sudo pcs stonith create resource_stonith_azure fence_azure_arm msi=true \ resourceGroup="Azure_resource_group" \ subscriptionId="Azure_subscription_id" \ pcmk_host_map="resolvable_host_name:Azure_VM_Name" \ power_timeout=240 \ pcmk_reboot_timeout=900 \ pcmk_monitor_timeout=120 \ pcmk_monitor_retries=4 \ pcmk_action_limit=3 \ op monitor interval=3600 \ --group fencegroup
前述のコマンドの実行時
-
resource_stonith_azureを、ノード固有の選択したリソース名に置き換えます。
たとえば、最初のサーバーに対してコマンドを実行する場合はリソース名resource_stonith_azure-1を、2番目のサーバーに対してコマンドを実行する場合はresource_stonith_azure-2を指定できます。
-
Azure_resource_groupを、VMおよびその他のリソースを保持するリソース・グループAzureポータル・リソース・グループの名前に置き換えます。
-
Azure_subscription_idをAzureのサブスクリプションIDに置き換えます。
-
resolvable_host_nameを、コマンドを実行するノードの解決可能なホスト名に置き換え、Azure_VM_NameをAzureのホストの名前に置き換えます。
ノート:
オプションpcmk_host_map
は、ホスト名とAzure VM名が同一でない場合にのみ必要です。 -
fencegroupを選択したグループ名に置き換えます。
-