Redis哨兵不能故障转移从属服务

时间:2020-03-14 14:35:21

标签: redis redis-sentinel

我要部署一个简单的主从Redis群集,其中包含两个服务器:192.168.0.101, 192.168.0.103,其中101个是主服务器。

这是103服务器上的sentinel.conf

port 26379

bind 192.168.0.103 127.0.0.1

sentinel myid 49f552d5540fdcb8aa60be25208c56b689d3c0b0
sentinel monitor mymaster 192.168.0.101 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 900000

sentinel auth-pass mymaster arsenal

sentinel config-epoch mymaster 0

# Generated by CONFIG REWRITE
dir "/etc/redis"
sentinel leader-epoch mymaster 3
sentinel known-slave mymaster 192.168.0.103 6379

sentinel current-epoch 3

和我在103服务器上的redis.conf:

bind 127.0.0.1 ::1
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
daemonize yes
supervised no

dbfilename dump.rdb
dir /var/lib/redis
slaveof device1 6379
masterauth arsenal
slave-serve-stale-data yes
slave-read-only yes

slave-priority 100
requirepass arsenal

slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no

activerehashing yes

aof-rewrite-incremental-fsync yes

我从192.168.0.103开始在redis-server sentinel.conf --sentinel上的哨兵

7951:X 14 Mar 14:19:48.479 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
7951:X 14 Mar 14:19:48.479 # Sentinel ID is 49f552d5540fdcb8aa60be25208c56b689d3c0b0
7951:X 14 Mar 14:19:48.479 # +monitor master mymaster 192.168.0.101 6379 quorum 2

7951:X 14 Mar 14:20:48.480 # +sdown slave 192.168.0.103:6379 192.168.0.103 6379 @ mymaster 192.168.0.101 6379
7951:X 14 Mar 14:21:11.577 # +sdown master mymaster 192.168.0.101 6379

我的哨兵呼叫是这样的:

sentinel = Sentinel([('device3', 26379)], password='arsenal')

sentinel.discover_master('mymaster')

MasterNotFoundError: No master found for 'mymaster'

问题是我尝试在101上停止Redis服务器服务后,哨兵无法将103服务器切换为主服务器。

有人知道吗?谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 在您的配置sentinel monitor mymaster 192.168.0.101 6379 2中,法定人数为2,这意味着只有两个或两个以上的Sentinels认为主服务器宕机,可以启动故障转移。

  2. 请参阅Redis Sentinel doc,只能稳定部署三个或三个以上的Sentinel,如果只有一个Sentinel,则无法选举领导者(获得多数票)来启动故障转移。