2017-04-08 5 views
1

私は現在、2ノードクラスタで飼育係を使用しようとしています。私は自分のクラスター形成アルゴリズムを構成に基づいてノード上で実行している。 Zookeeperの分散型DB機能だけが必要です。2つのノードからなるクラスタ上で飼育係を実行する

  1. 2ノードクラスタでZookeeperを使用することはできますか?これが行われた解決策をご存じですか?
  2. クォーラムを作成せずにzookeepers DB機能を引き続き使用できますか?

注:このプロジェクトでは、フォールトトレランスは重要な問題ではありません。ノードの1つが停止した場合、私たちは、飼い猫サービスなしで実行するのに十分なコードロジックを持っています。私たちは両方のノードが生存しているときに飼い猫を使ってデータを共有します。

大変ありがとうございます。

答えて

0

Zookeeperは、基本的にノード間を調整するために使用される調整システムです。そのような分散システムに書き込みが行われると、格納されている値を調整し合意するために、すべての書き込みはmaster (aka leader)を経由します。読み取りは、どのノードからでも行うことができます。 Zookeeperは、書き込みリクエストを一貫して処理するために、マスター/リーダーを定足数ごとに選ぶ必要があります。 ZookeeperはコンセンサスアルゴリズムとしてZAB protocolを利用します。

  1. リーダーを選出するために、定足数は、理想的には、ノードの奇数(そうでない場合、ノードは、過半数を獲得し、リーダーになることができません)を有するべきです。あなたのケースでは、2つのノードでは、両方のノードが候補になり、他のノードが投票するのを待つので、動物園管理者は長い間リーダーを選ぶことができません。彼らが指導者を選出したとしても、あなたのアンサンブルはネットワークのパテリティング状況では適切に動作しません。
  2. 私が言ったように、飼い猫は分散ストレージではありません。分散型(複数のノード)で使用する必要がある場合は、定足数を作成する必要があります。

あなたが必要とするのは、分散データベースです。分散型の調整システムではありません。

+0

返信いただきありがとうございます。これは私には意味がある。しかし、私がzoo.cfg.dynamicファイルの2つのデバイスクラスタで3番目のデバイスを偽造しようとしたとき。私はまた、 "standaloneEnabled = false"をzoo.cfgファイルに設定しました。これにより、2つの実ノードが出現し、リーダーが選出される。私はdbの書き込みなどを実行することができますどのような問題が出現する可能性があるかを確認するのに十分なテストを行っていない。しかし、少なくともクラスターは上がっています。 server.2 = :2888:3888:参加者; 0.0.0.0:2181 <<<<偽 server.3 = :2888:3888:参加者; 0.0.0.0:2181 server.4 = :2888 :3888:参加者; 0.0.0.0:2181 あなたは何が起こっているのか分かりますか? – Sam

+0

彼らはリーダーを思い付くことができます。しかし、ネットワークが分割された場合に問題が発生します。これは、分散システムの主要な問題の1つです。ネットワーク分割では、どのノードもリーダーにならず、どのノードもサーバー書き込み要求を行いません。同じノードで2つの動物園のインスタンスを実行してカウントを3にするとどうなりますか? –

+0

ありがとうございます。幸いなことに私たちのノードを今のところ実行すると、ネットワークが分割されることはありません。私たちの次の選択肢は、ノードを偽造することができない場合に備えて、同じノード上で複数の動物園のインスタンスを実行することでした。私たちはまだどの方法を検討しているのですか?このようにすれば、このスレッドは結果で更新されます。 – Sam

関連する問題