【Redis】使用Docker镜像配置集群时的Operation timed out问题

不知道有没有小伙伴跟我一样是使用的Docker镜像进行Redis集群案例模拟的(三台虚拟机确实带不动= =),然后我遇到了一个问题:Could not connect to Redis at 172.17.0.2:6379: Operation timed out

172.17.0.2是我其中一个Redis实例的IP和端口号,并且我用主机ping 172.17.0.2是可以ping通的

于是我又仔细翻了翻官网集群的相关内容,发现了如下一段

大致翻译下:

目前,Redis Cluster 不支持 NAT 环境以及一般 IP 地址或 TCP 端口重新映射的环境。

而Docker使用技术的就是端口映射:在Docker容器内运行的程序可能会使用与程序认为正在使用的端口不同的端口来公开。

在 Docker 容器内运行的程序可能会使用与程序认为正在使用的端口不同的端口来公开。这对于在同一服务器中同时使用相同端口运行多个容器非常有用。

为了让Docker兼容Redis Cluster,需要使用Docker的主机组网模式。请参阅Docker 文档--net=host中的选项以获取更多信息。

我们来Docker这里瞅瞅

https://docs.docker.com/network/icon-default.png?t=N6B9https://docs.docker.com/network/

果然,发现了很关键的一句

容器是不会向外暴露任何端口的!

所以才会出现IP能ping通,但是加上端口后Operation timed out

当然,后面也提供了解决方法:启动容器时加--publish or -p

但是紧接着,官网也提出了这么操作并不安全,并建议如果想让一个容器可供其他容器访问,则无需发布该容器的端口。通过将容器连接到同一网络(通常是桥接网络)来启用容器间通信。

虽然提供了处理方法,但是个人还是建议直接按照官网的集群案例来进行集群搭建案例:

https://redis.io/docs/management/scaling/#create-a-redis-clustericon-default.png?t=N6B9https://redis.io/docs/management/scaling/#create-a-redis-cluster

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AQin1012

求小鱼干呢~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值