Skip to content

Установка системы Linux и настройка кластера Redis

1. Обзор

Для достижения цели экстремально высокой доступности веб-кластеров в этой статье представлены сценарии развертывания и настройки кластеров Redis:

(1) Структура кластера Redis: N одинаково взвешенных главных узлов (master), каждому главному узлу соответствует M подчиненных узлов (slave).

Примечание: N должно быть нечетным числом из-за механизма голосования. Должно быть 3 или более мастер-узлов, иначе создание кластера завершится неудачей, и кластер не сможет предоставлять услуги, когда количество выживших узлов будет меньше половины от общего числа узлов.

2) Механизм опроса кластера Redis: серверы пингуют друг друга, чтобы определить, может ли узел быть подключен. Если более половины узлов пингуют узел без ответа, кластер считает, что узел не работает. В этот момент ведомый узел, соответствующий ведущему узлу, становится ведущим. Если ведомых узлов для замены нет, кластер прекращает работу.

2. Операционные шаги

2.1 Предварительная подготовка

Для развертывания кластера Redis вам потребуется как минимум 3 сервера. Для примера, чтобы подготовить среду, вам нужно подготовить 3 сервера Linux, развернуть 2 узла на каждом сервере и запустить 6 экземпляров Redis на этих трех серверах, чтобы сформировать классический кластер Redis "три ведущих, три ведомых".

Примечание 1: Если вы хотите создать кластер Web и кластер Redis, узлы Web и Redis могут сосуществовать на одной машине, и вам не нужно готовить отдельную машину для установки узлов Redis.

Примечание 2: Кластеры Redis, которым необходимо развернуть больше узлов, могут быть основаны на этом сценарии по аналогии.

Примечание 3: Главные узлы должны находиться на разных серверах. Например, в примере, приведенном в этой статье, 7001/7003/7005 являются ведущими узлами, распределенными на трех серверах. 7002/7004/7006 являются подчиненными узлами, распределенными на трех серверах.

Ведущие и ведомые устройства в одном слоте также должны быть распределены по разным узлам. Например, в рассматриваемом примере 7004 является ведомым узлом 7001, 7006 - ведомым узлом 7003, а 7002 - ведомым узлом 7005, причем ни один из них не находится на одном сервере.

сервер (компьютер)IP-адрес сервера (пример)порты
Сервер 1192.168.5.2487001, 7002
Сервер 2192.168.5.2217003, 7004
Сервер 3192.168.5.1027005, 7006

2.2 Создание двух узлов Redis на сервере

2.2.1 Среда компиляции

Чтобы установить Redis, необходимо скомпилировать исходный пакет, этот шаг зависит от компилятора gcc, если у вас нет среды gcc, вам нужно установить его самостоятельно, команда сетевой установки yum install gcc gcc-c++

gcc -v #Проверка наличия компилятора gcc

2.2.2 Загрузка исходного пакета

Для развертывания и запуска кластера Redis без использования ruby требуется Redis версии 5.0.0 или выше.

1) Скачать: redis-5.0.4.tar.gz: redis-5.0.4.tar.gz

2) Официальный сайт для загрузки: http: //download.redis.io/releases/

2.2.3 Установка Redis

  
  
  
mkdir /usr/redis #Создайте каталог Redis cd /usr/redis #Войдите в каталог #Переместите redis-5.0.4.tar.gz в каталог # tar zxvf redis-5.0.4.tar.  
  
gz #Распакуйте программу установки cd /usr/redis/redis-5.0.4 #Перейдите в распакованный каталог make && make install #Команды установки

Вы можете увидеть его после успешной установки:

1635402302916482.png

2.2.4 Создание узлов

  
  
mkdir /usr/redis/redis-cluster #Создайте каталог кластера redis-cluster cd /usr/redis/redis-cluster #Перейдите в каталог redis-cluster mkdir 7001 7002 #Создайте каталог для обоих узлов redis

2.2.5 Изменение конфигурации

Скачайте файл конфигурации redis.conf: redis.zip и поместите его вручную в папки 7001 и 7002.

Конфигурационный файл, представленный в этой статье, был изменен по сравнению со стандартным redis.conf следующим образом:

Примечание: пароли, связанные с redis, в этой статье приведены в качестве упрощенного примера, пользователям следует изменить реальную операцию на более надежный пароль.

  
  
  
  
