Настройка Redis Sentinel Docker

По сути, я пытаюсь настроить один экземпляр докера Redis-sentinel и хочу совершать вызовы из своего контейнера приложения. Проблема, с которой я столкнулся, заключается в следующем: контейнер redis-sentinel связан с контейнером приложения.

Итак, изначально приложение запрашивает у процесса-стража информацию о мастере Redis. Затем часовой говорит, что это «127.0.0.1». Но контейнер приложения предполагает, что он является локальным для контейнера. Это можно обойти с помощью параметров анонса-ip/announce-port, передаваемых в начале процесса Sentinel. Однако вопрос вот в чем -

контейнер redis-sentinel пытается запуститься до того, как будет установлена ​​ссылка. Таким образом, даже во время запуска дозорного процесса сетевой интерфейс, следовательно, IP-адрес ссылки недоступен.

Одно из решений, которое я мог бы придумать, - это ждать, пока сетевой интерфейс не будет установлен. Таким образом, вопрос сводится к тому, «как контейнер с исходным кодом может обнаружить свой недавно установленный сетевой интерфейс? Есть ли что-нибудь, установленное докером в контейнере с исходным кодом, чтобы он мог обнаруживать разные ссылки?»

Связывание управляется в файле docker-compose.

Если есть какое-либо другое простое решение, я также могу попробовать его.


person user1489580    schedule 10.02.2016    source источник


Ответы (2)


Нет необходимости в специальном образе дозорного или возиться с сетью. См. мой проект redis-ha-learning с использованием Spring Data Redis, bitnami/redis и bitnami/redis-sentinel изображения. Файл Docker Compose находится здесь . Мой код автоматически определяет часовых на основе имен контейнеров Docker Compose.

person Abhijit Sarkar    schedule 16.11.2020

Итак, решение, которое сработало для меня, — просто прочитать файл /etc/hosts в исходном контейнере. Я занят ожиданием установления связи, а затем использую этот IP-адрес сетевого интерфейса для запуска процесса дозорного. Это временное решение, которое нельзя масштабировать. Redis-sentinel все еще не готов к производству в формате, допускающем докеризацию, как подтверждается в этом сообщении. . Поэтому я решил установить Redis/sentinel на физические хосты.

person user1489580    schedule 11.02.2016