障害が発生したノードによって提供されたすべてのスロットをいくつかの接続可能なノードに追加することにより、クラスターを修正します。アプローチは、cluster addslots
を使用することです。 コマンドですが、もちろん手動で行うのは難しいので、私たちのチームが開発したこのツールをお勧めします。
使用法(シェル内):
# it requires Python2.7; install it via pip
pip install redis-trib
# suppose one of the accessible nodes is serving at 172.0.0.1:7000
# start a cluster-mode Redis that is not involved in any cluster
# suppose its address is 172.0.0.5:8000
redis-trib.py rescue --existing-addr 172.0.0.1:7000 --new-addr 172.0.0.5:8000
その後、新しいノードは障害が発生したすべてのスロットにサービスを提供し、クラスターの状態が正常になるようにします。