2017-09-26 6 views
1

に割り当てられた非連続スロットのロット:、私は3つのノードとRedisのクラスタ作成ノード

~ redis-3.2.10/src/redis-trib.rb create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 

を私は、第4のノードを追加し、さらにスロット割り当てを行うことresharded:

あなたが戻ってスケールダウンした場合
~ redis-3.2.10/src/redis-trib.rb add-node 127.0.0.1:7003 127.0.0.1:7000 
~ redis-3.2.10/src/redis-trib.rb reshard --timeout 60000 127.0.0.1:7000 
... 
How many slots do you want to move (from 1 to 16384)? 4096 
... 
Source node #1:all 
... 
redis-3.2.10/src/redis-trib.rb check 127.0.0.1:7000 
>>> Performing Cluster Check (using node 127.0.0.1:7000) 
M: 29fbb7e5f93eac22a224c14d4070139919bb0a5e 127.0.0.1:7000 
    slots:1365-5460 (4096 slots) master 
    0 additional replica(s) 
M: c90c9f590bb48d328f3eed2fc96af3a7d9cb0f25 127.0.0.1:7003 
    slots:0-1364,5461-6826,10923-12287 (4096 slots) master 
    0 additional replica(s) 
M: 970b3145574a4f38bbe10548bf6b80f8fdc2854d 127.0.0.1:7001 
    slots:6827-10922 (4096 slots) master 
    0 additional replica(s) 
M: 2cc0922fcfb3e619b6d733e054dd249a4b6137bf 127.0.0.1:7002 
    slots:12288-16383 (4096 slots) master 
    0 additional replica(s) 
[OK] All nodes agree about slots configuration. 
>>> Check for open slots... 
>>> Check slots coverage... 
[OK] All 16384 slots covered. 

はその後、戻ってからスロットをreshard:

>>> Performing Cluster Check (using node 127.0.0.1:7000) 
M: 29fbb7e5f93eac22a224c14d4070139919bb0a5e 127.0.0.1:7000 
    slots:1365-5460,12288-13652 (5461 slots) master 
    0 additional replica(s) 
M: 970b3145574a4f38bbe10548bf6b80f8fdc2854d 127.0.0.1:7001 
    slots:0-1364,5461-6826,10923-12287,13653-15017 (5461 slots) master 
    0 additional replica(s) 
M: 2cc0922fcfb3e619b6d733e054dd249a4b6137bf 127.0.0.1:7002 
    slots:6827-10922,15018-16383 (5462 slots) master 
    0 additional replica(s) 
M: c90c9f590bb48d328f3eed2fc96af3a7d9cb0f25 127.0.0.1:7003 
    slots: (0 slots) master 
    0 additional replica(s) 
[OK] All nodes agree about slots configuration. 
>>> Check for open slots... 
>>> Check slots coverage... 
[OK] All 16384 slots covered. 
:残りの3つの7003ノードは、次のようなもので終わります

:7001ノードには、4つの異なるグループのハッシュスロットが割り当てられています。その後の再発行の後、このハッシュスロットの「断片化」が増加するように見える。

ハッシュスロットの断片化が増えている(パフォーマンスやその他の点で)問題になることはありますか?

+0

なぜ最後のノードにスロットがないのですか? –

+0

そのノードから残りの3つのスロットにすべてのスロットを再割り当てしたので、クラスタから削除する予定です。 –

+0

各ノードに連続するスロットを使用する場合は、最初に単一ノードのクラスタを作成し、その中に他のノードを追加します。私は同じことをした。 –

答えて

0

AFAIK no - ハッシュスロットの「フラグメンテーション」は、意味のあるオーバーヘッドの点でごくわずかです。いくつかの直感:

  • 小さい範囲(16K)
  • Reshardingが頻繁に操作内部
  • ないが、Redisのはそれほど関係なく、これらのビットマップにアクセスし、実際のスロット分布であるが、スロットのマッピングを管理するビットマップを使用して一定の時間内に行われます。
+0

クライアントにも依存しますか?私は理論的には、間違って書かれたクライアントがスロットマッピングキャッシュのための一定の時間を達成していないかもしれないと思いますか? –

+0

間違いなく、それは非常に良い点です。クライアントがトポロジのコピーを保持するのに十分なインテリジェントな場合(これは必須要件ではありません)、最適な方法では実装されず、あらゆる種類の問題が発生する可能性があります。 –

+0

素晴らしいサウンド!それから、私の答えは の下で受け入れるべきです。 –

0

最初に単一ノードクラスタを作成します。 そのためには、最低3ノードの検証にredis_trib.rbファイルを編集する必要があります。

単一ノードクラスタを作成したら、他のノードを追加して新しいノードに連続するスロットを追加します。 この方法で、あなたが望むものを得ることができます。

関連する問題