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

Posted

技术标签:

【中文标题】Docker Swarm Redis 和 Sentinel 与主从复制 IP 解析客户端故障【英文标题】:Docker Swarm Redis and Sentinel with master - slave replication IP resolution client failure 【发布时间】:2018-02-04 17:19:26 【问题描述】:

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

3 sentinel cluster --> 使用 docker-compose 管理 1 个 master 和 2 个 slave

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

当我向客户端应用程序(在我的情况下是 spring redis 应用程序)提供标记地址时,我正在获取主 redis 的覆盖网络的内部 IP 地址。这对客户来说是无法识别的并且它失败了。如何获得可以在外部解析的 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:

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

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

【问题讨论】:

发布您的完整配置和您使用过的docker-compsoe 如果您需要更多信息,请告诉我 有谁遇到过这个问题? @sharman,这个设置你运气好吗? 【参考方案1】:

您可能需要version: '3.3'endpoint_mode: vip 选项。 参考这个链接,https://docs.docker.com/compose/compose-file/#endpoint_mode

【讨论】:

以上是关于Docker Swarm Redis 和 Sentinel 与主从复制 IP 解析客户端故障的主要内容,如果未能解决你的问题,请参考以下文章

6.3.1版本elk+redis+filebeat收集docker+swarm日志分析

第142天学习打卡(Docker yaml规则 开源项目 Docker Swarm)

docker-compose,docker-machine,docker swarm 的简单总结

六十二、Docker Swarm-手动部署多service应用

使用Docker Swarm搭建分布式爬虫集群

docker里面swarm是啥?