我正在尝试用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-server
我编辑了上述所有服务器的/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-server时,整个集群都会宕机,但如果所有三个从服务器都死了,集群仍然可以正常工作。
如果一个主机出现故障,我应该怎么做才能让一个从机变成主机(容错)?
我假设redis会处理所有这些事情,在部署集群后我不需要担心它。我说的对吗?还是我必须自己做?
另一个问题是,假设我有6台16 is的机器。在这个三主三从的Redis集群上,我能处理多少数据?
谢谢。
发布于 2017-01-28 07:47:38
设置cluster-slave-validity-factor 0可能是这里的罪魁祸首。
# 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
因此,即使使用冗余从站,群集状态也会更改为DOWN并变为不可用。
您可以尝试使用不同的值,例如建议的默认值
cluster-slave-validity-factor 10
这将确保集群能够容忍一个随机的redis实例故障。(支持从实例或主实例)
关于你的第二个问题:6台16 of内存的机器将能够作为一个由3个主实例和3个从实例组成的Redis集群。因此,理论上的最大值是16 So x 3数据。如果打开了cluster-require-full-coverage,这样的集群最多可以容忍一个节点的故障。否则,它可能仍然能够在功能实例中仍可用的分片中提供数据。
https://stackoverflow.com/questions/34264813
复制相似问题