付録B Ansible Playbook によって自動化される手動の手順


本書に記載している Ansible ベースのソリューションは、サポートされている方法で、インスタンス HA の手動設定手順を自動化するように設計されています。以下の付録には、参考情報として、このソリューションにより自動化されるステップを記載します。

  1. 各コンピュートノード上で Compute サービスを停止し、無効化します。

    heat-admin@compute-n $ sudo systemctl stop openstack-nova-compute
    heat-admin@compute-n $ sudo systemctl disable openstack-nova-compute
    Copy to Clipboard Toggle word wrap
  2. pacemaker-remote に使用する認証キーを作成します。director ノードでこのステップを実行します。

    stack@director # dd if=/dev/urandom of=~/authkey bs=4096 count=1
    Copy to Clipboard Toggle word wrap
  3. このキーをコンピュートノードとコントローラーノードにコピーします。

    stack@director # scp authkey heat-admin@node-n:~/
    stack@director # ssh heat-admin@node-n:~/
    heat-admin@node-n $ sudo mkdir -p --mode=0750 /etc/pacemaker
    heat-admin@node-n $ sudo chgrp haclient /etc/pacemaker
    heat-admin@node-n $ sudo mv authkey /etc/pacemaker/
    heat-admin@node-n $ sudo chown root:haclient /etc/pacemaker/authkey
    Copy to Clipboard Toggle word wrap
  4. コンピュートノードで pacemaker-remote サービスを有効化し、それに応じてファイアウォールを設定します。

    heat-admin@compute-n $ sudo systemctl enable pacemaker_remote
    heat-admin@compute-n $ sudo systemctl start pacemaker_remote
    heat-admin@compute-n $ sudo iptables -I INPUT 11 -p tcp --dport 3121 -j ACCEPT ; /sbin/service iptables save
    Copy to Clipboard Toggle word wrap
  5. コントローラーノードとコンピュートノードに pacemaker (1.1.12-22.el7_1.4.x86_64) および resource-agents (3.9.5-40.el7_1.5.x86_64) パッケージの必要なバージョンがインストールされていることを確認します。

    heat-admin@controller-n $ sudo rpm -qa | egrep \'(pacemaker|resource-agents)'
    Copy to Clipboard Toggle word wrap
  6. overcloudrc ファイルを使用して NovaEvacuate Active/Passive リソースを作成し、auth_urlusernametenantpassword の値を指定します。

    stack@director # scp overcloudrc heat-admin@controller-1:~/
    heat-admin@controller-1 $ . ~/overcloudrc
    heat-admin@controller-1 $ sudo pcs resource create nova-evacuate ocf:openstack:NovaEvacuate auth_url=$OS_AUTH_URL username=$OS_USERNAME password=$OS_PASSWORD tenant_name=$OS_TENANT_NAME
    Copy to Clipboard Toggle word wrap
    注記

    共有ストレージを使用していない場合には、no_shared_storage=1 オプションを追加してください。詳しい説明は、「共有ストレージの例外」 を参照してください。

    重要

    2章環境の要件および前提条件」で前述したように、$OS_AUTH_URL は各コンピュートノードから到達可能である必要があります。この環境変数には、オーバークラウドの認証サービスか、内部の認証 URL を指定する必要があります。

  7. nova-evacuate が Floating IP リソース、Image サービス (glance)、OpenStack Networking サービス (neutron)、Compute サービス(nova) の後に起動されることを確認します。

    heat-admin@controller-1 $ for i in $(sudo pcs status | grep IP | awk \'{ print $1 }\'); do sudo pcs constraint order start $i then nova-evacuate ; done
    Copy to Clipboard Toggle word wrap
  8. cibadmin データを使用して現在のコントローラー一覧を作成します。

    heat-admin@controller-1 $ controllers=$(sudo cibadmin -Q -o nodes | grep uname | sed s/.\*uname..// | awk -F\" \'{print $1}')
    heat-admin@controller-1 $ echo $controllers
    Copy to Clipboard Toggle word wrap
  9. この一覧を使用して、それらのノードを osprole=controller プロパティーでコントローラーとしてタグ付けします。

    heat-admin@controller-1 $ for controller in ${controllers}; do sudo pcs property set --node ${controller} osprole=controller ; done
    heat-admin@controller-1 $ sudo pcs property
    Copy to Clipboard Toggle word wrap

    新たに割り当てられたロールは、Node attributes のセクション下に表示されるはずです。

  10. 環境内にすでに存在する stonith デバイスの一覧を作成します。

    heat-admin@controller-1 $ stonithdevs=$(sudo pcs stonith | awk \'{print $1}')
    heat-admin@controller-1 $ echo $stonithdevs
    Copy to Clipboard Toggle word wrap
  11. コントロールプレーンサービスをタグ付けし、一覧内の stonith デバイスをスキップして、上記で特定したコントローラーのみで実行されるようにします。

    heat-admin@controller-1 $ for i in $(sudo cibadmin -Q --xpath //primitive --node-path | tr ' ' \'\n' | awk -F "id=\'" '{print $2}' | awk -F "\'" '{print $1}' | uniq); do
        found=0
        if [ -n "$stonithdevs" ]; then
            for x in $stonithdevs; do
                if [ $x = $i ]; then
                    found=1
                fi
    	    done
        fi
        if [ $found = 0 ]; then
            sudo pcs constraint location $i rule resource-discovery=exclusive score=0 osprole eq controller
        fi
    done
    Copy to Clipboard Toggle word wrap
  12. nova-compute リソースを pacemaker 内に設定します。

    heat-admin@controller-1 $ . /home/heat-admin/overcloudrc
    heat-admin@controller-1 $ sudo pcs resource create nova-compute-checkevacuate ocf:openstack:nova-compute-wait auth_url=$OS_AUTH_URL username=$OS_USERNAME password=$OS_PASSWORD tenant_name=$OS_TENANT_NAME domain=localdomain op start timeout=300 --clone interleave=true --disabled --force
    Copy to Clipboard Toggle word wrap
    注記

    このコマンドは、デフォルトのクラウドドメイン名 localdomain を使用することを前提としています。カスタムのクラウドドメイン名を使用する場合には、domain= パラメーターの値として設定してください。

    重要

    2章環境の要件および前提条件」で前述したように、$OS_AUTH_URL は各コンピュートノードから到達可能である必要があります。この環境変数には、オーバークラウドの認証サービスか、内部の認証 URL を指定する必要があります。

    heat-admin@controller-1 $ sudo pcs constraint location nova-compute-checkevacuate-clone rule resource-discovery=exclusive score=0 osprole eq compute
    heat-admin@controller-1 $ sudo pcs resource create nova-compute systemd:openstack-nova-compute op start timeout=60s --clone interleave=true --disabled --force
    heat-admin@controller-1 $ sudo pcs constraint location nova-compute-clone rule resource-discovery=exclusive score=0 osprole eq compute
    heat-admin@controller-1 $ sudo pcs constraint order start nova-compute-checkevacuate-clone then nova-compute-clone require-all=true
    heat-admin@controller-1 $ sudo pcs constraint order start nova-compute-clone then nova-evacuate require-all=false
    Copy to Clipboard Toggle word wrap
  13. コンピュートノード用に stonith デバイスを追加します。各コンピュートノードで以下のコマンドを実行します。

    heat-admin@controller-1 $ sudo pcs stonith create ipmilan-overcloud-compute-N  fence_ipmilan pcmk_host_list=overcloud-compute-0 ipaddr=10.35.160.78 login=IPMILANUSER passwd=IPMILANPW lanplus=1 cipher=1 op monitor interval=60s;
    Copy to Clipboard Toggle word wrap

    ここで、

    • N は各コンピュートノードを識別するための番号に置き換えます (例: ipmilan-overcloud-compute-1ipmilan-overcloud-compute-2 など)。
    • IPMILANUSER および IPMILANPW は、IPMI デバイスのユーザー名とパスワードに置き換えます。
  14. 別の fence-nova stonith デバイスを作成します。

    heat-admin@controller-1 $ . overcloudrc
    heat-admin@controller-1 $ sudo pcs stonith create fence-nova fence_compute \
                                    auth-url=$OS_AUTH_URL \
                                    login=$OS_USERNAME \
                                    passwd=$OS_PASSWORD \
                                    tenant-name=$OS_TENANT_NAME \
                                    record-only=1 --force \
                                    domain=localdomain
    Copy to Clipboard Toggle word wrap
    注記

    このコマンドは、デフォルトのクラウドドメイン名 localdomain を使用することを前提としています。カスタムのクラウドドメイン名を使用する場合には、domain= パラメーターの値として設定してください。

    共有ストレージを使用していない場合には、no_shared_storage=1 オプションを追加してください。詳しい説明は、「共有ストレージの例外」 を参照してください。

  15. fence-nova に必要な制約を設定します。

    heat-admin@controller-1 $ sudo pcs constraint location fence-nova rule resource-discovery=never score=0 osprole eq controller
    heat-admin@controller-1 $ sudo pcs constraint order promote galera-master then fence-nova require-all=false
    heat-admin@controller-1 $ sudo pcs constraint order start fence-nova then nova-compute-clone
    Copy to Clipboard Toggle word wrap
  16. コンピュートノードがフェンシング後に回復できるようにします。

    heat-admin@controller-1 $ sudo pcs property set cluster-recheck-interval=1min
    Copy to Clipboard Toggle word wrap
  17. コンピュートノードのリソースを作成して、stonith level 1 にノードの物理フェンスデバイスと fence-nova の両方が含まれるように設定します。そのためには、各コンピュートノードに対して以下のコマンドを実行します。

    heat-admin@controller-1 $ sudo pcs resource create overcloud-compute-N ocf:pacemaker:remote reconnect_interval=60 op monitor interval=20
    heat-admin@controller-1 $ sudo pcs property set --node overcloud-compute-N osprole=compute
    heat-admin@controller-1 $ sudo pcs stonith level add 1 overcloud-compute-N ipmilan-overcloud-compute-N,fence-nova
    heat-admin@controller-1 $ sudo pcs stonith
    Copy to Clipboard Toggle word wrap

    N は、各コンピュートノードを識別するための番号に置き換えます (例: overcloud-compute-1overcloud-compute-2 など)。これらの識別番号を使用して、前のステップで作成した stonith デバイスに各コンピュートノードを照合します (例: overcloud-compute-1 および ipmilan-overcloud-compute-1)。

環境が安定するまでしばらく待ってから、失敗したリソースをクリーンアップします。

heat-admin@controller-1 $ sleep 60
heat-admin@controller-1 $ sudo pcs resource cleanup
heat-admin@controller-1 $ sudo pcs status
heat-admin@controller-1 $ sudo pcs property set stonith-enabled=true
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat