付録A インスタンス HA を使用した退避の自動化
インスタンス HA を使用すると、OpenStack はコンピュートノードで障害が発生した場合に、そのノードからインスタンスを退避させるプロセスを自動化します。以下のプロセスは、コンピュートノードの障害発生時にトリガーされるイベントのシーケンスを説明しています。
-
コンピュートノードで障害が発生すると、
IPMIエージェントは 第 1 レベルのフェンシング を実行してノードを物理的にリセットし、電源オフの状態にします。オンラインのコンピュートからインスタンスを退避させると、データが破損したり、オーバークラウド上で全く同じインスタンスが複数実行されてしまう可能性があります。ノードの電源が切断されると、そのノードは フェンシングされた状態 と見なされます。 物理的な IPMI フェンシングの後には、
fence-novaエージェントが 第 2 レベルのフェンシング を実行して、フェンシングされたノードに“evacuate=yes”というクラスターのノードごとの属性をマークします。そのために、エージェントは以下のコマンドを実行します。attrd_updater -n evacuate -A name="evacuate" host="FAILEDHOST" value="yes"
$ attrd_updater -n evacuate -A name="evacuate" host="FAILEDHOST" value="yes"Copy to Clipboard Copied! Toggle word wrap Toggle overflow FAILEDHOST は、障害の発生したコンピュートノードのホスト名です。
-
nova-evacuateエージェントはバックグランドで常時実行され、クラスターに“evacuate=yes”属性のノードがあるかどうかをチェックします。nova-evacuateが、フェンシングされたノードにこの属性が付いていることを確認すると、エージェントは、「インスタンスの退避」に記載されている方法と同じプロセスを使用してノードの退避を開始します。 -
その一方で、障害が発生したノードが IPMI リセットによって起動している間には、
nova-compute-checkevacuateエージェントは待ち時間 (デフォルトでは 120 秒) が経過してから、nova-evacuateが退避を終了したかどうかをチェックします。終了していない場合には、同じ時間間隔で再チェックします。 -
インスタンスが完全に退避されたことを
nova-compute-checkevacuateエージェントが確認した後には、フェンシングされたノードが再びインスタンスをホストできるようにする別のプロセスがトリガーされます。