5.2. オーバークラウドでのフェンシングのデプロイとテスト
フェンシングを設定するプロセスは、以下の段階で構成されます。
- STONITH および Pacemaker の状態を確認する。
-
fencing.yaml
ファイルを生成する。 - オーバークラウドを再デプロイし設定をテストする。
前提条件
director でコントローラーノードを登録した際に作成した nodes.json
ファイルにアクセスできるようにしてください。このファイルは、デプロイメント中に生成する fencing.yaml
ファイルに必須なインプットになります。
STONITH および Pacemaker の状態の確認
- それぞれのコントローラーノードに heat-admin ユーザーとしてログインします。
クラスターが動作状態にあることを確認します。
$ sudo pcs status
出力例:
Cluster name: openstackHA Last updated: Wed Jun 24 12:40:27 2015 Last change: Wed Jun 24 11:36:18 2015 Stack: corosync Current DC: lb-c1a2 (2) - partition with quorum Version: 1.1.12-a14efad 3 Nodes configured 141 Resources configured
STONITH が無効になっていることを確認します。
$ sudo pcs property show
出力例:
Cluster Properties: cluster-infrastructure: corosync cluster-name: openstackHA dc-version: 1.1.12-a14efad have-watchdog: false stonith-enabled: false
fencing.yaml
環境ファイルの生成
以下のいずれかのオプションを選択します。
IPMI または Red Hat Virtualization のフェンシングエージェントを使用する場合は、以下のコマンドを実行して
fencing.yaml
環境ファイルを生成します。$ openstack overcloud generate fencing --output fencing.yaml nodes.json
注記-
このコマンドにより、
ilo
およびdrac
の電源管理情報が等価な IPMI 版に変換されます。 -
nodes.json
ファイルに、ノード上のいずれかのネットワークインターフェイス (NIC) の MAC アドレスが含まれていることを確認してください。詳しい情報は、「オーバークラウドノードの登録」を参照してください。
-
このコマンドにより、
Storage Block Device (SBD)、
fence_kdump
、または Redfish などの別のフェンシングエージェントを使用する場合は、fencing.yaml
ファイルを手動で生成します。注記事前にプロビジョニングされたノードを使用する場合には、
fencing.yaml
ファイルも手動で作成する必要があります。
サポート対象のフェンシングエージェントについての詳しい情報は、「サポート対象のフェンシングエージェント」を参照してください。
オーバークラウドの再デプロイおよび設定のテスト
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
オーバークラウドにログインし、各コントローラーノードにフェンシングが設定されていることを確認します。
Pacemaker がリソースマネージャーとして設定されていることを確認します。
$ 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-y
この例では、Pacemaker は、
fencing.yaml
ファイルで指定された各コントローラーノードに STONITH リソースを使用するように設定されています。注記制御するのと同じノードに
fence-resource
プロセスを設定することはできません。pcs stonith show
コマンドを実行して、フェンシングリソースの属性を確認します。$ sudo pcs stonith show <stonith-resource-controller-x>
STONITH 属性の値は、
fencing.yaml
ファイルの値と一致している必要があります。
コントローラーノードのフェンシングの確認
フェンシングが正しく機能するかどうかをテストするには、コントローラーノード上の全ポートを閉じ、サーバーを再起動してフェンシングをトリガーします。
コントローラーノードにログインします。
$ source stackrc $ nova list |grep controller $ ssh heat-admin@<controller-x_ip>
root ユーザーに変更し、各ポートで
iptables
コマンドを実行します。$ sudo -i iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT && iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT && iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5016 -j ACCEPT && iptables -A INPUT -p udp -m state --state NEW -m udp --dport 5016 -j ACCEPT && iptables -A INPUT ! -i lo -j REJECT --reject-with icmp-host-prohibited && iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT && iptables -A OUTPUT -p tcp --sport 5016 -j ACCEPT && iptables -A OUTPUT -p udp --sport 5016 -j ACCEPT && iptables -A OUTPUT ! -o lo -j REJECT --reject-with icmp-host-prohibited
重要このステップによりコントローラーノードへの接続がすべて切断されるので、サーバーがリブートします。
別のコントローラーノードから、Pacemaker のログファイルでフェンシングイベントの有無を確認します。
$ ssh heat-admin@<controller-x_ip> $ less /var/log/cluster/corosync.log (less): /fenc*
STONITH サービスがコントローラーでフェンシングアクションを実行していれば、ログファイルにフェンシングイベントが記録されます。
-
数分待ってから、
pcs status
コマンドを実行して、再起動したコントローラーノードがクラスターで再び実行されていることを確認します。