我正试图在我的系统上创建一个redis-哨兵集群,并在我的系统上构建并使它对主机可见(这是试图复制一个将在本地使用redis-sentinel的应用程序)。
我已经创建了下面的docker-compose.yaml文件来设置哨兵和redis本身
version: '2'
networks:
app-tier:
driver: bridge
services:
redis-sentinel:
image: s7anley/redis-sentinel-docker
environment:
- ANNOUNCE_IP=127.0.0.1
- ANNOUNCE_PORT=26379
- MASTER_NAME=mymaster
- MASTER=redis
networks:
- app-tier
ports:
- '26379:26379'
redis:
image: bitnami/redis:latest
environment:
- ALLOW_EMPTY_PASSWORD=yes
networks:
- app-tier
ports:
- '6379:6379'
volumes:
redis_data:
driver: local哨兵设法启动并找到了正确的redis主人,但是它似乎不尊重announce-ip选项,实际上它似乎完全忽略了它。
也就是说,当我在我的主机上启动redis-cli并询问主人的地址时,我得到以下信息
redis-cli -p 26379
127.0.0.1:26379> SENTINEL get-master-addr-by-name mymaster
1) "192.168.32.2"
2) "6379"
127.0.0.1:26379>报告的ip应该是127.0.0.1,而不是192.168.32.2 (D6是停靠者在网络中使用的内部IP )。
这是在码头映像中使用的sentinel.conf文件
port 26379
sentinel announce-ip 127.0.0.1
sentinel announce-port 26379
sentinel monitor mymaster redis 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster这就是在启动后redis-sentinel重写配置文件的样子。
port 26379
sentinel myid 4e7786e55f2b4ec31bdd36c1c3af6e2d3f2569e3
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.32.2 6379 2
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel current-epoch 0
# Generated by CONFIG REWRITE
dir "/data"
sentinel announce-ip "127.0.0.1"
sentinel announce-port 26379有人知道是什么导致了这一切吗?
发布于 2018-12-28 17:42:35
哨兵公告-ip 127.0.0.1
这句话适用于哨兵,而不是红服务器。这是哨兵将向其他哨兵公布的IP地址(他们会自动发现对方)。见相关文档。
如果您希望redis只监听127.0.0.1,我认为将其放在redis配置中应该有效:
绑定127.0.0.1
默认情况下,redis bind的所有网络接口。
https://serverfault.com/questions/934506
复制相似问题