Menu Close
Settings Close

Language and Page Formatting Options

5.2. オーバークラウドでのフェンシングのデプロイとテスト

フェンシングを設定するプロセスは、以下の段階で構成されます。

  1. STONITH および Pacemaker の状態を確認する。
  2. fencing.yaml ファイルを生成する。
  3. オーバークラウドを再デプロイし設定をテストする。

前提条件

director でコントローラーノードを登録した際に作成した nodes.json ファイルにアクセスできるようにしてください。このファイルは、デプロイメント中に生成する fencing.yaml ファイルに必須なインプットになります。

STONITH および Pacemaker の状態の確認

  1. それぞれのコントローラーノードに heat-admin ユーザーとしてログインします。
  2. クラスターが動作状態にあることを確認します。

    $ 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
  3. 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 (RHV) フェンシングエージェントを使用する場合は、次のコマンドを実行して fencing.yaml 環境ファイルを生成します。

    $ openstack overcloud generate fencing --output fencing.yaml nodes.json
    注記
    • このコマンドにより、ilo および drac の電源管理情報が等価な IPMI 版に変換されます。
    • nodes.json ファイルに、ノード上のいずれかのネットワークインターフェイス (NIC) の MAC アドレスが含まれていることを確認してください。詳しい情報は、「オーバークラウドノードの登録」を参照してください。
    • RHV を使用する場合は、UserVMManager など、仮想マシンを作成および起動する権限を持つロールを使用していることを確認してください。
  • Storage Block Device (SBD)、fence_kdump、または Redfish などの別のフェンシングエージェントを使用する場合は、fencing.yaml ファイルを手動で生成します。

    注記

    事前にプロビジョニングされたノードを使用する場合には、fencing.yaml ファイルも手動で作成する必要があります。

サポート対象のフェンシングエージェントについての詳しい情報は、「サポート対象のフェンシングエージェント」を参照してください。

オーバークラウドの再デプロイおよび設定のテスト

  1. 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
  2. オーバークラウドにログインし、各コントローラーノードにフェンシングが設定されていることを確認します。

    1. 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 プロセスを設定することはできません。

    2. pcs stonith show コマンドを実行して、フェンシングリソースの属性を確認します。

      $ sudo pcs stonith show <stonith-resource-controller-x>

      STONITH 属性の値は、fencing.yaml ファイルの値と一致している必要があります。

コントローラーノードのフェンシングの確認

フェンシングが正しく機能するかどうかをテストするには、コントローラーノード上の全ポートを閉じ、サーバーを再起動してフェンシングをトリガーします。

  1. コントローラーノードにログインします。

    $ source stackrc
    $ nova list |grep controller
    $ ssh heat-admin@<controller-x_ip>
  2. 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
    重要

    このステップによりコントローラーノードへの接続がすべて切断されるので、サーバーがリブートします。

  3. 別のコントローラーノードから、Pacemaker のログファイルでフェンシングイベントの有無を確認します。

    $ ssh heat-admin@<controller-x_ip>
    $ less /var/log/cluster/corosync.log
    (less): /fenc*

    STONITH サービスがコントローラーでフェンシングアクションを実行していれば、ログファイルにフェンシングイベントが記録されます。

  4. 数分待ってから、pcs status コマンドを実行して、再起動したコントローラーノードがクラスターで再び実行されていることを確認します。