Поиск по сайту:

Как настроить репликацию Redis (с отключенным режимом кластера) в CentOS 8 — часть 1


Redis (Remote Dictionary Server) — очень популярный и широко используемый, быстрый, распределенный и эффективный сервер базы данных/структуры данных с открытым исходным кодом, хранящийся в памяти.

Он предлагает богатый набор функций, которые делают его эффективным для широкого спектра случаев использования: в качестве базы данных, уровня кэширования, брокера сообщений или очереди; применимо в веб-приложениях, чатах и приложениях для обмена сообщениями, играх, анализе данных в реальном времени и многом другом.

Он поддерживает гибкие структуры данных, асинхронную репликацию «главный-подчиненный» для масштабирования производительности чтения и защиты от потери данных, сегментирование на стороне клиента для масштабирования производительности записи, две формы персистентности для записи данных в памяти на диск в компактном формате, кластеризацию и разделение. Он также обеспечивает автоматическое переключение при сбое для развертывания с высокой доступностью с помощью Redis Sentinel, сценариев Lua, транзакций и многих других.

Будучи NO SQL или нереляционной базой данных, Redis предлагает некоторые преимущества в производительности по сравнению с традиционными системами баз данных (такими как MySQL/MariaDB, PostgreSQL и т. д.), поскольку все его данные находятся или хранятся в памяти, что делает их легко доступными для приложения, в то время как традиционные базы данных должны записывать или читать все данные на диск или внешний источник.

Redis становится все более распространенным выбором для кэширования, что позволяет повторно использовать кэшированные данные (хранящиеся в основной памяти приложения), а не всегда запрашивать часто используемые данные в базе данных. Таким образом, это отличный помощник RDMS (системы управления реляционными базами данных), позволяющий в конечном итоге повысить производительность приложений.

В этой серии руководств по Redis, состоящей из трех частей, мы расскажем, как настроить и использовать некоторые ключевые функции Redis, такие как репликация, высокая доступность с использованием Redis Sentinel и . >Кластер Redis, статьи:

В этом руководстве показано, как настроить Репликацию Redisотключенным режимом кластера) в CentOS 8 Linux, в том числе как установить Redis, настроить главный и реплики и проверьте репликацию.

Важно: Кластер Redis (т. е. Кластер репликации) с отключенным режимом кластера имеет одну группу узлов ( например, master и одна или две реплики), где кластер Redis с включенным режимом кластера может состоять из двух или более групп узлов (например, три главных узла, каждый из которых имеет подчиненные устройства, или два).

Предпосылки:

  1. Серверы с установкой CentOS 8

Настройка тестовой среды

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34

При описанной выше настройке (которая имеет один основной/главный узел чтения/записи и два узла реплики только для чтения) у нас есть одна группа узлов, которая содержит все данные кластера в каждом узле. Как только ведомое устройство подключается к ведущему, оно получает первоначальную копию полной базы данных, и любые данные, которые ранее существовали на ведомом устройстве, будут удалены.

Кроме того, клиент может писать только на мастер, а читать с любого узла кластера. И когда записи выполняются на ведущем устройстве, они распространяются на все подключенные ведомые устройства для обновления наборов данных ведомых устройств в режиме реального времени.

Шаг 1. Установка Redis на CentOS 8

1. Для начала войдите на все узлы CentOS 8 через SSH, затем установите пакет Redis на все узлы (главные и реплики). ), используя менеджер пакетов DNF, как показано.


dnf install @redis

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

systemctl start redis
systemctl enable redis
systemctl status redis

3. Вы также можете убедиться, что сервер Redis запущен и работает, проверив порты прослушивания с помощью команды ss, как показано ниже.

ss -ltpn | grep redis-server

Шаг 2. Настройка главного сервера Redis

4. Redis настраивается с помощью файла конфигурации /etc/redis.conf — самодокументированного примера файла конфигурации. Сначала создайте резервную копию исходного файла, затем откройте его для редактирования с помощью выбранного вами редактора командной строки.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

5. По умолчанию экземпляр Redis настроен на прослушивание и прием соединений в интерфейсе loopback с использованием директивы привязки. Для связи с репликами главное устройство должно быть настроено на прослушивание шлейфового адреса IPv4 и его IP-адреса в локальной сети, т. е. 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Затем установите для параметра защищенного режима значение no, чтобы разрешить связь с репликами, как показано.

protected-mode no

Кроме того, Redis прослушивает порт 6379, который устанавливается с помощью директивы port. Это порт данных для связи с API-интерфейсами приложений или клиентами CLI.

port 6379

7. Чтобы дополнительно защитить связь мастер-реплика, мы можем защитить мастер с помощью директивы requirepass, чтобы клиенты/реплики должны были введите пароль аутентификации перед выполнением каких-либо команд или запуском процесса синхронизации репликации, в противном случае мастер отклонит запрос клиента/реплики (не забудьте установить безопасный пароль).

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

requirepass  Securep@55Here

8. Кроме того, журналы Redis хранятся в файле /var/log/redis/redis.log, это задается с помощью директивы logfile. а уровень детализации сервера по умолчанию — notice, определяемый с помощью параметра loglevel.

loglevel  notice
logfile  /var/log/redis/redis.log

