我遇到了一个问题,我不确定如何解决这个问题。我的redis前哨生态系统如下:
3前哨集群-->使用docker-compose管理1个主服务器和2个从服务器
我已经为生态系统创建了一个docker overlay网络,并使用docker stack deploy来运行docker compose yml。每个节点上的redis-cli显示正确的信息配置。然而,外部客户端遇到了一个问题。
当我将前哨地址提供给客户端应用程序(在我的示例中,它是一个spring redis应用程序)时,我将获得主redis的覆盖网络的内部IP地址。这对客户端来说是不可识别的,它会失败。如何获取可以从外部解析的IP地址?其次,由于坞站群管理覆盖网络上的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_netredis.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发布于 2017-12-07 16:58:20
您可能需要version: '3.3'和endpoint_mode: vip选项。请参阅此链接,https://docs.docker.com/compose/compose-file/#endpoint_mode
https://stackoverflow.com/questions/45902031
复制相似问题