-1

より具体的には、私がネットワーク ケーブルにつまずいて、ReDiS クラスターのマスターをそのクラスターの ReDiS スレーブから分割したとしましょう。マスターの数が 2 倍になった場合、クライアントが分割前の「最初の」マスターにのみ書き込むようにすることはできますか?

たとえば、次のプロパティを持つクラスターがあり、サブネット 192.168. 53 .* および 192.168. 105 .* 最終的に 6 人のマスターが必要ですか?

192.168 の ReDiS 1。53.1 :7000 (マスター)
192.168 の ReDiS 2。53.1 :7001 (マスター)
192.168 の ReDiS 3。53.1 :7002 (マスター)
192.168 の ReDiS 4。105.2 :7000 (スレーブ)
192.168 の ReDiS 5。105.2 :7001 (スレーブ)
192.168 の ReDiS 6。105.2 :7002 (スレーブ)

私は、ReDiS 4、ReDiS 5、および ReDiS 6 がすぐにマスターになり、最終的には次のようになると推測しています。

192.168 の ReDiS 1。53.1 :7000 (マスター)
192.168 の ReDiS 2。53.1 :7001 (マスター)
192.168 の ReDiS 3。53.1 :7002 (マスター) =======
//Snapped Cable//========
ReDiS 4 on 192.168. 105.2 :7000 (マスター)
ReDiS 5 on 192.168. 105.2 :7001 (マスター)
ReDiS 6 on 192.168. 105.2 :7002 (マスター)

また、断線したケーブルを交換すると、またこうなってしまいますよね?

192.168 の ReDiS 1。53.1 :7000 (マスター)
192.168 の ReDiS 2。53.1 :7001 (マスター)
192.168 の ReDiS 3。53.1 :7002 (マスター)
192.168 の ReDiS 4。105.2 :7000 (スレーブ)
192.168 の ReDiS 5。105.2 :7001 (スレーブ)
192.168 の ReDiS 6。105.2 :7002 (スレーブ)

マスターが「あるべき」ものであることを認識するようにクライアントに書き込み、192.168.1 のマスターにのみ書き込むようにするのは賢明ですか。53 .*?

このシナリオの問題を軽減する例として、次の変数を、のメンバーによって表される ReDiS の 1 つがfirstThreeMastersスレーブになったときにのみ更新するようにできますか?

    firstThreeMasters = [ "192.168.53.1:7000", "192.168.53.1:7001", "192.168.53.1:7002" ]

(私のクライアント コードの動作がこの質問の主題ですが、これは serverfault.com に属していると思いますか?コメントでアドバイスするか、移動することをお勧めします。)

4

1 に答える 1

1

「ReDiS 4、ReDiS 5、ReDiS 6 はすぐにマスターになると思います」

実際にはいいえ、マスターの少なくとも半分が切断されている場合、スレーブはフェイルオーバーしません。実際、スロットが割り当てられているマスターのみが、スレーブが自動フェイルオーバーを要求したときに選択プロセスに参加します。

また、クライアントはクラスターの問題に関与するべきではないため、クライアントでどのノードが任意のマスターであるかを推測しようとしないでください。ノードのセットを常にマスターにしたい場合は、それらを監視するデーモンを作成し、スレーブになるノードにクラスターフェイルオーバーコマンドを送信することをお勧めします。

于 2016-06-16T04:59:08.533 に答える