кластер
-
Redis имеет три режима кластера
-
режим ведущий-ведомый
-
Режим стража
-
Кластерный режим
-
Недостатки репликации master-slave
Как только главный узел не работает и служба записи недоступна, вам необходимо вручную переключиться, повторно выбрать главный узел и вручную установить отношения ведущий-подчиненный.
-
Недостатки сторожевого режима
-
Когда мастер повесит трубку, Sentinel выберет мастера.Во время выборов нет возможности получить доступ к Redis, и будет кратковременное прерывание доступа;
-
В режиме Sentinel только главный узел может писать извне, а подчиненный узел может использоваться только для чтения. Несмотря на то, что один узел Redis поддерживает до 10 Вт запросов в секунду, во время рекламных акций электронной коммерции все требования по записи данных ложатся на главный узел.
-
Память одного узла Redis не может быть установлена слишком большой.Если данные слишком велики, синхронизация master-slave будет очень медленной, когда узел запускается, время особенно велико;
①, репликация Redis master-slave
- Что такое master-slave репликация
Репликация master-slave относится к копированию данных одного сервера Redis на другие серверы Redis. Первый называется главным узлом (master), а второй — подчиненным узлом (slave).Репликация данных односторонняя и может осуществляться только от главного узла к подчиненному узлу.
- Роль репликации master-slave
- Избыточность данных: репликация ведущий-ведомый реализует горячее резервное копирование данных, что является методом избыточности данных, отличным от сохраняемости.
- Восстановление после сбоя: когда у главного узла возникает проблема, подчиненный узел может предоставить услуги для быстрого устранения сбоя; фактически это своего рода резервирование услуг.
- Балансировка нагрузки: на основе репликации master-slave в сочетании с разделением чтения и записи главный узел может предоставлять услуги записи, а подчиненные узлы могут предоставлять услуги чтения (то есть приложение подключается к главному узлу при записи данных Redis). , и приложение подключается к подчиненному узлу при чтении данных Redis), чтобы разделить нагрузку на сервер; особенно в сценарии меньшего количества записей и большего чтения разделение нагрузки чтения через несколько подчиненных узлов может значительно увеличить параллелизм сервера Redis.
- Краеугольный камень высокой доступности. В дополнение к вышеперечисленным функциям репликация «ведущий-ведомый» также является основой для реализации сигнальных систем и кластеров, поэтому репликация «главный-подчиненный» является основой высокой доступности Redis.
- Репликация master-slave может быть разделена на 3 этапа.
- Этап установления соединения (т.е. этап подготовки)
- Этап синхронизации данных
- Этап распространения команды
- Стратегия синхронизации ведущий-ведомый
При только что подключенном master-slave выполняется полная синхронизация, после полной синхронизации выполняется инкрементная синхронизация. Разумеется, при необходимости ведомое устройство может в любой момент инициировать полную синхронизацию. Стратегия Redis заключается в том, что, несмотря ни на что, он сначала попытается выполнить инкрементную синхронизацию, если это не удастся, ведомая машина должна выполнить полную синхронизацию.
автономная конфигурация
①, напишите файл конфигурации
Новый redis6379.conf
# 修改配置文件
vim redis6379.conf
# 修改内容
include /usr/local/redis-6.2.6/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
Новый redis6380.conf
# 修改配置文件
vim redis6379.conf
# 修改内容
include /usr/local/redis-6.2.6/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
Новый redis6381.conf
# 修改配置文件
vim redis6379.conf
# 修改内容
include /usr/local/redis-6.2.6/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
②, начать
# 分别启动三台redis
./redis-server ../redis6379.conf
./redis-server ../redis6380.conf
./redis-server ../redis6381.conf
③, из настроек библиотеки
Настройте подчиненную библиотеку, но не главную библиотеку
# slaveof <ip> <port> - ip: 主库地址,port: 主库端口
SLAVEOF 127.0.0.1 6379
④, проверьте статус ведущий-ведомый
Просмотр информации о состоянии после выполнения slaveof
# 查看连接信息
info replication
②, дозорный режим Redis
- технология переключения ведущий-ведомый
Когда главный сервер не работает, необходимо вручную переключить подчиненный сервер на главный сервер, что требует ручного вмешательства, что является трудоемким и приведет к недоступности службы в течение определенного периода времени. Это не рекомендуемый способ, чаще мы отдаем приоритет дозорному режиму.
- Обзор часового
Режим Sentinel — это особый режим. Во-первых, Redis предоставляет команды Sentinel. Sentinel — это независимый процесс. Как процесс, он будет работать независимо. Принцип заключается в том, что Sentinel отслеживает несколько запущенных экземпляров Redis, отправляя команды и ожидая ответа сервера Redis.
- Роль часового
- Мониторинг кластера: отвечает за контроль за тем, нормально ли работают главные и подчиненные процессы Redis.
- Уведомление о сообщении: если экземпляр redis выходит из строя, часовой отвечает за отправку сообщения в качестве уведомления о тревоге администратору.
- Аварийное переключение: если главный узел зависает, он автоматически переходит на подчиненный узел.
- Центр конфигурации: если произойдет аварийное переключение, уведомите клиента о новом главном адресе.
дозорное здание
①, создайте часового
Создайте новый файл sentinel-26379.conf
Другие клиенты также должны быть настроены
- параметр:
-
дозорный монитор mymaster 192.168.92.128 6379 2 Значение конфигурации: дозорный узел отслеживает главный узел 192.168.92.128:6379, имя главного узла — mymaster, а значение последних 2 связано с оценкой отказа главного узла: как минимум 2 узла Sentinel соглашаются определить сбой основного узла и выполнить аварийное переключение.
изменить файл
Vim Sentinel-26379.conf
Изменить содержимое
порт
порт 26379
демон работает
демонизировать да
журнальный файл
лог-файл «26379.log»
Имя контролируемого главного узла (mymaster) IP-адрес главного узла (192.168.66.11) Порт главного узла (6379) половина всех узлов+1(2)
дозорный монитор mymaster 192.168.66.11 6379 2
②, запустите часового
# 启动哨兵
cd /.../src
./redis-sentinel ../sentinel-26379.conf
# 查看状态
./redis-cli -p 26379
info sentinel
③, Кластерный режим
Кластер Redis — это кластер распределенных служб, состоящий из нескольких групп узлов master-slave, который обладает характеристиками репликации, высокой доступности и фрагментации. Для построения кластера Redis требуется как минимум 3 главных узла.Здесь мы создаем 3 главных узла, к каждому из которых прикреплен подчиненный узел, всего 6 узлов Redis;
Конфигурация кластера
①, настройте файл кластера
-
Измените следующее содержимое файла redis.conf [Все клиенты должны быть настроены]
Измените следующее содержимое файла redis.conf
ВИМ /…/redis.conf
Изменить содержимое
порт 8001
демонизировать да
pidfile «/var/run/redis_8001.pid».Укажите место хранения файла данных, необходимо указать другое расположение каталога, иначе данные будут потеряны
каталог /usr/local/redis/redis-кластер/8001/
Запустить кластерный режим
с поддержкой кластера да
Файл информации об узле кластера, где 800x лучше всего соответствует порту
файл конфигурации кластера nodes-8001.conf
Тайм-аут для узла в автономном режиме
время ожидания узла кластера 5000
Удалить привязку для доступа к информации об IP
привязать 127.0.0.1
Отключить защищенный режим
защищенный режим нет
Запустить файл AOF
приложениетолько да
Если вы хотите установить пароль, вам необходимо добавить следующую конфигурацию:
Установить пароль доступа Redis
требуется пройти
Установите пароль доступа между узлами кластера в соответствии с приведенным выше
мастераут
②, создайте кластер
- параметр:
-
-а: пароль
-
– кластерные реплики:
- –cluster-replicas 1: указывает, что 1 ведомое устройство подключено к 1 ведущему устройству;
- –cluster-replicas 2: указывает, что 2 ведомых устройства подключены к 1 ведущему.
запускать
/usr/local/redis/src/redis-cli -a redis-pw —
создание кластера --cluster-replicas 1 192.168.66.101:8001 192.168.66.101:8002 192.168.66.102:8001 192.168.66.102:8002 192.1 68.66.103: 8001 192.168.66.103:8002
③, просмотреть команду справки
- параметр:
-
create: создать кластерную среду host1:port1 ... hostN:portN
-
вызов: может выполнить команду redis
-
add-node: добавить узел в кластер, первый параметр — это ip:port нового узла, а второй параметр — это ip:port любого существующего узла в кластере.
-
del-node: удалить узел
-
осколок: осколок
-
check: проверить состояние кластера
просмотреть справку
src/redis-cli --cluster help
④, проверьте кластер
подключиться к любому клиенту
- параметр:
-
‐a указывает пароль сервера
-
-c означает кластерный режим
-
-h указывает IP-адрес
-
-p указывает номер порта
подключить клиент
/usr/local/redisd/src/redis-cli -a redis-pw -c -h 192.168.66.101 -p 8001
⑤ Просмотр информации о кластере
cluster info