Docker和Redis搭配进行Sentinel或Cluster使用的大坑

docker默认是使用bridge的网络环境构建container

由于slave是基于对网络环境的检测来告知master自己的IP,类似地,sentinel是也是这样返回有效的master信息以及向其他sentinel广播自身位置,在docker环境中,这通常会导致slave和sentinel无法正常获取真实或有效的IP地址。

通常是类似如下

172.18.0.?
127.0.0.? 

【注意】上述的127.0.0.?是相对于container自身的localhost,而并非宿主机的。即在宿主机中访问127.0.0.?是访问不到反馈出来的地址的

在使用如jedis或redisson进行连接时,常常会出现以下情况:

  1. 拿到的上述地址在宿主机中是无法连接的
  2. 正常连接但sentinel之间无法互相发现,即选举/投票机制将会失效

查阅redis的文档

Redis Cluster and Docker

Currently Redis Cluster does not support NATted environments and in general environments where IP addresses or TCP ports are remapped.

Docker uses a technique called port mapping: programs running inside Docker containers may be exposed with a different port compared to the one the program believes to be using. This is useful in order to run multiple

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值