詳細(K2HR3 OpenStack Notification Listener)
K2HR3 OpenStack Notification Listenerは、OpenStackとK2HR3システムとデータを同期させる常駐プロセスです。OpenStackの各サービスからの通知メッセージを、メッセージングバックエンド経由で受け取ります。
ここでは、K2HR3 OpenStack Notification Listenerの動作を詳細に説明します。
OpenStack Notification Listener
最初にOpenStack Notification Listenerについて説明します。
OpenStack Notification Listenerは、oslo.messagingというライブラリを使って作成された通知メッセージを処理するプログラムです。次のように動作します。
- OpenStackの各サービスは、OpenStack利用者の操作などを契機として、通知メッセージをメッセージングバックエンドに送信します。
- メッセージングバックエンドは、通知メッセージを、指定されたキューに書き込みます。
- メッセージは、重複してキューに書き込まれることがありません。
- 指定されたキューをリスンしているOpenStack Notification Listenerに、届いたメッセージが渡されます。
- 複数のリスナーがキューをリスンしてる場合、一つのリスナーがランダムに選択され、メッセージが渡されます。
- OpenStack Notification Listenerは、届いたメッセージに応じて、あらかじめ定義された関数を呼び出し、メッセージを処理します。
- ある一つのメッセージに対する処理は、一つのリスナープロセスによって、一回のみ実行されます。
メッセージを作成している通知ドライバについて説明します。
- OpenStackの各サービスは、oslo.messagingの通知ドライバを使ってメッセージを作成します。
- OpenStack Notification Listenerが処理するメッセージは、messaging と messagingv2 という通知ドライバによって作成された通知メッセージです。
- 通知ドライバの指定は、OpenStackサービスの設定ファイルを使って行われます。
- 通知ドライバの種類によって、送信されるメッセージのフォーマットが異なります。
メッセージのキューについて説明します。
- メッセージは、メッセージングバックエンドが受け取り、指定されたキューに配送されます。
- メッセージが配送されるキューの名前は、OpenStackサービスが指定します。
- topic という名前で呼ばれます。
- メッセージには、オプションでメッセージが有効な範囲を指定することができます。
- メッセージの範囲を狭め、メッセージへのアクセスを制限する効果があります。
- exchange という名前で呼ばれます。
- topic と exchange の設定方法は、環境変数・設定をみてください。
K2HR3 OpenStack Notification Listener
K2HR3 OpenStack Notification Listener(以下、リスナー)は、OpenStack Notification Listenerのプラグインです。このプラグインは次のように動作します。
- メッセージキューに届いたメッセージを受信
- メッセージは、OpenStack利用者が、削除したインスタンスの情報
- メッセージを解析
- 削除されたインスタンスのIDとIPアドレスを抽出
- K2HR3 APIサーバのロールAPIにアクセス
- 削除されたインスタンスをロールメンバーから削除するリクエストを送信
リスナーの基本動作は次の三つの項目で制御されます。設定方法は、環境変数・設定をみてください。
- transport_url
- topic
- 通知メッセージが配送されるキューの名前を指定します。
- OpenStackの各サービスが通知メッセージを送信するときに指定する値を指定します。
- デフォルト設定は、notificationsです。
- 実際の配送先キュー名は、topic設定値の末尾に、”.info”が自動的に付与されます。
- exchange
- topicの範囲です。
- デフォルト設定は、neutronです。
topic と exchange の値は、OpenStackのサービスが送信するメッセージのフォーマットに合わせて設定する必要があります。通知メッセージのフォーマットと設定方法は、環境変数・設定をみてください。
Detail Various