Содержание
Обзор
Redis является хранилищем структуры данных с открытым исходным кодом в памяти, которое может использоваться в качестве посредника сообщений, кэша и базы данных значений ключей. Он поддерживает несколько структур данных: хэши, списки, наборы, отсортированные наборы, растровые изображения, геопространственные индексы, гиперлоглоги и т. Д.
Что делает Redis уникальным, так это то, что его можно рассматривать как хранилище и кеш. Он спроектирован таким образом, что данные модифицируются и / или считываются из основной памяти компьютера.
Среди других функций Redis обеспечивает высокую доступность, через Redis Sentinelи автоматическое разбиение, через Redis Cluster, Кроме того, в Redis есть механизм репликации, который позволяет подчиненным экземплярам быть точными копиями основных экземпляров. Подчиненное устройство будет автоматически переподключаться к ведущему устройству каждый раз, когда разрывается связь, и его целью является его точная копия.
Поскольку Redis Sentinel обеспечивает высокую доступность Redis, он может автоматически обрабатывать сбои без вмешательства человека во многих случаях, но также предоставляет другие задачи, такие как мониторинг, уведомления и выступает в качестве поставщика конфигурации для клиентов.
Но, что происходит, когда Sentinel обнаруживает, что сервер Redis отключен? В этой статье мы узнаем, как создать полноценный высокодоступный виртуальный сервис для Redis.
Пожалуйста, примите во внимание, что эта конфигурация также может быть выполнена, даже если ваш сервер Redis не использует Sentinel для мониторинга.
Redis среда балансировки нагрузки
Сценарий, которого мы хотим достичь в этой статье, показан на диаграмме ниже.
Redis Sentinel проверяет состояние всех узлов Redis и изменяет роль сервера Redis при обнаружении ошибки.
Балансировщик нагрузки также проверяет состояние, но периодически делает это каждые несколько секунд. Могут быть случаи, когда Sentinel обнаруживает проблему, но балансировщик нагрузки может занять до нескольких секунд. Это может привести к тому, что балансировщик отправит запросы не тому мастеру, который только что вышел из строя, но был переключен Sentinel.
Zevenet предлагает способ решения этой проблемы, ферма L4 периодически выполняет проверки. С другой стороны, в бэкэнд также передается поток, который не содержит предыдущей проверки. Когда опекун фермы понимает, что серверная часть не отвечает, он поднимает тревогу, указывая, что поток не должен идти в этом направлении.
Принимая это во внимание, мы имеем с одной стороны чеки, а с другой - запросы. Если проверка не пройдена, поток немедленно отправляется на другой узел. Даже текущие петиции перенаправляются на другой онлайн-узел. Это будет объяснено более подробно в конфигурации.
Redis конфигурация балансировки нагрузки
Перед настройкой фермы нам нужно иметь виртуальный IP. Чтобы достичь этого, перейдите к Сеть> Виртуальные интерфейсы, Затем нажмите Действие> Создать виртуальный интерфейс, Далее выберите Родительский интерфейс, Имя виртуального интерфейса и ее IP-адрес:
Затем для виртуального сервера Redis нам нужно создать ферму L4xNAT. Для этого перейдите к LSLB> Фермы, а затем нажмите Действие и Создать Ферму.
Как только начальные параметры установлены, нажмите на Создавай, Далее перейдите к Расширенный поиск и убедитесь, что тип протокола TCP.
Затем перейдите в Услуги, Backends и Farm Guardian будут настроены здесь для расширенной проверки здоровья. Сначала найдите Backends раздел и нажмите на Действия> Добавить бэкэнд как показано ниже:
Мониторинг Redis и расширенная проверка работоспособности
Наконец, проверки Farm Guardian необходимы, чтобы убедиться, что мы всегда используем онлайн-узел, как объяснялось ранее. Для этого нам нужно настроить следующую команду как Farm Guardian:
check_tcp -E -H HOST -p PORT -s 'info replication\r\n' -e role:master -t 3
где ВЕДУЩИЙ и PORT будет заменен IP-адресом и портом каждого внутреннего сервера Redis. Команда тиражирование информации получит информацию от сервера Redis, чтобы проверить, какой мастер активен, соединения будут перенаправлены на сервер только при представлении мастера роли, как только Sentinel изменит роль, балансировщик нагрузки обнаружит это изменение и Redis Сервер будет помечен как отключенный. Флаг -t это количество секунд, в течение которых Farm Guardian будет ожидать ответа сервера Redis, а затем, если время ожидания истекло без ответа, сервер Redis будет помечен как выключенный. С другой стороны, после восстановления работоспособности сервера Redis он снова станет работоспособным.
Но перед изменением Guardian Farm для этой конкретной фермы, перейдите к Мониторинг> Farmguardian а затем нажмите Действие> Создать Farmguardian.
Выберите описательное имя для своей новой проверки работоспособности Redis Sentinel, например, check_redis_master как в примере, теперь выберите check_tcp в поле Farmguardian для копирования и нажмите на Создавай как показано ниже.
Наконец, скопируйте вышеупомянутую команду в Command параметр и выполните настройку, как показано ниже.
Нажмите на Отправить.
Теперь выберите эту новую расширенную проверку работоспособности Farm Guardian в виртуальной службе Redis. Вернуться к LSLB> Фермы, на ферму, созданную с именем RedisFarm, Услуги Вкладка. Наконец, выберите check_redis_master Команда только что создана под Проверка здоровья на бэкэнд.
Нажмите на Обновление ферма и теперь Redis будут полностью доступны.
Рекомендации
https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial