背景
因业务需求,应用程序需要跨机房从公网地址访问Redis集群,但是无法正常访问。因为程序通过公网IP加端口访问到Redis集群,然后Redis返回集群信息(就是 cluster nodes命令的返回),程序再根据返回的集群信息去读写Redis集群。而当前集群监听在主机内网地址上,并且是通过内网地址创建的集群,因此返回的集群信息中各节点都是内网地址,程序就无法正常访问到集群。
解决
方法一
修改redis.conf配置文件
#端口号 port 6379 # IP绑定,绑定了服务器私网IP及环回地址 bind 192.168.61.16 127.0.0.1 # 指定公网ip cluster-announce-ip 122.51.151.130 # 集群节点映射端口 cluster-announce-port 6379 # Redis总线端口,用于与其它节点通信 cluster-announce-bus-port 16379
重新创建集群,这里创建集群的时候是可以用私网IP去创建的,创建好以后,通过cluster nodes
命令查看集群节点信息,可以看到节点对外发布的已经是公网IP了。
方法二
不修改redis.conf配置文件,保持原样
#端口号 port 6379 # IP绑定,绑定了服务器私网IP及环回地址 bind 192.168.61.16 127.0.0.1
重新通过公网IP创建集群,此时通过cluster nodes
命令查看集群节点信息,可以看到节点对外发布的已经是公网IP了。
网络
这里因为Redis集群是通过公网IP对外服务,因此需要开通各节点之间的公网访问网络策略,其中端口部分要开通节点服务端口和集群通信的总线端口(默认节点端口+10000)。
标签:IP,Redis,cluster,集群,公网,节点 From: https://www.cnblogs.com/Before/p/17482428.html