手机网站模板代码,国家信息企业网查询,python基础代码,网站建设小程序开发seo推广不知道有没有小伙伴跟我一样是使用的Docker镜像进行Redis集群案例模拟的#xff08;三台虚拟机确实带不动 #xff09;#xff0c;然后我遇到了一个问题#xff1a;Could not connect to Redis at 172.17.0.2:6379: Operation timed out 172.17.0.2是我其中一个Redis实例的…不知道有没有小伙伴跟我一样是使用的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 文档--nethost中的选项以获取更多信息。
我们来Docker这里瞅瞅
https://docs.docker.com/network/https://docs.docker.com/network/
果然发现了很关键的一句 容器是不会向外暴露任何端口的
所以才会出现IP能ping通但是加上端口后Operation timed out
当然后面也提供了解决方法启动容器时加--publish or -p
但是紧接着官网也提出了这么操作并不安全并建议如果想让一个容器可供其他容器访问则无需发布该容器的端口。通过将容器连接到同一网络通常是桥接网络来启用容器间通信。 虽然提供了处理方法但是个人还是建议直接按照官网的集群案例来进行集群搭建案例
https://redis.io/docs/management/scaling/#create-a-redis-clusterhttps://redis.io/docs/management/scaling/#create-a-redis-cluster