Redis (Сервер удаленного словаря) - очень популярный и широко используемый с открытым исходным кодом, быстрый, распределенный и эффективный в памяти сервер базы данных / структуры данных с ключом.
Он предлагает богатый набор функций, которые делают его эффективным для широкого спектра сценариев использования: в качестве базы данных, уровня кэширования, брокера сообщений или очереди; применимо в веб-приложениях, приложениях для чата и обмена сообщениями, играх, анализе данных в реальном времени и многом другом.
Он поддерживает гибкие структуры данных, асинхронную репликацию ведущий-ведомый для масштабирования производительности чтения и защиты от потери данных на стороне клиента. сегментирование для масштабирования производительности записи, две формы сохраняемости для записи данных в памяти на диск в компактном формате, кластеризация и разметка. Он также имеет автоматические отработки отказа для развертывания высокой доступности через Redis Sentinel, Сценарии Lua, сделкии многое другое.
Будучи
НЕТ SQL или нереляционная база данных, Redis предлагает некоторые преимущества в производительности по сравнению с традиционными системами баз данных (такими как MySQL / MariaDB, PostgreSQLи т. д.), потому что все его данные находятся или хранятся в памяти, что делает их легко доступными для приложение, в то время как традиционные базы данных должны записывать все данные или читать с диска или внешнего источник.Redis становится все более распространенным выбором для кэширования, что позволяет повторно использовать кэшированные данные. (хранится в основном пространстве памяти приложения) вместо того, чтобы постоянно запрашивать базу данных для использованные данные. Так что это фантастический спутник RDMS (Системы управления реляционными базами данных), чтобы в конечном итоге улучшить производительность приложения.
В этой трехчастной Redis В серии руководств мы расскажем, как настроить и использовать некоторые ключевые функции Redis, а именно репликацию, высокую доступность с использованием Redis Sentinel и Кластер Redis, статьи:
Часть 1: Как настроить репликацию Redis (с отключенным кластерным режимом) в CentOS 8
В этом руководстве показано, как настроить Репликация Redis (с Режим кластера отключен) в CentOS 8 Linux, включая то, как установить Redis, настроить мастер и реплики и протестировать репликацию.
Важный: А Кластер Redis (т.е. Кластер репликации) с отключенным режимом кластера имеет одну группу узлов (например, владелец и одна или две реплики), где кластер Redis с включенным режимом кластера может состоять из двух или более групп узлов (например, три мастера, каждый из которых имеет подчиненные устройства, или два).
Главный сервер Redis: 10.42.0.247. Redis Replica1 / Slave1: 10.42.0.21. Redis Replica2 / Slave2: 10.42.0.34.
При описанной выше настройке (которая имеет один первичный / главный узел для чтения / записи и 2 реплики только для чтения) у нас есть одна группа узлов, которая содержит все данные кластера в каждом узле. Как только ведомое устройство подключается к ведущему, оно получает начальную копию полной базы данных, и любые данные, которые ранее существовали на ведомом устройстве, будут отброшены.
Кроме того, клиент может писать только мастеру, но читать с любого узла кластера. И поскольку записи выполняются на главном устройстве, они распространяются на все подключенные подчиненные устройства для обновления наборов данных подчиненного устройства в режиме реального времени.
1. Для начала авторизуйтесь во всех CentOS 8 узлы через SSH, затем установите Redis пакет на всех узлах (мастер и реплики) с помощью Менеджер пакетов DNF как показано.
# dnf install @redis.
2. По завершении Redis установка пакета, запустите Redis service, включите его автоматический запуск при каждой загрузке системы и проверьте, работает ли он следующим образом.
# systemctl start redis. # systemctl включить redis. # systemctl status redis.
3. Вы также можете подтвердить, что Redis сервер запущен и работает, проверяя порты прослушивания с помощью команда ss, следующее.
# ss -ltpn | grep redis-server.
4. Redis настраивается с помощью /etc/redis.conf файл конфигурации, самодокументированный пример файла конфигурации. Сначала создайте резервную копию исходного файла, затем откройте ее для редактирования с помощью своего редактор командной строки по выбору.
# cp /etc/redis.conf /etc/redis.conf.org. # vi /etc/redis.conf.
5. По умолчанию Redis экземпляр настроен для прослушивания и приема подключений на петля интерфейс, используя директиву bind. Для связи с репликами мастер должен быть настроен на прослушивание IPv4 адрес обратной связи и его IP-адрес в локальной сети, т.е. 10.42.0.247.
привязать 127.0.0.1 10.42.0.247.
6. Затем установите для параметра защищенного режима значение нет
чтобы разрешить связь с репликами, как показано.
защищенного режима нет.
Также Redis слушает порт 6379 который устанавливается с помощью порт
директива. Это порт данных для связи с API приложений или клиентами CLI.
порт 6379.
7. Чтобы дополнительно закрепить мастер-реплика связи, мы можем защитить мастера, используя requirepass директиве, так что клиенты / реплики должны выдавать пароль аутентификации перед выполнением каких-либо команд или запуском процесс синхронизации репликации, в противном случае мастер отклонит запрос клиента / реплики (не забудьте установить безопасный пароль).
Мы будем использовать следующий вариант в демонстрационных целях, чтобы показать, как он работает.
requirepass [электронная почта защищена]
8. Кроме того, журналы Redis хранятся в /var/log/redis/redis.log файл, это устанавливается с помощью журнальный файл директива и уровень детализации сервера по умолчанию уведомление, определенный с помощью лог-уровень параметр.
уведомление на логическом уровне. файл журнала /var/log/redis/redis.log.
9. С systemd является менеджером системы и служб по умолчанию в CentOS 8, вы можете настроить Redis взаимодействовать с systemd дерево наблюдения, установив под наблюдением параметр для systemd.
контролируемая системаd.
10. После внесения всех необходимых настроек сохраните файл и закройте его. Затем перезапустите Redis сервис, чтобы применить новые изменения.
# systemctl daemon-reload. # systemctl перезапустить redis.
11. Чтобы получить доступ к Redis сервер, нам нужно использовать Redis-Cli (интерфейс командной строки для redis-server). По умолчанию он подключается к серверу на localhost (в 127.0.0.1 порт 6379). Обратите внимание: поскольку сервер защищен от клиентов с помощью пароля, выполнение команды перед аутентификацией должно завершиться ошибкой.
Использовать авторизация для ввода пароля аутентификации, как показано на следующем снимке экрана.
# redis-cli. 127.0.0.1:6379> список клиентов. 127.0.0.1:6379> AUTH [электронная почта защищена]
127.0.0.1:6379> список клиентов.
12. Чтобы подключиться к реплика (после их настройки, как описано в следующем разделе), используйте -час
и -п
параметры, чтобы указать 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.
14. Чтобы быстро установить Redis экземпляр в качестве реплики на лету, используйте Redis-Cli утилиту и вызовите РЕПЛИКАОФ как показано.
# redis-cli replicaof 10.42.0.247 6379. ИЛИ. # 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-адрес реплики в директиву bind.
# replica1. привязать 127.0.0.1 10.42.0.21 # replica2. привязать 127.0.0.1 10.42.0.34.
17. Чтобы настроить экземпляр Redis как реплика, использовать копия параметр и установите IP-адрес (или имя хоста) и порт главного узла в качестве значений.
Реплика 10.42.0.247 6379.
18. Затем, поскольку наш главный экземпляр защищен паролем, нам нужно установить пароль в конфигурации реплики, чтобы он мог аутентифицироваться на главном сервере, используя мастер параметр.
мастер [электронная почта защищена]
19. Кроме того, когда реплика теряет соединение с мастером или когда репликация выполняется, реплика настраивается для ответа на запросы клиентов, возможно, с помощью «устаревший" данные. Но если это первая синхронизация, то набор данных может быть просто пустым. Это поведение контролируется реплика-служить-устаревшие-данные параметр.
И с тех пор Redis 2.6 по умолчанию реплики доступны только для чтения, это контролируется реплика только для чтения параметр. Вы можете внести другие изменения в конфигурацию реплики в соответствии с потребностями вашего приложения.
20. После внесения всех необходимых изменений перезапустите службу Redis на всех репликах.
# systemctl перезапустить redis.
21. Также открытый порт 6379 в брандмауэре, чтобы разрешить подключения от мастера и клиентов к репликам, и перезагрузить правила брандмауэра.
# firewall-cmd --zone = public --permanenent --add-port = 6379 / tcp. # firewall-cmd --reload.
22. Однажды мастер-реплика Настройка репликации завершена, мы можем проверить, работает ли настройка, следующим образом.
На мастере выполните следующие команды.
# redis-cli. 127.0.0.1:6379> AUTH [электронная почта защищена]
127.0.0.1:6379> репликация информации.
23. Кроме того, проверьте статус репликации на репликах / ведомых устройствах следующим образом.
# redis-cli. 127.0.0.1:6379> репликация информации.
23. Теперь давайте протестируем репликацию, установив ключ-значение в главном экземпляре и проверьте, синхронизируются ли данные с репликами.
На мастере сделайте так:
# redis-cli. 127.0.0.1:6379> AUTH [электронная почта защищена]
127.0.0.1:6379> установить домен www.tecmint.com.
24. Затем проверьте, синхронизированы ли данные с репликами, как показано.
# redis-cli. 127.0.0.1:6379> получить домен.
25. Redis имеет функцию, которая позволяет главному экземпляру ограничивать риск потери некоторых операций записи в случае недостаточного количества реплик определенным количеством секунд.
Это означает, что мастер может перестать принимать записи, если их меньше, чем N реплики подключены, с задержкой меньше или равной M секунд, как контролируется мин-реплик для записи и мин-реплик-макс-задержка варианты соответственно.
Чтобы установить их, раскомментируйте их и установите значения в соответствии с вашими требованиями к настройке в /etc/redis.conf, как показано на следующем снимке экрана. Эта конфигурация означает, что после последнего эхо-запроса к репликам через 10 секунд, если в сети находится менее 2 реплик, мастер перестанет принимать записи.
мин-реплик для записи 2. мин-реплики-макс-лаг 10.
Вы можете найти больше вариантов в остальной части /etc/redis.conf файл конфигурации и подробнее о репликации в Документация Redis.
В следующей статье мы расскажем, как настроить Redis для обеспечения высокой доступности с Sentinel в CentOS 8. А пока оставайтесь заблокированными и не забудьте поделиться своими мыслями и вопросами, используя нашу форму комментариев ниже, чтобы вы могли связаться с нами.