[Groonga-commit] droonga/wikipedia-search.wiki at 165017a [master] Updated Droongaクラスタにノンストップでノードを追加する手順 (markdown)

Back to archive index

YUKI Piro Hiroshi null+****@clear*****
Tue May 20 19:17:14 JST 2014


YUKI "Piro" Hiroshi	2014-05-20 19:17:14 +0900 (Tue, 20 May 2014)

  New Revision: 165017a5ca28ade738691b7c4e28bac7f12edba4
  https://github.com/droonga/wikipedia-search/wiki/Droonga%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%81%AB%E3%83%8E%E3%83%B3%E3%82%B9%E3%83%88%E3%83%83%E3%83%97%E3%81%A7%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86/165017a5ca28ade738691b7c4e28bac7f12edba4

  Message:
    Updated Droongaクラスタにノンストップでノードを追加する手順 (markdown)

  Modified files:
    Droongaクラスタにノンストップでノードを追加する手順.md

  Modified: Droongaクラスタにノンストップでノードを追加する手順.md (+28 -20)
===================================================================
--- Droongaクラスタにノンストップでノードを追加する手順.md    2014-05-20 19:09:49 +0900 (cda61d6)
+++ Droongaクラスタにノンストップでノードを追加する手順.md    2014-05-20 19:17:14 +0900 (c28f0a4)
@@ -43,28 +43,12 @@ droonga-engineは以下の挙動になるよう変更を行っておく。
 
 ## 基本方針
 
- 1. node1をクラスタから切り離す。
- 2. node2をクラスタに仮追加する。
+ 1. node2をクラスタに仮追加する。
+ 2. node1をクラスタから切り離す。
  3. node1からnode2へデータを複製する。
  4. node1, node2を元のクラスタに戻す。
 
-## step1: node1をクラスタから切り離す
-
-node1のcatalog.jsonのノード構成を変更し、クラスタから切り離す。
-
-    node1% droonga-catalog-modify-replicas  --dataset=Starbucks \
-                                            --add-hosts="" \
-                                            --remove-hosts=192.168.100.50,192.168.100.52 \
-                                            --source=~/droonga/catalog.json \
-                                            --output=~/droonga/staging-catalog/catalog.json
-
-この時点で、
-
- * node1は、生存ノードから見た時は死んだノードとして扱われるようになる。
- * node1自身から見た時は、node1だけのクラスタとなっている。
- * 生存ノードからnode1へ配送される予定だったwriteなメッセージが、バッファに溜まり始める。
-
-## step2: node2をクラスタに仮追加する
+## step1: node2をクラスタに仮追加する
 
 複製作業に関わらないノード(生存ノード、ここではnode0のみ)のcatalog.jsonに、node2の情報を加えて、最終的な構成の状態にあたるcatalog.jsonを用意する。
 
@@ -88,6 +72,23 @@ node1のcatalog.jsonのノード構成を変更し、クラスタから切り離
  * 生存ノードからnode2へ配送される予定だったwriteなメッセージが、バッファに溜まり始める。
 
 
+## step2: node1をクラスタから切り離す
+
+node1のcatalog.jsonのノード構成を変更し、クラスタから切り離す。
+
+    node1% droonga-catalog-modify-replicas  --dataset=Starbucks \
+                                            --add-hosts="" \
+                                            --remove-hosts=192.168.100.50,192.168.100.52 \
+                                            --source=~/droonga/catalog.json \
+                                            --output=~/droonga/staging-catalog/catalog.json
+
+この時点で、
+
+ * node1は、生存ノードから見た時は死んだノードとして扱われるようになる。
+ * node1自身から見た時は、node1だけのクラスタとなっている。
+ * 生存ノードからnode1へ配送される予定だったwriteなメッセージが、バッファに溜まり始める。
+
+
 ## step3: node1からnode2へデータを複製する。
 
 drndumpでデータを複製する。
@@ -107,6 +108,11 @@ drndumpでデータを複製する。
                              --datasets=Starbacks \
                              --tag=starbacks
 
+この時、
+
+ * node1は、drndumpの結果の一部として、drndumpの開始時刻を送出する。
+ * node2は、drndumpから受け取った「drndumpの開始時刻」を、「有効期限切れと見なすメッセージの時刻」として保持する。
+
 ## step4: node1, node2を元のクラスタに戻す。
 
 最終的な構成のクラスタのためのcatalog.jsonをnode1, node2に展開する。
@@ -119,8 +125,10 @@ droonga-engineが自動的に新しいcatalog.jsonを認識する。
 ここで、node1とnode2は、生存ノードから見た時に、ステータスが「死んでいるノード」から「復帰中のノード」に切り替わる。
 
  * 生存ノードはバッファに溜め込んでおいたwriteなメッセージを、復帰中のノード(node1とnode2)に配送し始める。
+   * node2は、保持している「有効期限切れと見なすメッセージの時刻」に基づいて、バッファから配送されてきたメッセージのうち、node1には渡されていないがnode2には渡されていたというメッセージ(=すでにdrndumpを通じてnode1から結果を受け取っているメッセージ)を破棄する。
  * バッファが空になるまでは、復帰中のノード宛のメッセージはバッファに貯まっていく。
  * バッファが空になったら、復帰中のノードは「生きている」状態に戻る。
- * 生存ノードの状態に戻った後は、通常通りメッセージが流れてくるようになる。
+   * 生存ノードの状態に戻った後は、通常通りメッセージが流れてくるようになる。
+   * 「有効期限切れと見なすメッセージの時刻」はもう不要なので、破棄する。
 
 以上でノードの追加は完了である。
\ No newline at end of file
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index