9. Поскольку systemd является менеджером системы и служб по умолчанию в CentOS 8, вы можете настроить Redis для взаимодействия с дерево контроля systemd, установив для параметра supervised значение systemd.

supervised systemd

10. После выполнения всех необходимых настроек сохраните файл и закройте его. Затем перезапустите службу Redis, чтобы применить новые изменения.

systemctl daemon-reload
systemctl restart redis

11. Чтобы получить доступ к серверу Redis, нам нужно использовать redis-cli (интерфейс командной строки для Redis-сервера). По умолчанию он подключается к серверу на localhost (по порту 127.0.0.1 6379). Обратите внимание: поскольку сервер защищен от клиентов с помощью пароля, выполнение команды до аутентификации должно завершиться неудачей.

Используйте команду auth, чтобы указать пароль аутентификации, как показано на следующем снимке экрана.

redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> client list

12. Чтобы подключиться к реплике (после их настройки, как описано в следующем разделе), используйте -h и -p. для указания IP-адреса/имени хоста и порта реплики соответственно (не тот, что порт 6379 должен быть открыт в брандмауэре реплики).

redis-cli -h 10.42.0.21 -p 6379

13. Затем откройте порт данных сервера Redis в брандмауэре, чтобы разрешить входящие соединения с главным устройством, а затем перезагрузите правила брандмауэра с помощью команды firewall-cmd, как показано.

firewall-cmd --zone=public --permanent --add-port=6379/tcp 
firewall-cmd --reload

Шаг 3. Настройка реплики/подчиненных серверов Redis

14. Чтобы быстро настроить экземпляр Redis в качестве реплики на лету, используйте утилиту redis-cli и вызовите команду REPLICAOF. , как показано.

redis-cli replicaof 10.42.0.247 6379
OR
redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

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

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

16. Чтобы клиенты могли подключаться к реплике для чтения данных, добавьте IP-адрес реплики в директиву привязки.

replica1
bind 127.0.0.1 10.42.0.21

replica2
bind 127.0.0.1 10.42.0.34

Установка экземпляра Redis в качестве реплики

17. Чтобы настроить экземпляр Redis как реплику, используйте параметр replicaof и задайте IP-адрес главного узла (или имя хоста) и порт как ценности.

replicaof 10.42.0.247 6379

Настройка реплики для аутентификации на мастере

18. Далее, поскольку наш главный экземпляр защищен паролем, нам необходимо установить пароль в конфигурации реплики, чтобы он мог аутентифицироваться на мастере, используя masterauth. параметр.

masterauth Securep@55Here

19. Кроме того, когда реплика теряет соединение с мастером или когда репликация выполняется, реплика настраивается на ответ на запросы клиента, возможно, с надписью «устарело. > » данные. Но если это первая синхронизация, то набор данных может быть просто пуст. Такое поведение контролируется параметром replica-serve-stale-data.

А поскольку реплики Redis 2.6 по умолчанию доступны только для чтения, это контролируется параметром replica-read-only. Вы можете внести другие изменения в конфигурацию реплики в соответствии с потребностями вашего приложения.

20. После внесения всех необходимых изменений перезапустите службу Redis на всех репликах.

systemctl restart redis

21. Кроме того, откройте порт 6379 в брандмауэре, чтобы разрешить соединения главного устройства и клиентов с репликами, и перезагрузите правила брандмауэра.

firewall-cmd --zone=public --permanenent --add-port=6379/tcp
firewall-cmd --reload

Шаг 4. Проверьте статус репликации главной реплики

22. После завершения настройки репликации master-replica мы можем проверить, работает ли настройка следующим образом.

На главном компьютере выполните следующие команды.

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> info replication

23. Также проверьте состояние репликации на репликах/подчиненных устройствах следующим образом.

redis-cli
127.0.0.1:6379> info replication

23. Теперь давайте проверим репликацию, установив ключ-значение в главном экземпляре и проверим, синхронизируются ли данные с репликами.

На мастере сделайте следующее:

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

24. Затем проверьте, синхронизировались ли данные с репликами, как показано.

redis-cli
127.0.0.1:6379> get domain

Защита главного экземпляра от риска потери некоторых операций записи

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

Это означает, что мастер может перестать принимать записи, если подключено менее N реплик, а задержка меньше или равна M секунд, что контролируется параметром min. Опции -replicas-to-write и min-replicas-max-lag соответственно.

Чтобы установить их, раскомментируйте их и задайте значения в соответствии с вашими требованиями к настройке в /etc/redis.conf, как показано на следующем снимке экрана. Эта конфигурация означает, что с момента последней проверки связи с репликами, через 10 секунд, если в сети менее двух реплик, мастер перестанет принимать записи.

min-replicas-to-write 2
min-replicas-max-lag 10

Дополнительные параметры можно найти в остальной части файла конфигурации /etc/redis.conf, а более подробную информацию о репликации можно найти в документации Redis.

В следующей статье мы расскажем, как настроить Redis для обеспечения высокой доступности с помощью Sentinel в CentOS 8. А до тех пор оставайтесь закрытыми и не забывайте делиться своими мыслями и вопросами, используя нашу форму комментариев ниже, чтобы вы могли связаться с нами.