Добавление узлов, перенос слотов и удаление узлов в кластере (add-node, reshard, rebalance)
RedisКластерКоманда
# Add the new master to the cluster (joins empty, with no slots):
redis-cli --cluster add-node node7:6379 node1:6379
# Attach a new replica to a specific master:
redis-cli --cluster add-node node8:6379 node1:6379 --cluster-slave --cluster-master-id <master-node-id>
# Move 1000 slots from all masters to the new node:
redis-cli --cluster reshard node1:6379 --cluster-from all --cluster-to <node7-id> --cluster-slots 1000 --cluster-yes
# Or rebalance automatically (give slots to empty masters too):
redis-cli --cluster rebalance node1:6379 --cluster-use-empty-masters
# Remove a node whose slots have been emptied:
redis-cli --cluster del-node node1:6379 <node-id>Что делает
Добавляет в кластер новый мастер или реплику, онлайн переносит слоты с ключами между узлами, автоматически перебалансирует распределение слотов и удаляет опустошённый узел из кластера.
Когда использовать
При горизонтальном масштабировании памяти/пропускной способности, распределении нагрузки горячего узла или выводе узла из эксплуатации.
Внимание
Миграция слотов переносит ключи по одному через MIGRATE; при переносе больших ключей оба узла могут кратковременно блокироваться. Во время миграции клиенты получают перенаправления ASK; нужен клиент с поддержкой кластера. Если reshard прерван, слоты остаются в состоянии migrating/importing; завершите через --cluster fix. Не удаляйте через del-node мастер, у которого ещё есть слоты; сначала перенесите их.