我的所有Redis服务器都配置如下:
硕士:192.168.0.106:7001,192.168.0.105.7001,192.168.0.112:7001
奴隶:192.168.0.106:7002,192.168.0.105:7002,192.168.0.122:7002
192.168.0.106:7002服务器是192.168.0.106:7001服务器的从属服务器,依此类推。我让所有服务器都运行起来,并且可以对所有服务器执行redis-cli。我可以看到17001和17002端口也打开了。但是当我跑步时:
./ redis-trib.rb create --replicas 1 192.168.0.106:7001 192.168.0.105:7001 192.168.0.112:7001 192.168.0.106:7002 192.168.0.105:7002 192.1268.0.112:7002
我收到错误:
创建群集
[错误]抱歉,无法连接到节点192.168.0.106:7001
我不知道如何在所有服务器正常工作且端口打开时如何排除故障?
有一点是我确实用密码保护了主人。也许redis-trib.rb无法处理受密码保护的服务器?
答案 0 :(得分:2)
redis-trib.rb无法处理受密码保护的Redis节点。
因此尝试在此类节点上使用它会导致[错误]抱歉,无法连接到节点。
为什么redis-trib.rb实用程序不处理经过身份验证的节点?
这与以下事实有关:当Redis节点受密码保护时,只有主端口上的通信(默认为6379)受到保护。其集群总线上的通信(默认端口+ 10000 = 16379),其中集群中的节点彼此通信不受保护。因此,当单个节点存在时,Redis群集实际上不受密码保护。因此,在Redis群集中的各个Redis节点上设置密码几乎不会增加安全性。因此,redis-trib.rb实用程序尚未实现任何身份验证。
此处提供更多信息:
https://groups.google.com/forum/#!topic/redis-db/Z8lMxTfDct8
答案 1 :(得分:1)
我遇到了同样的问题。
但是检查我的实例的redis.conf
我看到绑定选项被注释掉了,默认情况下Redis用*:port
启动进程。
所以我将其添加到redis.conf
,现在它完美无缺:
绑定0.0.0.0
如果出现此安全错误,您可能需要添加密码或指定正确的IP范围。
答案 2 :(得分:1)
当您使用外部IP时,而不是127.0.0.1。你必须在redis.conf中添加一个新行:“protected-mode no”
在教程“https://redis.io/topics/cluster-tutorial”中,您将看到必须在每个文件夹中创建一个redis.conf:7000,7001,...,7005
教程建议:
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
您只需添加一个新行:
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no
请记住保证机器防火墙内的安全。