付録B Ansible Playbook によって自動化される手動の手順
本書に記載している Ansible ベースのソリューションは、サポートされている方法で、インスタンス HA の手動設定手順を自動化するように設計されています。以下の付録には、参考情報として、このソリューションにより自動化されるステップを記載します。
各コンピュートノード上で Compute サービスを停止し、無効化します。
heat-admin@compute-n $ sudo systemctl stop openstack-nova-compute heat-admin@compute-n $ sudo systemctl disable openstack-nova-compute
heat-admin@compute-n $ sudo systemctl stop openstack-nova-compute heat-admin@compute-n $ sudo systemctl disable openstack-nova-computeCopy to Clipboard Copied! Toggle word wrap Toggle overflow pacemaker-remote に使用する認証キーを作成します。director ノードでこのステップを実行します。
stack@director # dd if=/dev/urandom of=~/authkey bs=4096 count=1
stack@director # dd if=/dev/urandom of=~/authkey bs=4096 count=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow このキーをコンピュートノードとコントローラーノードにコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンピュートノードで 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
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 saveCopy to Clipboard Copied! Toggle word wrap Toggle overflow コントローラーノードとコンピュートノードに 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)'
heat-admin@controller-n $ sudo rpm -qa | egrep \'(pacemaker|resource-agents)'Copy to Clipboard Copied! Toggle word wrap Toggle overflow overcloudrc ファイルを使用して NovaEvacuate Active/Passive リソースを作成し、
auth_url、username、tenant、passwordの値を指定します。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
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_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記共有ストレージを使用していない場合には、no_shared_storage=1 オプションを追加してください。詳しい説明は、「共有ストレージの例外」 を参照してください。
重要「2章環境の要件および前提条件」で前述したように、$OS_AUTH_URL は各コンピュートノードから到達可能である必要があります。この環境変数には、オーバークラウドの認証サービスか、内部の認証 URL を指定する必要があります。
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 ; doneheat-admin@controller-1 $ for i in $(sudo pcs status | grep IP | awk \'{ print $1 }\'); do sudo pcs constraint order start $i then nova-evacuate ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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 $controllersheat-admin@controller-1 $ controllers=$(sudo cibadmin -Q -o nodes | grep uname | sed s/.\*uname..// | awk -F\" \'{print $1}') heat-admin@controller-1 $ echo $controllersCopy to Clipboard Copied! Toggle word wrap Toggle overflow この一覧を使用して、それらのノードを
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 propertyheat-admin@controller-1 $ for controller in ${controllers}; do sudo pcs property set --node ${controller} osprole=controller ; done heat-admin@controller-1 $ sudo pcs propertyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新たに割り当てられたロールは、
Node attributesのセクション下に表示されるはずです。環境内にすでに存在する stonith デバイスの一覧を作成します。
heat-admin@controller-1 $ stonithdevs=$(sudo pcs stonith | awk \'{print $1}') heat-admin@controller-1 $ echo $stonithdevsheat-admin@controller-1 $ stonithdevs=$(sudo pcs stonith | awk \'{print $1}') heat-admin@controller-1 $ echo $stonithdevsCopy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンサービスをタグ付けし、一覧内の stonith デバイスをスキップして、上記で特定したコントローラーのみで実行されるようにします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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 --forceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドは、デフォルトのクラウドドメイン名 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
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=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンピュートノード用に 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;
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 Copied! Toggle word wrap Toggle overflow ここで、
-
N は各コンピュートノードを識別するための番号に置き換えます (例:
ipmilan-overcloud-compute-1、ipmilan-overcloud-compute-2など)。 - IPMILANUSER および IPMILANPW は、IPMI デバイスのユーザー名とパスワードに置き換えます。
-
N は各コンピュートノードを識別するための番号に置き換えます (例:
別の fence-nova stonith デバイスを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドは、デフォルトのクラウドドメイン名 localdomain を使用することを前提としています。カスタムのクラウドドメイン名を使用する場合には、domain= パラメーターの値として設定してください。
共有ストレージを使用していない場合には、no_shared_storage=1 オプションを追加してください。詳しい説明は、「共有ストレージの例外」 を参照してください。
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
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-cloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンピュートノードがフェンシング後に回復できるようにします。
heat-admin@controller-1 $ sudo pcs property set cluster-recheck-interval=1min
heat-admin@controller-1 $ sudo pcs property set cluster-recheck-interval=1minCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンピュートノードのリソースを作成して、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
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 stonithCopy to Clipboard Copied! Toggle word wrap Toggle overflow N は、各コンピュートノードを識別するための番号に置き換えます (例:
overcloud-compute-1、overcloud-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
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