Я хотел бы настроить базовую установку Redis Sentinel с тремя узлами, используя новые функции TLS Redis 6. К сожалению, Redis 6 Sentinel не кажется достаточно умен, чтобы говорить TLS с клиентами.
Кто-нибудь знает, как это сделать, или, если это невозможно, есть ли какие-либо упоминания в Интернете о добавлении поддержки для этого в будущем? Кажется обидным иметь эти прекрасные функции TLS и не иметь возможности использовать их с собственными инструментами Redis.
Я знаю, что в прошлом люди использовали Stunnel для этого. С добавлением поддержки TLS в Redis я заинтересован в этом, только если это можно сделать без сторонних дополнений.
Моя настройка:
3 сервера Redis (6.0-rc, последний раз запускали на прошлой неделе), на которых запущен TLS с тестовыми сертификатами , как указано в документации Redis - один мастер и 2 реплики
3 Sentinel (6.0-rc, также последний раз запускали на прошлой неделе), не использующие TLS на своих портах (я бы хотел к, но это второстепенная проблема)
Что я пробовал:
Указание Sentinel на порт Redis TLS - это приводит к появлению большого количества ошибок TLS в журналах Redis о полученной неверной версии TLS, поскольку Sentinel не передает TLS Redis. Поскольку он терпит неудачу, Страж думает, что хозяин упал.
Добавление "https: //" в конфигурацию Sentinel перед главным IP-адресом - это приводит к тому, что Sentinel отказывается запускаться, говоря, что он не может найти главное имя хоста.
Добавление параметров TLS в Sentinel - это приводит к тому, что Sentinel пытается передать TLS на свои порты, но не на клиентов, что не помогает. Я не мог найти никаких вариантов, как заставить Sentinel разговаривать с клиентами TLS.
Указание Sentinel на порт Redis not-TLS (не идеально, я бы предпочел открыть только порт TLS) - это приводит к тому, что Sentinel сообщает о неправильном (не TLS) порту для мастера простому клиенту Python, с которым я тестирую (он буквально просто пытается получить основную информацию от Sentinel) - я хочу, чтобы клиент разговаривал с Redis через TLS по очевидным причинам
Добавление директивы «replica-announce-port» в Redis с Sentinel, по-прежнему указывающим на порт не-TLS - это не удается двумя способами: главный порт по-прежнему неверно указывается как порт не-TLS (похоже, из-за того, что главный порт является не реплика, и поэтому директива не применяется), и теперь Sentinel считает, что обе реплики не работают (поскольку сообщается о порте TLS, реплики обнаруживаются автоматически, и он не может разговаривать с репликами на порту TLS).
Мне известен этот вопрос StackOverflow (Redis Sentinel и TLS) - он старый и спрашивает о Redis 4, так что это не то.