そのため、redis クラスターをテストしています。3 つのマスターと 3 つのスレーブのセットアップがあります。これで、ノードがハード障害 (マスターとスレーブの両方がダウン) に直面した場合でも、クラスターは引き続き機能し、障害が発生したノードによって提供されるハッシュ スロットを除外します。現在、このようなシナリオをテストしているときに、これらのハッシュ スロットによって提供されるキーを操作する読み取り/書き込みが例外で失敗することがわかりましたが、これは問題ありません (私は jedis を使用しています)。ただし、redis クラスターをキャッシュとして使用している場合は、これらのハッシュ スロットを他のノードで提供したいと考えています。redis-trib
この機能は、ユーティリティには存在しないようです。
./redis-trib.rb reshard
で失敗するため、クラスターをリシャーディングしてこれらのハッシュ スロットを移動することはできません[ERR] Not all #{ClusterHashSlots} slots are covered by nodes.
。./redis-trib.rb del-node
で失敗するため、クラスターからノードを削除することもできません[ERR] Node #{node} is not empty! Reshard data away and try again.
。元のノードを立ち上げることができないが、それらのハッシュスロットを他のノードで提供したいというシナリオに対処するための最良の方法は何ですか (古いノードでデータを失っても問題ないと仮定して)? 理想的には、そのノードを削除できるようなものです (クラスターからマスターとスレーブを削除し、それらのハッシュ スロットを他のノードに割り当てます)。