Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第2章 インスタンス HA の仕組み

OpenStack では、インスタンス HA を使用して、障害が発生したコンピュートノードからのインスタンス退避プロセスを自動化しています。コンピュートノードの障害がトリガーとなり実施されるイベントのシーケンスを、以下の手順で説明します。

  1. 障害が発生すると、IPMI エージェントが 第一レイヤーのフェンシング を実施し、確実に電源オフの状態にするためにノードを物理的にリセットします。オンライン状態のコンピュートノードからインスタンスを退避させると、データが破損したりオーバークラウド上で複数の同一インスタンスが実行されたりする場合があります。ノードの電源がオフである場合、フェンシング済み とみなされます。
  2. IPMI による物理的なフェンシングの後に、fence-nova エージェントが 第二レイヤーのフェンシング を実施し、フェンシング済みのノードを “evacuate=yes” 属性でマーキングします (この属性は、クラスターのノードごとに設定する必要があります)。そのために、エージェントは以下のコマンドを実行します。

    $ attrd_updater -n evacuate -A name="evacuate" host="FAILEDHOST" value="yes"

    ここで、FAILEDHOST は障害が発生したコンピュートノードのホスト名です。

  3. nova-evacuate エージェントは常にバックグラウンドで動作し、クラスターに “evacuate=yes” 属性のノードがないか定期的に確認します。この属性がフェンシング済みノードに含まれることを nova-evacuate が検出すると、エージェントはノードからの全インスタンスの退避を開始します (退避のプロセスについては「インスタンスの退避」を参照)。
  4. 障害が発生したノードが IPMI によるリセットから復帰する間、そのノードの nova-compute プロセスが自動的に開始されます。ノードは前のステップでフェンシングされているので、Pacemaker が フェンシングを解除する まで新しいインスタンスを実行しません。
  5. コンピュートノードが再びオンライン状態にあることを Pacemaker が把握すると、ノードの compute-unfence-trigger リソースの起動を試み、force-down API の呼び出しを取り消してノードを再び有効な状態に設定します。

2.1. 退避させる特定インスタンスの指定

デフォルトでは、すべてのインスタンスを退避させますが、退避用のイメージまたはフレーバーをタグ付けすることもできます。

イメージをタグ付けするには、以下のコマンドを実行します。

$ openstack image set --tag evacuable ID-OF-THE-IMAGE

フレーバーをタグ付けするには、以下のコマンドを実行します。

$ nova flavor-key ID-OF-THE-FLAVOR set evacuable=true