Подключение к базе данных в кластере Redis

Способы подключения

К базе данных Redis можно подключиться двумя способами: напрямую или с использованием Redis Sentinel.

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

Не все клиенты Redis поддерживают подключение через Sentinel. В этом случае вы можете подключиться к хосту напрямую. Обратите внимание, что при этом вам придется самостоятельно отслеживать роли всех хостов. Если в прямом подключении нет необходимости, используйте Sentinel для более надежной работы с хостами.

Примечание

При подключении к хосту через Sentinel используйте порт 26379, а при подключении напрямую — 6379.

Хостам кластера Redis нельзя назначать публичные IP-адреса. Доступ к хостам возможен только из той же подсети, в которой находится хост.

Подключение к базе данных

В этом примере подключение к хосту Redis устанавливается с виртуальной машины, подключенной к той же подсети, что и хост.

  1. Создайте виртуальную машину с публичным IP-адресом в той же подсети, где находится хост Redis.

  2. Подключитесь к созданной ВМ через SSH.

    $ ssh <логин>@<публичный IP-адрес ВМ>
    
  3. Установите инструменты Redis на ВМ с помощью пакетного менеджера:

    $ sudo apt update
    $ sudo apt-get install redis
    
    $ sudo yum update
    $ sudo yum install redis
    
  4. Установите сертификат для доступа к базе данных:

    $ mkdir -p /usr/local/share/ca-certificates/Yandex
    $ wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" -O /usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt
    
  5. Создайте переменную, содержащую адрес и порт хоста, а также имя мастера БД.

    $ host=$(redis-cli -h <адрес хоста> -p 26379 sentinel get-master-addr-by-name <имя кластера> | head -n 1)
    
  6. Проверьте соединение с хостом:

    $ redis-cli -h $host -a <пароль БД> ping
    

    Если вернется ответ PONG, то соединение устанавливается успешно.