YUKI Piro Hiroshi
null+****@clear*****
Mon May 19 18:12:37 JST 2014
YUKI "Piro" Hiroshi 2014-05-19 18:12:37 +0900 (Mon, 19 May 2014) New Revision: fc963b0891b602ffcb9cb097757eb8ed21633169 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%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/fc963b0891b602ffcb9cb097757eb8ed21633169 Message: Updated Droongaクラスタにノードを追加する手順 (markdown) Modified files: Droongaクラスタにノードを追加する手順.md Modified: Droongaクラスタにノードを追加する手順.md (+15 -14) =================================================================== --- Droongaクラスタにノードを追加する手順.md 2014-05-19 17:47:15 +0900 (2856a1a) +++ Droongaクラスタにノードを追加する手順.md 2014-05-19 18:12:37 +0900 (bef6ed6) @@ -27,30 +27,31 @@ writeなリクエストが来ないように、クローラを停止したり、 ## step2: node1をクラスタから切り離す -node1のdroonga-engineを止める。 +serfを利用したクラスタの死活監視の仕組みについて、以下の挙動になるよう変更を行っておく。 - node1% sudo service droonga-engine stop + * serfの各ノードは、タグ情報として「自分が属しているクラスタ」の情報(全ノードの名前を連結した文字列、またはそのハッシュ値)を持つ。 + * `sert members` の結果のうち、状態が「live」で且つタグ情報に含まれている所属クラスタの情報が自分と一致するノードだけを、「生存しているノード」と判断する。 -この時点で、node1はクラスタから切り離される。 +また、droonga-engineは以下の挙動になるよう変更を行っておく。 -## step3: node1, node2それぞれでサブクラスタを形成する。 + * 新しいcatalog.jsonが監視対象ディレクトリ(staging?)以下に配置されたら、即座にそれを検知する。 + * effectiveDateが現在時刻より前であれば、監視対象ディレクトリに置かれたstagingなcatalog.jsonの内容を、メモリ上のcatalog.jsonの内容に即座に反映する。と同時に、ファイルへの書き込み権限がある場合は、本番のcatalog.jsonにも変更を反映する。 + +まず、必要であれば、クライアントからのreadなリクエストがnode1へ配送されないように、droonga-http-serverの設定を変更する。 -node1のcatalog.jsonを更新する。 +次に、node1のcatalog.jsonを更新する。 node1% droonga-catalog-remove-replicas --dataset=Starbucks \ --hosts=192.168.100.50 \ - --catalog=~/droonga/catalog.json + --catalog=~/droonga/catalog.json \ + --output=~/droonga/staging-catalog/catalog.json -catalog.json.2014-05-19T15-30-42 -catalog.json.2014y05m19d15h30m42s などの名前でバックアップが作成される。 - node1% sudo service droonga-engine restart + * この時点で、node1はクラスタから切り離される。 + (生存ノードから見た時は、node1は死んだノードとして扱われる。) + * node1自身から見た時は、node1だけのクラスタとなっている。 -これで、node1だけのクラスタができた。 - -※node0はnode1のserfが起動した事を検知するが、何らかの方法で、serfのクラスタには組み込まれない事を検知することにする。 - -→案:serfの各ノードにタグ情報として「自分が属しているクラスタ」の情報(全ノードの名前を連結した文字列、またはそのハッシュ値)を持たせておき、それが一致している場合のみ、お互いに「生きているノード」と判断するようにする。 +## step3: node1, node2それぞれでサブクラスタを形成する。 次に、node2だけのクラスタを作る。 -------------- next part -------------- HTML����������������������������... Download