背景

因业务需求,应用程序需要跨机房从公网地址访问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)。

posted on 2023-06-15 11:27  lzc_jack  阅读(304)  评论(0编辑  收藏  举报