Поддержка Redis 6 TLS и Redis Sentinel - PullRequest
0 голосов
/ 20 апреля 2020

Я хотел бы настроить основную c установку Redis Sentinel с тремя узлами, используя новые функции TLS в Redis 6. К сожалению, не похоже, что Redis 6 Sentinel достаточно умен, чтобы говорить по TLS клиентам.

Кто-нибудь знает способ сделать это, или если это невозможно, если есть какие-либо упоминания в Интернете о добавлении поддержки для этого в будущем? Кажется, стыдно иметь эти замечательные функции TLS и не иметь возможности использовать их с собственными инструментами Redis.
Я знаю, что в прошлом люди использовали Stunnel для этого. С поддержкой TLS, добавленной в Redis, я заинтересован в этом, только если это можно сделать без сторонних добавлений.

Моя настройка:
3 сервера Redis (6.0 -r c, последний раз на прошлой неделе), запуск TLS с проверочными сертификатами , как указано в документации Redis - один мастер и 2 реплики
3 часовых (6.0-r c, также последний раз вытащил на прошлой неделе), не работает TLS на своих портах (хотелось бы, но это вторичная проблема)

Что я пробовал:

  1. Указание Sentinel на порт Redis TLS - это приводит к большому количеству ошибок TLS в журналах Redis по поводу получения неверной версии TLS, поскольку Sentinel не передает TLS Redis. Поскольку это не удается, Sentinel считает, что мастер не работает.

  2. Добавление «https: //» в конфигурацию Sentinel перед главным IP-адресом - это приводит к отказу Sentinel в запуске, говоря: он не может найти главное имя хоста.

  3. Добавление опций TLS в Sentinel - это приводит к тому, что Sentinel пытается передавать TLS по своим портам, но не клиентам, что не помогает. Я не смог найти никаких вариантов, чтобы заставить Sentinel говорить по TLS клиентам.

  4. Указывать Sentinel на порт Redis not-TLS (не идеально, я бы предпочел открыть только порт TLS). ) - это приводит к тому, что Sentinel сообщает неправильный (не-TLS) порт для мастера простому Python клиенту, с которым я тестирую (он буквально просто пытается получить основную информацию от Sentinel) - я хочу, чтобы клиент говорил с Redis over TLS по очевидным причинам

  5. Добавление директивы replica-announce-port к Redis с Sentinel по-прежнему указывает на порт not-TLS - это дает сбой двумя способами: главный порт по-прежнему сообщается неправильно как порт не-TLS (кажется, потому что мастер не является репликой, и поэтому директива не применяется), и теперь Sentinel считает, что реплики не работают (поскольку сообщается о порте TLS, реплики автоматически обнаружен, и он не может говорить с репликами на порту TLS).

Мне известен этот вопрос StackOverflow (Redis Sentinel и TLS) - он старый и спрашивает о Redis 4, поэтому он не тот.

...