2016-02-18 68 views
0

我已经配置这样我所有的Redis的服务器:使用redis-trib.rb创建群集时出现连接错误?

大师: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

我得到一个错误:

创建集群

[ERR]很抱歉,无法连接到节点192.168.0.106:7001

我不知道如何解决这一切的时候服务器正在工作,其端口是否打开?

有一件事是我确实拥有受密码保护的主人。也许redis-trib.rb无法处理受密码保护的服务器?

+0

你尝试不用密码?尝试从其他节点通信到192.168.0.106:7001?任何端口阻塞问题? – Sreeraj

+0

这是阻止redis-trib.rb连接的授权。它变成我们这个工具不处理受密码保护的redis服务器。 –

回答

2

redis-trib.rb无法处理受密码保护的Redis节点。

所以试图在这样的节点上使用它会导致[ERR]抱歉,无法连接到节点。

为什么redis-trib.rb实用程序不处理经过身份验证的节点?

它与一个事实有关,即当一个Redis节点受密码保护时,只有主端口上的通信(默认为6379)受到保护。其集群总线上的通信(默认端口+ 10000 = 16379),集群中彼此通信的节点不受保护。因此,Redis集群在单个节点时并不真正受密码保护。因此,在Redis集群中的单个Redis节点上输入密码几乎不会增加安全性。因此,redis-trib.rb实用程序尚未实施任何身份验证。

点击此处了解详情:

https://groups.google.com/forum/#!topic/redis-db/Z8lMxTfDct8

1

我得到了同样的问题。

但是检查我的实例的redis.conf我看到绑定选项已被注释掉,默认情况下,Redis以*:port启动进程。

所以我加入这redis.conf现在它完美的作品:

绑定0.0.0.0

如果这个安全错误,你可能需要添加一个密码或指定正确的IP范围。

+0

谢谢,很好地解决了我的问题。很高兴我可以使用0.0.0.0,所以我可以有一个通用的配置文件。 – flickerfly

1

当您使用外部IP,而不是127.0.0.1。你必须在redis中添加一个新行。CONF:“保护模式没有”

在本教程“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 

记住要保证机器的防火墙内的安全。

相关问题