在这里插入图片描述
首先要在redis目录的src目录下执行下面命令(前提要有redis-trib.rb)

redis-cli --cluster create --cluster-replicas 1 8.130.98.47:6379 8.130.98.47:6380 8.130.98.47:6381 8.130.98.47:6389 8.130.98.47:6390 8.130.98.47:6391

在这里插入图片描述
解决方法:
先看一下redis.conf中有没有限制ip访问,记得都注释掉
在这里插入图片描述
protected-mode 设为no
在这里插入图片描述

防火墙和安全组要对集群的端口:6379 6380 6381 6389 6390 6391和16379 16380 16381 16389 16390 16391端口这12个端口都放行
特别注意,16379 16380 16381 16389 16390 16391这6个端口也一定要开放,具体原因见下

防火墙命令
添加指定需要开放的端口
firewall-cmd --add-port=6379/tcp --permanent
重载入添加的端口
firewall-cmd --reload

使用阿里云等服务器时要去开放相应端口的安全
在这里插入图片描述
开放这12个端口的原因:(转自他人)

每个Redis集群中的节点都需要打开两个TCP连接。一个连接用于正常的给Client提供服务,比如6379,还有一个额外的端口(通过在这个端口号上加10000)作为数据端口,比如16379第二个端口(本例中就是16379)用于集群总线,这是一个用二进制协议的点对点通信信道。这个集群总线(Cluster bus)用于节点的失败侦测、配置更新、故障转移授权,等等。客户端从来都不应该尝试和这些集群总线端口通信,它们只应该和正常的Redis命令端口进行通信。注意,确保在你的防火墙中开放着两个端口,否则,Redis集群节点之间将无法通信。
命令端口和集群总线端口的偏移量总是10000

注意,如果想要集群按照你想的那样工作,那么集群中的每个节点应该:

正常的客户端通信端口(通常是6379)用于和所有可到达集群的所有客户端通信
集群总线端口(the client port + 10000)必须对所有的其它节点是可到达的
也就是,要想集群正常工作,集群中的每个节点需要做到以下两点:

正常的客户端通信端口(通常是6379)必须对所有的客户端都开放,换言之,所有的客户端都可以访问
集群总线端口(客户端通信端口 + 10000)必须对集群中的其它节点开放,换言之,其它任意节点都可以访问
如果你没有开放TCP端口,你的集群可能不会像你期望的那样工作。集群总线用一个不同的二进制协议通信,用于节点之间的数据交换。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