YUKI Piro Hiroshi
null+****@clear*****
Wed May 7 18:02:45 JST 2014
YUKI "Piro" Hiroshi 2014-05-07 18:02:45 +0900 (Wed, 07 May 2014) New Revision: ead6f05abdce448a957255b927cbd09af952da7d https://github.com/droonga/wikipedia-search/wiki/Droonga%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AE%E6%AD%BB%E6%B4%BB%E7%AE%A1%E7%90%86%E3%82%92Serf%E3%81%A7%E8%A1%8C%E3%81%86%E6%89%8B%E9%A0%86/ead6f05abdce448a957255b927cbd09af952da7d Message: Updated Droongaノードの死活管理をSerfで行う手順 (markdown) Modified files: Droongaノードの死活管理をSerfで行う手順.md Modified: Droongaノードの死活管理をSerfで行う手順.md (+58 -0) =================================================================== --- Droongaノードの死活管理をSerfで行う手順.md 2014-05-07 17:23:17 +0900 (379596f) +++ Droongaノードの死活管理をSerfで行う手順.md 2014-05-07 18:02:45 +0900 (81b6186) @@ -122,6 +122,63 @@ node1 192.168.100.51:7946 alive node2 192.168.100.52:7946 alive +### 障害によるクラスタからの離脱と再参加(すぐに再接続できるパターン) + + 1. どれか1つのノード(例えばnode1)のVMを一時停止してみる。 + すると、残ったノードに対してイベントが自動的に通知されて、各メンバーが持つメンバーリストが更新される。 + * この時、クラスタに残されたノードではイベントハンドラに以下の情報が渡される(以下はnode0の場合)。 + * $SERF_EVENT: `member-failed.` + * stdin: `node1 192.168.100.51` + 2. 他のノード(node0かnode2)で`serf members`してみる。 + + (node0) + % serf members + node0 192.168.100.50:7946 alive + node1 192.168.100.51:7946 failed + node2 192.168.100.52:7946 alive + + failedとなっているのが、障害発生により暗黙的に離脱中のノードである。 + 3. 離脱したノードのVMを再開する。 + * この時、クラスタに残っていたノードでは一定時間ごとのポーリングによりノードの復帰が検知され、自動的に、イベントハンドラに以下の情報が渡される(以下はnode0の場合)。 + * $SERF_EVENT: `member-join` + * stdin: `node1 192.168.100.51` + 5. クラスタへの復帰に成功したかどうか、`serf members`コマンドで確認する。 + + % serf members + node0 192.168.100.50:7946 alive + node1 192.168.100.51:7946 alive + node2 192.168.100.52:7946 alive + + +### 障害によるクラスタからの離脱と再参加(重篤な障害のパターン) + + 1. どれか1つのノード(例えばnode1)のVMをリセットしてみる。 + すると、残ったノードに対してイベントが自動的に通知されて、各メンバーが持つメンバーリストが更新される。 + * この時、クラスタに残されたノードではイベントハンドラに以下の情報が渡される(以下はnode0の場合)。 + * $SERF_EVENT: `member-failed.` + * stdin: `node1 192.168.100.51` + 2. 他のノード(node0かnode2)で`serf members`してみる。 + + (node0) + % serf members + node0 192.168.100.50:7946 alive + node1 192.168.100.51:7946 failed + node2 192.168.100.52:7946 alive + + failedとなっているのが、障害発生により暗黙的に離脱中のノードである。 + 3. 離脱したノードのVMを再開し、`serf agent`を実行してサービスを起動する。 + * この時、クラスタに残っていたノードでは一定時間ごとのポーリングによりノードの復帰が検知され、自動的に、イベントハンドラに以下の情報が渡される(以下はnode0の場合)。 + * $SERF_EVENT: `member-join` + * stdin: `node1 192.168.100.51` + * 復帰したノードの側でも、クラスタに残っていたノードからのメッセージにより`serf join`が自動的に実行される。 + 4. クラスタへの復帰に成功したかどうか、`serf members`コマンドで確認する。 + + % serf members + node0 192.168.100.50:7946 alive + node1 192.168.100.51:7946 alive + node2 192.168.100.52:7946 alive + + ### クラスタ全体への任意のメッセージの通知 1. クラスタに参加中のノードからイベントを送る。 @@ -156,6 +213,7 @@ このコマンドの働きは以下の通りとする。 * `member-join`, `member-leave`イベントの受信時:liveなノードのリスト(ファイル)を更新する。 * `user`, `query`イベントの受信時:ノードの死活状態の変更に関するものであった場合、liveなノードのリスト(ファイル)を更新する。 + * ノードのリストのファイル * Droonga Engineは、初期状態で、catalog.jsonに記述されているすべてのノードがliveであると想定したliveなノードのリストを持つ。 * Droonga Engineは、メッセージを配送する必要が生じた時は、メモリ上にあるliveなノードのリストに基づいて配送先を決定する。 * Droonga Engineは、liveなノードのリスト(ファイル)が書き換えられたことを何らかの方法で検知して、メモリ上にあるliveなノードのリストを破棄し、ファイルから最新のliveなノードのリストを読み込む。 -------------- next part -------------- HTML����������������������������... ダウンロード