Skip to content

Droongaクラスタにデータ流入を止めてノードを追加する手順

YUKI "Piro" Hiroshi edited this page May 20, 2014 · 2 revisions

ノードを追加する操作において想定されるワークフローを検討する。

前提

  • node0/192.168.100.50
  • node1/192.168.100.51

の2つのレプリカがあると仮定する。 ここに

  • node2/192.168.100.52

を追加する。

基本方針

  1. データの投入を止める
  2. node2でサブクラスタを形成する。
  3. node0/1からnode2へデータを複製する。
  4. node2を元のクラスタに編入する。
  5. データの投入を再開する

step1: データの投入を止める

writeなリクエストが来ないように、クローラを停止したり、バッファになっているfluentdの所でせき止めたりして、データの投入を停止する。

step2: node2でサブクラスタを形成する

node2だけのクラスタを作る。

node1% scp catalog.json 192.168.100.52:/tmp/
node2% droonga-catalog-modify-replicas  --dataset=Starbucks \
                                        --add-hosts=192.168.100.52 \
                                        --remove-hosts=192.168.100.50,192.168.100.51 \
                                        --source=/tmp/catalog.json \
                                        --output=~/droonga/staging-catalog/catalog.json

これで、node2だけのクラスタができた。

step3: node0/1からnode2へデータを複製する

drndumpでデータを複製する。

node1% drndump --host=192.168.100.51 \
               --dataset=Starbacks  | \
         droonga-client --host=192.168.100.52

※droonga-requestコマンドが標準入力からjsonsを受け取れる前提。

※step2, step3を1操作で行うコマンドの案

node1% droonga-replicate --from-host=192.168.100.51 \
                         --from-port=10031 \
                         --to-host=192.168.100.52 \
                         --to-port=10031 \
                         --datasets=Starbacks \
                         --tag=starbacks

step4: node2を元のクラスタに編入する。

catalog.jsonのクラスタ構成を更新する。

node0% droonga-catalog-modify-replicas  --dataset=Starbucks \
                                        --add-hosts=192.168.100.52 \
                                        --remove-hosts="" \
                                        --source=~/droonga/catalog.json \
                                        --output=~/droonga/staging-catalog/catalog.json

新しいcatalog.jsonを展開する。

node0% scp ~/droonga/staging-catalog/catalog.json 192.168.100.51:~/droonga/staging-catalog/
node0% scp ~/droonga/staging-catalog/catalog.json 192.168.100.52:~/droonga/staging-catalog/

droonga-engineが新しいcatalog.jsonを自動的に検知する。

step5: データの投入を再開する

せき止めていたデータの投入を再開する。

以上でノードの追加は完了である。