2015-12-14 145 views
1

我想实现一个Redis群集与6机器。 我有六台机器的一个无业游民集群:Redis群集:没有自动故障转移为主故障

192.168.56.101 
192.168.56.102 
192.168.56.103 
192.168.56.104 
192.168.56.105 
192.168.56.106 

所有正在运行的Redis服务器

我编辑上述所有服务器的/etc/redis/redis.conf文件中添加此

cluster-enabled yes 
cluster-config-file nodes.conf 
cluster-node-timeout 5000 
cluster-slave-validity-factor 0 
appendonly yes 

然后我在六台机器中的一台上运行这个程序;

./redis-trib.rb create --replicas 1 192.168.56.101:6379 192.168.56.102:6379 192.168.56.103:6379 192.168.56.104:6379 192.168.56.105:6379 192.168.56.106:6379 

Redis集群已启动并正在运行。我通过在一台机器上设置值显示在其他机器上手动检查。

$ redis-cli -p 6379 cluster nodes 
3c6ffdddfec4e726f29d06a6da550f94d976f859 192.168.56.105:6379 master - 0 1450088598212 5 connected 
47d04bc98ab42fc793f9f382855e5c54ab8f2e20 192.168.56.102:6379 slave caf2cec45114dc8f4cbc6d96c6dbb20b62a39f90 0 1450088598716 7 connected 
040d4bb6a00569fc44eec05440a5fe0796952ccf 192.168.56.101:6379 myself,slave 5318e48e9ef0fc68d2dc723a336b791fc43e23c8 0 0 4 connected 
caf2cec45114dc8f4cbc6d96c6dbb20b62a39f90 192.168.56.104:6379 master - 0 1450088599720 7 connected 0-10922 
d78293d0821de3ab3d2bca82b24525e976e7ab63 192.168.56.106:6379 slave 5318e48e9ef0fc68d2dc723a336b791fc43e23c8 0 1450088599316 8 connected 
5318e48e9ef0fc68d2dc723a336b791fc43e23c8 192.168.56.103:6379 master - 0 1450088599218 8 connected 10923-16383 

我的问题是,当我关闭或停止任何一台机器是master集群整体下降对Redis的服务器,但如果所有的三个从死亡的集群仍然正常工作。

我应该怎么做,以便在主站发生故障时从站变为主站(容错)?

我假设redis处理所有这些事情,在部署集群后我不用担心它。我是对的还是我必须自己做事?

另一个问题是可以说我有六个16GB RAM的机器。在这个拥有三位主人和三位奴隶的Redis集群中,我能够处理多少数据?

谢谢。

+1

关闭为什么?这个问题有什么不对?有些意见会很好。 – Nagri

+0

//,谁关闭了? –

回答

1

设置cluster-slave-validity-factor 0可能是这里的罪魁祸首。

from redis.conf

# A slave of a failing master will avoid to start a failover if its data 
# looks too old. 

在你设置的终止主的奴隶认为自己不适合,因为它最后一次联络高手比的计算值越大,时间应选主:

(node-timeout * slave-validity-factor) + repl-ping-slave-period

因此,即使使用冗余从站,群集状态也会更改为“关闭”并变为不可用状态。

您可以用不同的值,例如,建议的默认

cluster-slave-validity-factor 10

这将确保群集能够容忍一个随机的Redis实例失败尝试。 (它可以是从服务器或主服务器)

对于第二个问题:每台16GB RAM的六台计算机都可以用作3个主实例和3个从实例的Redis集群。所以理论最大值是16GB x 3数据。如果cluster-require-full-coverage已打开,则此群集最多可容忍一个节点故障。否则它可能仍然能够在正在运行的实例中仍然可用的碎片中提供数据。

+0

这个答案是错误的,0禁用了这个功能,并确保一个奴隶将*总是*尝试故障转移为主。 –

相关问题