Docker Swarm Redis и Sentinel с отказом клиента разрешения IP-адресов репликации master - slave

У меня проблема, и я не знаю, как ее решить. Моя экосистема redis sentinel выглядит следующим образом:

3 дозорных кластера -> Управление 1 главным и 2 подчиненными с помощью docker-compose

Я создал оверлейную сеть докеров для экосистемы и использовал развертывание стека докеров для запуска docker compose yml. Redis-cli на каждом узле отображает правильную конфигурацию INFO. Однако внешние клиенты сталкиваются с проблемой.

Когда я предоставляю контрольный адрес клиентскому приложению (в моем случае это приложение spring redis), я получаю внутренний IP-адрес оверлейной сети для главного redis. Это не распознается клиентом, и это не удается. Как я могу получить IP-адрес, который можно разрешить извне? Во-вторых, это возможно, поскольку docker swarm управляет IP-адресами в оверлейной сети. Это правильный подход, т. Е. Использование docker swarm? Любая обратная связь будет принята с благодарностью.

version: '3'

services:
  redis-master:
    image: redis:latest
    volumes:
      - "/docker-service-data/master:/data"
      - /redis-docker/redis.conf:/etc/redis.conf
    command: redis-server /etc/redis.conf
    ports:
      - 6379:6379
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]
    networks:
       - rev_proxy
  redis-slave:
    image: redis:latest
    volumes:
      - "/docker-service-data/slave:/data"
      - /redis-docker/redis.conf:/etc/redis.conf
    command: redis-server /etc/redis.conf --slaveof redis-master 6379 
    deploy:
      mode: replicated
      replicas: 2
      placement:
        constraints: [node.role == worker]
    networks:
       - rev_proxy
  sentinel_1:
    image: <private-registry>/redis-sentinel:1
    deploy:
      mode: replicated
      replicas: 3
    ports:
      - 26379:26379
    depends_on:
      - redis-master
    networks:
      - rev_proxy
networks:
  rev_proxy:
     external:
       name: rev_proxy_net

redis.conf:

Я прокомментировал инструкцию bind, чтобы реплика слушала все интерфейсы. Защищенный режим - no. На данный момент аутентификация отсутствует.

sentinel.conf:

sentinel monitor master redis-master 6379 2
sentinel down-after-milliseconds master 1000
sentinel parallel-syncs master 1
sentinel failover-timeout master 1000

person sharman    schedule 27.08.2017    source источник
comment
Опубликуйте свои полные конфигурации и docker-compsoe вы использовали   -  person Tarun Lalwani    schedule 27.08.2017
comment
Сообщите мне, если вам понадобится дополнительная информация   -  person sharman    schedule 27.08.2017
comment
Кто-нибудь сталкивался с этой проблемой?   -  person sharman    schedule 28.08.2017
comment
@sharman, вам повезло с этой настройкой?   -  person Jared    schedule 07.06.2019


Ответы (1)


Вам могут понадобиться опции version: '3.3' и endpoint_mode: vip. Перейдите по этой ссылке: https://docs.docker.com/compose/compose-file/#endpoint_mode

person sMiLo    schedule 07.12.2017