第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

このページには機械翻訳が使用されている場合があります (詳細はこちら)。