#bind 127.0.0.1 # Снимаем ограничение на локальный доступ daemonize yes # Устанавливаем запуск redis в фоновом режиме по умолчанию protected-mode no # Отключаем защищенный режим maxmemory 2147483648 # Максимальная память 2G maxmemory-policy noeviction # Политика по умолчанию  
  
   
политика, при использовании этой политики исключается удаление данных, для обеспечения безопасности данных pidfile /var/run/redis_7001.pid # файл pidfile соответствует 7001 port 7001 # порт 7001 requirepass admin123456 # пароль для входа в redis, по умолчанию  
  
   
admin123456 masterauth admin123456 # пароль аутентификации redis, по умолчанию admin123456 cluster-enabled yes # Включить кластер cluster-config-file nodes-7001.conf # Конфигурация кластера, при первом запуске конфигурационного файла автоматически генерируется 7001.  
  
  
Generate 7001 dbfilename 7001dump.rdb # файл сброса дампаredis logfile "7001.log" # файл журналаredis appendfilename " 7001appendonly.aof" # файл дампа aof отredis

Redis.conf в папке 7001 изменять не нужно, а в redis.conf в папке 7002 нужно заменить 7001 на 7002 в конфигурации, как показано ниже:

  
  
cd /usr/redis/redis-cluster/7002/ # Перейдите в каталог 7002 vi redis.conf # Отредактируйте файл redis.conf :%s/7001/7002/g # Замените все 7001 в conf-файле для 7002 на 7002 в трех местах :wq # Сохраните конфигурацию  
 7002 conf-файл, заменив все 7001 на 7002 в трех местах :wq # Сохранить конфигурацию

2.2.6 Запуск узлов

  
cd /usr/redis/redis-5.0.4/src/ # Перейдите в каталог загрузки .  
/redis-server /usr/redis/redis-cluster/7001/redis.conf # Укажите файл конфигурации для 7001 для запуска узла . /redis-server /usr/redis/redis-cluster/7002/redis.conf # Укажите файл конфигурации для 7002 и запустите узел.

2.png

После запуска узлов 7001 и 7002 узлы redis будут использовать порты 17001 и 17002 для связи по выборам кластера (CLUSTER MEET), то есть размер используемого порта плюс 10000 (порт XXXX, тогда порт связи 1XXXX), и если сервер между узлами имеет брандмауэр, необходимо открыть эти порты. Если на сервере между узлами установлен брандмауэр, необходимо открыть эти порты.

2.3 Создание остальных четырех узлов

Чтобы создать больше узлов, повторите шаги 2.2.1-2.2.6 этого документа. Создайте узлы 7003, 7004, 7005 и 7006 на сервере 2 и сервере 3 соответственно и запустите их.

2.4 Создание кластера Redis

После создания узлов каждый из них фактически является независимым и не образует кластер, однако следующие операции все равно необходимы.

Примечание: Во второй строке кода ниже первые три узла - это ведущие узлы, а последние три - ведомые узлы.

  
cd /usr/redis/redis-5.0.4/src/ # Перейдите в каталог запуска любого из узлов . /redis-cli --cluster create 192.168.5.248:7001 192.168.5.221:7003 192.168.5.102:7005 192.168.5.248. 7002 192.168.5.221:7004 192.168.5.102:7006 --cluster-replicas 1 -a admin123456 # Команда для создания кластера, последняя часть команды admin123456 - это пароль аутентификации, -replicas 1 означает, что у каждого сервера redis есть резервная машина, после выполнения этой команды скрипт автоматически назначит master и slave и слот для этих 6 экземпляров redis.

Когда появится запрос: " Могу ли я установить вышеуказанную конфигурацию?" (введите "да", чтобы согласиться), введите "да":

24.png

На этом сборка кластера завершена!

3. Знания по эксплуатации и техническому обслуживанию

  
cd /usr/redis/redis-5.0.4/src/ # Перейдите в каталог загрузки .  
/redis-server /usr/redis/redis-cluster/7001/redis.conf #Укажите конфигурационный файл для 7001 для запуска узла, и запустите остальные узлы таким же образом redis-cli -h ip&nbsp  
; -c -p port -a password #Удаленное подключение клиента к узлу, для ввода соответствующих ip, port, password 192.168.1.124:7001> cluster nodes & nbsp;#Введите любой узел и запросите распределение и состояние здоровья ведущего и ведомого узлов кластера.

Более подробную информацию об эксплуатации и обслуживании см. в разделе: Руководство по эксплуатации и обслуживанию Redis для систем Linux.

Примечание: Официальные инструкции по созданию кластера Redis см. в разделе: Redis Cluster Tutorial.

4. условия

4.1 Сбой платформы при изменении адреса Redis

Описание проблемы

После успешного создания кластера Redis я хочу изменить адрес Redis в платформе, и тест и подключение показывают успех, но я не могу успешно изменить его.

Анализ причин

Отображаемые кластером Redis ip и порт узла - это ip-адреса, считанные сервером Redis, на котором работают узлы кластера, и могут не совпадать с заполненными вручную ip (на сервере может быть несколько ip).

Рецепт

Разверните кластер Redis и создайте его с нужным ip для команды create cluster.