5.2. オーバークラウドでのフェンシングのデプロイとテスト
フェンシングを設定するプロセスは、以下の段階で構成されます。
- STONITH および Pacemaker の状態を確認する。
-
fencing.yamlファイルを生成する。 - オーバークラウドを再デプロイし設定をテストする。
前提条件
director でコントローラーノードを登録した際に作成した nodes.json ファイルにアクセスできるようにしてください。このファイルは、デプロイメント中に生成する fencing.yaml ファイルに必須なインプットになります。
STONITH および Pacemaker の状態の確認
- それぞれのコントローラーノードに heat-admin ユーザーとしてログインします。
クラスターが動作状態にあることを確認します。
sudo pcs status
$ sudo pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow STONITH が無効になっていることを確認します。
sudo pcs property show
$ sudo pcs property showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
fencing.yaml 環境ファイルの生成
以下のいずれかのオプションを選択します。
IPMI または Red Hat Virtualization のフェンシングエージェントを使用する場合は、以下のコマンドを実行して
fencing.yaml環境ファイルを生成します。openstack overcloud generate fencing --output fencing.yaml nodes.json
$ openstack overcloud generate fencing --output fencing.yaml nodes.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記-
このコマンドにより、
iloおよびdracの電源管理情報が等価な IPMI 版に変換されます。 -
nodes.jsonファイルに、ノード上のいずれかのネットワークインターフェイス (NIC) の MAC アドレスが含まれていることを確認してください。詳しい情報は、「オーバークラウドノードの登録」を参照してください。
-
このコマンドにより、
Storage Block Device (SBD)、
fence_kdump、または Redfish などの別のフェンシングエージェントを使用する場合は、fencing.yamlファイルを手動で生成します。注記事前にプロビジョニングされたノードを使用する場合には、
fencing.yamlファイルも手動で作成する必要があります。
サポート対象のフェンシングエージェントについての詳しい情報は、「サポート対象のフェンシングエージェント」を参照してください。
(オプション) SBD フェンシング用追加パラメーターの設定
Storage Block Device(SBD)エージェントを使用してフェンシングをデプロイする場合は、fencing.yaml ファイルに以下のパラメーターを追加する必要があります。
parameter_defaults:
ExtraConfig:
pacemaker::corosync::enable_sbd: true
parameter_defaults:
ExtraConfig:
pacemaker::corosync::enable_sbd: true
デプロイメントの終了前にフェンシングが開始されるのを防ぐために、デフォルトでは watchdog_timeout の値は 10 秒です。以下のパラメーターを追加することで、この値を増やすことができます。
pacemaker::corosync::sbd_watchdog_timeout: [TIME_IN_SECONDS]
pacemaker::corosync::sbd_watchdog_timeout: [TIME_IN_SECONDS]
(オプション) マルチレイヤーフェンシングの設定
複雑なフェンシングのユースケースに対応するために、複数のフェンシングエージェントを設定することができます。たとえば、fence_kdump と共に IPMI フェンシングを設定することができ ます。Pacemaker が各メカニズムをトリガーする順番は、フェンシングエージェントの順序により決まります。
複数のフェンシングエージェントを定義するには、生成された fencing.yaml ファイルにレベル固有のパラメーターを追加します。
[PARAMETER] および [VALUE] を、フェンシングエージェントが必要とする実際のパラメーターおよび値に置き換えます。
オーバークラウドの再デプロイおよび設定のテスト
overcloud deployコマンドを実行し、コントローラーノードでフェンシングを設定するために生成したfencing.yamlファイルを含めます。openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e ~/templates/network-environment.yaml \ -e ~/templates/storage-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor Compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan \ -e fencing.yaml
openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e ~/templates/network-environment.yaml \ -e ~/templates/storage-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor Compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan \ -e fencing.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドにログインし、各コントローラーノードにフェンシングが設定されていることを確認します。
Pacemaker がリソースマネージャーとして設定されていることを確認します。
source stackrc nova list | grep controller ssh heat-admin@<controller-x_ip> sudo pcs status |grep fence
$ source stackrc $ nova list | grep controller $ ssh heat-admin@<controller-x_ip> $ sudo pcs status |grep fence stonith-overcloud-controller-x (stonith:fence_ipmilan): Started overcloud-controller-yCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、Pacemaker は、
fencing.yamlファイルで指定された各コントローラーノードに STONITH リソースを使用するように設定されています。注記制御するのと同じノードに
fence-resourceプロセスを設定することはできません。pcs stonith showコマンドを実行して、フェンシングリソースの属性を確認します。sudo pcs stonith show <stonith-resource-controller-x>
$ sudo pcs stonith show <stonith-resource-controller-x>Copy to Clipboard Copied! Toggle word wrap Toggle overflow STONITH 属性の値は、
fencing.yamlファイルの値と一致している必要があります。
コントローラーノードのフェンシングの確認
フェンシングが正しく機能するかどうかをテストするには、コントローラーノード上の全ポートを閉じ、サーバーを再起動してフェンシングをトリガーします。
コントローラーノードにログインします。
source stackrc nova list |grep controller ssh heat-admin@<controller-x_ip>
$ source stackrc $ nova list |grep controller $ ssh heat-admin@<controller-x_ip>Copy to Clipboard Copied! Toggle word wrap Toggle overflow root ユーザーに変更し、各ポートで
iptablesコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要このステップによりコントローラーノードへの接続がすべて切断されるので、サーバーがリブートします。
別のコントローラーノードから、Pacemaker のログファイルでフェンシングイベントの有無を確認します。
ssh heat-admin@<controller-x_ip> less /var/log/cluster/corosync.log
$ ssh heat-admin@<controller-x_ip> $ less /var/log/cluster/corosync.log (less): /fenc*Copy to Clipboard Copied! Toggle word wrap Toggle overflow STONITH サービスがコントローラーでフェンシングアクションを実行していれば、ログファイルにフェンシングイベントが記録されます。
-
数分待ってから、
pcs statusコマンドを実行して、再起動したコントローラーノードがクラスターで再び実行されていることを確認します。