随笔 - 23  文章 - 2 评论 - 2 阅读 - 51469
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

背景

因业务需求,应用程序需要跨机房从公网地址访问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   lzc_jack  阅读(473)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示