问题1:
redis cluster 集群部署在阿里云上,服务部署在公司内网服务器,redis创建 clsuter集群时使用内网ip ,服务中指定redis集群的公网ip和端口,指定服务每隔 30s 刷新一次redis的集群拓扑。服务报错,连接不到内网ip 和端口,原因是刷新 redis 拓扑时获取到的 ip 是创建 clsuter 集群时使用内网 ip
解决:
将创建redsi cluster 集群指定的ip换成公网 ip
问题2:
将创建redsi cluster 集群指定的ip换成公网 ip 后,服务可用。但是服务获取redis拓扑时会同时获取到公网和内网的ip 一共12个节点,可能会造成redis无法确定master 和 slave 节点,所以进行进一步处理
解决:
首先在配置文件中使用 bind 指定 公网ip ,redis重启失败,没有找到指定的网卡,ip a 查看后,服务器没有公网网卡 通过询问GPT,发现 advertised-hostname 参数,可以强制 Redis 向集群中的其他节点以及客户端报告特定的外部 IP 地址。 在配置文件中添加 cluster-announce-ip <外部公网IP> cluster-announce-port <Redis实例端口> cluster-announce-bus-port <集群通信端口>