Kouhei Sutou
null+****@clear*****
Mon May 26 14:40:48 JST 2014
Kouhei Sutou 2014-05-26 14:40:48 +0900 (Mon, 26 May 2014) New Revision: ebf1cd993a66c499428ca87ddfa73d95c25bb5c1 https://github.com/droonga/droonga-engine/wiki/CatalogDistribution/ebf1cd993a66c499428ca87ddfa73d95c25bb5c1 Message: Created CatalogDistribution (markdown) Added files: CatalogDistribution.md Added: CatalogDistribution.md (+31 -0) 100644 =================================================================== --- /dev/null +++ CatalogDistribution.md 2014-05-26 14:40:48 +0900 (93e42fe) @@ -0,0 +1,31 @@ +# catalog.jsonの配布方法案 + +新しくノードを追加するとき、どこのレプリカにいれるかとかどのくらいボリュームを作るかは自明ではない。そのため、ユーザーが明示的に指定する必要がある。 + +このとき、すべてのノードでcatalog.jsonを更新するのは大変なので、クラスター内のcatalog.jsonを簡単に更新できる仕組みが欲しい。このメモはそれの実装方法案である。この案ではserfを活用する。 + +## 前提 + + * ノードの追加の指示はクラスター外から実施する。 + +クラスター内の各ノードはcatalog.jsonを知っているが、クラスター外のマシンはcatalog.jsonを知らない。よって、最新のcatalog.jsonを取得する必要がある。 + +## catalog.jsonの取得 + +serfのカスタムクエリーを使って、各ノードからcatalog.jsonを取得する。流れは次の通りである。 + + 1. catalog.jsonを取得したいマシン上でWebサーバーを立ち上げる。 + 2. serfのカスタムクエリーを実行する。そのとき、パラメーターとして立ちあげたWebサーバーのURLを渡す。(各ノードからWebサーバーが見えないといけないという制限がつく。) + 3. 各ノードはパラメーターに指定されたWebサーバーに自分のcatalog.jsonをPOSTする。 + 4. catalog.jsonを取得したいマシン上には各ノードからcatalog.jsonが届く。その中からeffectiveDateが一番新しいcatalog.jsonを最新のcatalog.jsonとして利用する。 + +## catalog.jsonの配布 + +serfのカスタムクエリーを使って、各ノードへcatalog.jsonを配布する。流れは次の通りである。 + + 1. catalog.jsonを配布したいマシン上でcatalog.jsonを作る。 + 2. catalog.jsonを配布したいマシン上でWebサーバーを立ち上げる。 + 3. serfのカスタムクエリーを実行する。そのとき、パラメーターとして立ちあげたWebサーバーのURLを渡す。(各ノードからWebサーバーが見えないといけないという制限がつく。) + 4. 各ノードはパラメーターに指定されたWebサーバーにGETしてcatalog.jsonをダウンロードする。 + 5. 各ノードはダウンロードしたcatalog.jsonを使って動き出す。 + -------------- next part -------------- HTML����������������������������... ダウンロード