На этом шаге вы узнаете, как перераспределить слоты (re-shard slots) в кластере Redis с помощью команды redis-cli --cluster reshard
. Это важно для равномерного распределения данных, особенно после добавления новых узлов.
Кластер Redis делит пространство ключей (keyspace) на 16384 слота. Каждый главный узел (master node) отвечает за подмножество этих слотов. Когда вы добавляете новый узел, он изначально не владеет никакими слотами. Перераспределение (resharding) перемещает слоты с существующих узлов на новый узел, балансируя данные и рабочую нагрузку.
-
Подключение к кластеру с использованием redis-cli --cluster
:
Для выполнения операции перераспределения (resharding) вы будете использовать команду redis-cli --cluster reshard
. Эта команда предоставляет интерактивный способ перераспределения слотов по всему кластеру.
Откройте свой терминал и выполните следующую команду:
redis-cli --cluster reshard 127.0.0.1:7000
Эта команда подключается к кластеру Redis через узел по адресу 127.0.0.1:7000
и запускает процесс перераспределения (resharding).
-
Укажите количество слотов для перемещения:
Инструмент redis-cli
предложит вам ввести количество слотов, которые вы хотите переместить. В этом примере давайте переместим 101 слот на новый узел.
How many slots do you want to move? (default: all)
Введите 101
и нажмите Enter.
-
Введите идентификатор целевого узла (Target Node ID):
Далее инструмент попросит вас ввести идентификатор узла (node ID) целевого узла, которым является новый узел, добавленный вами на предыдущем шаге (порт 7006). Чтобы найти идентификатор узла, вы можете использовать команду CLUSTER NODES
, как показано в предыдущих шагах, или вы можете использовать следующую команду, чтобы получить идентификатор узла напрямую:
redis-cli -h 127.0.0.1 -p 7006 cluster nodes | grep myself | awk '{print $1}'
Скопируйте идентификатор узла из вывода. Инструмент redis-cli
предложит вам:
What is the receiving node ID?
Вставьте идентификатор узла и нажмите Enter.
-
Укажите исходные узлы (Source Nodes):
Инструмент попросит вас указать исходные узлы, с которых нужно взять слоты. Вы можете ввести all
, чтобы перераспределить слоты со всех существующих главных узлов (master nodes).
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' to stop entering IDs.
Введите all
и нажмите Enter.
-
Подтвердите план перераспределения (Resharding Plan):
Инструмент redis-cli
отобразит план перераспределения (resharding plan) и попросит вас подтвердить его.
Do you want to proceed with the reshard plan? (type 'yes' to accept):
Введите yes
и нажмите Enter, чтобы начать процесс перераспределения (resharding).
-
Дождитесь завершения перераспределения (Resharding):
Инструмент redis-cli
теперь переместит слоты с исходных узлов на целевой узел. Этот процесс может занять некоторое время, в зависимости от объема данных в кластере. Вы увидите сообщения о ходе выполнения по мере перемещения слотов.
-
Выход из redis-cli
:
Вы успешно перераспределили слоты (re-sharded slots) в своем кластере Redis с помощью команды redis-cli --cluster reshard
. Это гарантирует, что данные будут более равномерно распределены по кластеру, включая новый узел.