Redis Cluster — это архитектура, которая автоматически распределяет ваши данные по нескольким узлам и обеспечивает высокую доступность. Она предлагает незаменимое решение для крупномасштабных приложений. В этой статье мы шаг за шагом рассмотрим установку Redis Cluster и этапы масштабирования. Если вы используете Redis на одном сервере, переход на Cluster даст вам больше гибкости и отказоустойчивости.
Что такое Redis Cluster?
Redis Cluster делит данные на 16384 хэш-слота и распределяет эти слоты между узлами. Каждый узел управляет только своими слотами. Например, в кластере из 3 узлов слоты распределяются примерно как 5461, 5461 и 5462. Благодаря этому распределению ключи автоматически направляются на правильный узел.
Преимущества Cluster
- Высокая производительность: Операции не нагружают одну точку, нагрузка распределяется.
- Автоматическое шардирование: Вам не нужно вручную разбивать данные.
- Высокая доступность: Вы можете определить реплики (резервные узлы) для каждого узла, чтобы предотвратить прерывание обслуживания в случае сбоя.
- Легкое масштабирование: Вы можете добавлять узлы и перераспределять слоты для увеличения емкости.
Шаги по установке Redis Cluster
1. Подготовка среды
Я рекомендую использовать как минимум 3 основных узла (master) и, в рекомендуемой конфигурации, по одной реплике для каждого master — всего 6 узлов. Выделите отдельный сервер Linux (или контейнер Docker) для каждого узла. Например, используем следующие IP-адреса:
- 10.0.0.1:7000 (master1)
- 10.0.0.2:7000 (master2)
- 10.0.0.3:7000 (master3)
- 10.0.0.1:7001 (replica1)
- 10.0.0.2:7001 (replica2)
- 10.0.0.3:7001 (replica3)
Скомпилируйте Redis из исходных кодов или установите с помощью менеджера пакетов на каждом узле. Затем создайте файл redis.conf для каждого узла. Для включения режима кластера добавьте следующие настройки:
port 7000 cluster-enabled yes cluster-config-file nodes-7000.conf cluster-node-timeout 5000 appendonly yes
2. Запуск узлов
Запустите сервер Redis для каждого узла. Например:
redis-server /path/to/redis-7000.confДля проверки выполните команду redis-cli -p 7000 ping. Каждый узел должен ответить PONG.
3. Создание кластера
Создайте кластер с помощью утилиты redis-cli. Следующая команда создает кластер из 3 master и 3 replicas:
redis-cli --cluster create 10.0.0.1:7000 10.0.0.2:7000 10.0.0.3:7000 10.0.0.1:7001 10.0.0.2:7001 10.0.0.3:7001 --cluster-replicas 1Эта команда выбирает master и назначает каждому реплику. В процессе вас попросят подтвердить распределение слотов. Введите «yes» и нажмите Enter.
4. Проверка состояния кластера
Для проверки установки используйте следующую команду:
redis-cli --cluster check 10.0.0.1:7000В выводе вы увидите состояние всех узлов, распределение слотов и связи реплик. Также можете использовать команды cluster info и cluster nodes для получения подробной информации.
Шаги по масштабированию
Добавление нового узла
Предположим, вы хотите добавить новый master-узел в существующий кластер. Подготовьте новый сервер (например, 10.0.0.4:7000) и запустите Redis в режиме кластера. Затем добавьте узел в кластер следующей командой:
redis-cli --cluster add-node 10.0.0.4:7000 10.0.0.1:7000После этого новый узел будет в состоянии «handshake». У него еще нет слотов. Чтобы перераспределить слоты, выполните:
redis-cli --cluster rebalance 10.0.0.1:7000Важно: Процесс rebalance пытается равномерно распределить слоты по всем узлам. Если вы хотите дать определенным узлам больше слотов, используйте параметр --cluster-weight.
Добавление реплики
Для добавления новой реплики выполните аналогичные шаги. Сначала запустите узел, затем добавьте его командой:
redis-cli --cluster add-node 10.0.0.4:7001 10.0.0.1:7000 --cluster-slaveЕсли вы хотите, чтобы реплика была назначена конкретному master, используйте --cluster-slave --cluster-master-id <master-id>.
Удаление узла
Чтобы удалить узел из кластера, сначала необходимо освободить все его слоты. Следующая команда перемещает слоты из исходного узла в целевой:
redis-cli --cluster reshard 10.0.0.1:7000 --cluster-from <node-id> --cluster-to <target-id> --cluster-slots <number-of-slots>После освобождения слотов удалите узел из кластера:
redis-cli --cluster del-node 10.0.0.1:7000 <node-id>Производительность и важные замечания
При использовании Redis Cluster важно учитывать следующие моменты:
- Поддержка клиентов: Убедитесь, что используемая вами клиентская библиотека Redis поддерживает Cluster. Например, популярные библиотеки, такие как Jedis, StackExchange.Redis или redis-py, работают в режиме кластера.
- Сетевая задержка: Сетевая задержка между узлами может повлиять на производительность. Размещайте узлы в одном центре обработки данных для минимальной задержки.
- Резервное копирование: Структура кластера может усложнить процесс резервного копирования. Регулярно создавайте резервные копии данных с помощью файлов RDB или AOF.
- Мониторинг: Используйте команду INFO и redis-cli --cluster check для периодической проверки состояния здоровья кластера.
Заключение
Установка и масштабирование Redis Cluster, выполненные с правильными шагами, предоставят вам гибкую, высокопроизводительную и отказоустойчивую инфраструктуру базы данных. Начните с 3 узлов или расширьтесь до 100 узлов — Redis Cluster является идеальным выбором для ваших растущих приложений. Если вам нужна поддержка в настройке Redis Cluster, вы всегда можете связаться с нами на HostingServer.com.tr.