Docker Swarm Redis和Sentinel与主从复制IPparsing客户端故障

我遇到了一个问题,我不知道如何解决这个问题。 我的redis定点生态系统如下:

3哨兵群集 – >使用docker-composepipe理1个主站和2个从站

我已经为eco系统创build了docker overlaynetworking,并使用docker stack deploy来运行docker compose yml。 每个节点上的redis-cli显示正确的INFOconfiguration。 但是外部客户正在遇到问题。

当我将哨兵地址提供给客户端应用程序(在我的情况下,这是一个spring的redis应用程序),我得到主Redis的覆盖networking的内部IP地址。 这是客户无法识别的,并且失败。 我怎样才能得到一个可以从外部解决的IP地址? 其次,由于docker群pipe理覆盖networking上的IP地址,甚至有可能。 这是正确的方法,即使用docker群? 任何反馈将不胜感激。

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:

我已经评论了绑定语句,以便副本侦听所有接口保护模式是否此时没有身份validation。

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 

您可能需要version: '3.3'endpoint_mode: vip选项。 请参阅此链接https://docs.docker.com/compose/compose-file/#endpoint_mode