Windows Cluster 分布式算法

在分布式系统中,都需要解决分布式一致性问题。那么,在Windows 集群中,使用了什么算法来保证集群的一致性呢——Paxos。Windows Server 故障转移集群 (WSFC) 使用 Paxos 算法在整个系统中同步更改。通过记录 Paxos Tag 值并保留历史记录,可以轻松监控节点之间的集群数据库同步。在分布式系统中,每个节点都存储提案数据。在Windows 集群中,节点和见证磁盘存储提案数据。

注意:文件共享见证并不存储集群数据(历史原因这就不得而知了)

在 Windows Server 集群中,集群数据库是存储集群配置的地方。这是一个名为 CLUSDB 的文件,其中包含一些辅助文件(CLUSDB.1.container、CLUSDB.2.container、CLUSDB.blf),你可以在 C:\Windows\Cluster (%systemroot%\Cluster) 中找到这些文件。

图片

集群数据库也存在于一个注册表配置单元中,该配置单元在集群服务启动时会被加载。数据在 HKEY_LOCAL_MACHINE\cluster。

图片

现在我们知道注册表存在于多个位置并在节点之间进行复制。这种复制对于一个健康的集群来说是至关重要的。你可以在名为 PaxosTag 的集群键下看到一个 DWORD 值(如上图)。这个就是版本号,它跟踪记录集群的任何更改,这对于节点和磁盘见证(如果存在)之间的集群数据库一致性很重要。如果你更改了集群配置,Paxos Tag的数值也将变化。

这是新版的 Paxos Tag 格式,也是使用冒号分隔为三段数据,例如 2021/01/13-07`59`06.363_28:2021/01/13-07`59`06.363_28:123416

每次更改集群配置时,内部同步过程都会向集群中的所有节点发送提案。这由一个序列号(Sequence Numbe)和一个提案号(ProposalNumber)组成。一旦提案者从大多数节点获得共识,它将选择一个值并将其广播给所有其他节点以提交该值。这是Paxos Tag算法的内部工作原理。
 

在Windows Server 2008 故障转移群集中,Paxos Tag由三个数字组成, 每个数字用冒号分隔开,例如 3:3:276。这三个数字表示NextEpochNumber、 LastUpdateEpoch Number和Sequence Number。该数字存储在注册表HKLM\Cluster 的PaxosTag中,在各个节点中应是保持相同的。

图片

当集群形成时,Epoch 数值将改变(新版本为集群形成时间戳)。每次对集群配置进行更新时,都会更最后的改序列号值。集群中的同步过程向集群中的所有节点发送一个提案。该提案由一个序列号和一个提案号组成。集群节点检查其集群配置的本地副本,以查看它是否具有更新的序列号或更高的提案号。如果节点没有更高的数字,则节点将接受提案值并发送回提案节点。如果集群中的大多数节点都接受了同一个提案,那么集群将达成“共识”。

所以,只有当集群恢复正常、或使用/forcequorum 开关(/FQ)启动集群时,Paxos Tag 的Epoch会发生改变。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值