Docker Swarm Redis 和 Sentinel 主从复制 IP 解析客户端故障



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

3 哨兵集群 -->使用 docker-compose 管理 1 个主集群和 2 个从集群

我已经为生态系统创建了一个 docker 覆盖网络,并使用 docker 堆栈部署来运行 docker compose yml。 每个节点上的 redis-cli 显示正确的 INFO 配置。 但是,外部客户端遇到了问题。

当我向客户端应用程序提供哨兵地址时(在我的情况下它是一个 Spring Redis 应用程序(,我正在获取主 redis 的覆盖网络的内部 IP 地址。 客户端无法识别此操作,并且会失败。 如何获取可从外部解析的 IP 地址? 其次,甚至有可能,因为码头工人群管理覆盖网络上的 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:

我已经注释了绑定语句,以便副本侦听所有接口 保护模式为否 此时没有身份验证。

哨兵会议:

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

最新更新