同步配置的时候其他哨兵根据什么更新自己的配置呢?

执行切换的那个哨兵,会从要切换到的新master(salve->master)那里得到一个configuration epoch,这就是一个version号,每次切换的version号都必须是唯一的。

如果第一个选举出的哨兵切换失败了,那么其他哨兵,会等待failover-timeout时间,然后接替继续执行切换,此时会重新获取一个新的configuration epoch 作为新的version号。

这个version号就很重要了,因为各种消息都是通过一个channel去发布和监听的,所以一个哨兵完成一次新的切换之后,新的master配置是跟着新的version号的,其他的哨兵都是根据版本号的大小来更新自己的master配置的。

发表评论

后才能评论

评论(1)

  • Noya 普通 2022-07-11 2:25 下午

    执行切换的那个哨兵在完成故障转移后会进行configuraiton配置信息传播。哨兵完成切换之后,会在自己本地更新生成最新的master配置,然后通过pub/sub消息机制同步给其他的哨兵。执行切换的那个哨兵,会从要切换到的新master(salve->master)那里得到一个version号,每次切换的version号都必须是唯一的,同步配置的时候其他哨兵根据这个version号来更新自己的master配置。
    如果第一个选举出的哨兵切换失败了,那么其他哨兵,会等待failover-timeout时间,然后接替继续执行切换,此时会重新获取一个新的version号。