gpt4 book ai didi

Redis 集群 : No automatic failover for master failure

转载 作者:IT王子 更新时间:2023-10-29 06:02:56 25 4
gpt4 key购买 nike

我正在尝试用 6 台机器实现一个 Redis 集群。我有一个由六台机器组成的 vagrant 集群:

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 时,整个集群都会崩溃,但如果所有三个从机都死了,集群仍然可以正常工作。

如果master发生故障(容错),我应该怎么做才能让slave变成master?

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

另一个问题是假设我有六台 16GB RAM 的机器。在这个具有三主三从的 Redis 集群上,我能够处理多少总数据?

谢谢。

最佳答案

设置 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.

In your setup the slave of the terminated master considers itself unfit to be elected master since the time it last contacted master is greater than the computed value of:

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

因此,即使有冗余slave,集群状态也会变为DOWN,变得不可用。

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

cluster-slave-validity-factor 10

这将确保集群能够容忍一个随机的 Redis 实例故障。 (可以是slave也可以是master)

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

关于Redis 集群 : No automatic failover for master failure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34264813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com