WSFC动态仲裁容易被忽略的两点

可以看到老王在仲裁这个部分,花了三个篇幅去讲,老王认为是值得的,因为在老王看来管理WSFC群集无非是架构设计要设计好,然后日常维护群集的可用,执行群集细部管理,细部日志分析,更新迁移等等,其中维护群集持续可用是我们在管理群集中最常见到的,而群集到底可不可用,和仲裁,见证,投票这些是有直接关系的

很多时候可能如果你不清楚仲裁是怎么回事,群集停了你也不知道是怎么回事,因此老王多花了一些篇幅来仔细把仲裁技术刨开来讲,力图让大家理解透彻,又花了两个篇幅以场景的形式把2012动态仲裁技术和群集其它仲裁技术结合,重现在一些场景下的操作,相信认真看过的朋友都会有收获

那么看过的朋友可能都会觉得,动态仲裁是一项好技术啊,帮助我们自动调整投票,确保群集可以站立到最后一个节点,绝大部分人也都会说,2012开始有了动态仲裁,群集就一定可以支持到最后一个节点,一定吗?其实是不一定的,我们仍需要冷静的看待,经过老王的研究,发现这里有两种场景下,动态仲裁是不会支持到最后一个节点的

第一种场景,老王在动态仲裁第一篇中也有所提到,并附了图片说明,假设当前群集还剩下两个节点运行,无见证磁盘,采用多数节点仲裁,启用动态仲裁,默认动态仲裁随机挑选一个节点去掉投票

这时就分为以下三种情况

情况1.如果非投票节点断电,群集可以正常运行

情况2.投票节点操作系统正常关机,票数可以正常交换,群集可以正常运行

情况3.投票节点断电,群集不能运行,票数来不及交换,需要强制仲裁启动

一旦遇上了情况3,事实上老王感觉情况会很常见,一旦这时候节点1被选中有投票,节点2没投票,忽然节点1断电,节点2因为没有交换过来节点投票,也会下线,整个群集关闭,这时候只有强制启动才可以

因此在这种多数节点,无见证磁盘的情况下,群集到底能不能挺到最后一个节点,是有一定几率的,百分之66左右的几率你遇上情况1和情况2,群集正常运行,如果遇上情况3,则失去了站立至最后一个节点的效果,仍需要使用强制仲裁

微软肯定也发现了这个问题,于是微软在2012R2开始,在动态仲裁技术里面也把动态见证的技术加了进去,即见证在的情况下,我们始终可以根据节点变化,动态调整见证的投票,来确保群集始终是奇数,这时候不论是什么情况,即使像是上面说的情况3,剩下两个节点,其中一个节点忽然断电,但只要另外一个节点可以和见证联系,群集就依然可以站立到最后一个节点。

这样说起来也没错,见证如果始终在的话,群集确实可以支持到最后一个节点,但是如果结合实际环境去考虑,万一我们使用了共享见证或者磁盘见证,就需要也保证它们的可用性,如果忽然见证联系不上了会发生什么呢,我的群集是否还可以支撑到最后一个节点

根据老王的实际测试发现了一个很容易被忽视的问题

我通过实际的测试来为大家呈现出来

时间节点1:群集四个节点 + 共享见证 全部存活,共计五票

时间节点2 宕机一个节点,动态见证自动去掉一票,共计三票

时间节点3 再宕机一个节点 动态见证自动加上一票,共计三票

这时发生一个网络故障,共享见证也无法连接,我们直接取消共享见证的共享状态

这时如果在存活的两个节点上面运行查看投票数命令,可以看到,依然还是2个节点+1个见证投票

尽管这时日志中已经报错说共享见证资源无法访问,此时两个节点的事件管理器都会被文件共享失败的日志塞爆

时间节点4 剩余两个节点宕机一个

可以看到这时整个群集都已经关闭

这时只有强制仲裁启动群集节点

强制启动群集之后,节点1和节点2正常通信上线,可以看到现在群集还是被文件共享无法联机的日志淹没,我们可以尝试把群集仲裁模式配置为无见证即多数节点模式进行缓解

尝试配置多数节点会出现失败,提示我们现在群集无法形成仲裁

这时只有再有一个节点加入时,可以正常形成多数仲裁,才可以配置为多数节点仲裁模型

这时当第三个节点再次宕机,群集会动态仲裁选择两节点的其中一票,确保群集始终是奇数投票,之前共享见证失效导致的问题已经解决,这时候两个节点在不使用强制仲裁就有百分之66左右的几率可以坚持到最后一个节点。

我们可以看到,这里的关键在于时间节点三,3节点变成2节点,之后共享见证突然失效,在一个理想的情况下这时应该群集动态仲裁会感应到共享见证失效,然后重新调整群集投票数,随机选择一票存活

然而实际情况是当共享见证忽然失效时,群集仲裁并没有感应到,然后做动态仲裁调整,查看命令会发现还是2个节点票+1个见证票,其实这时候共享见证已经不在了,查看日志可以看到共享见证已经失败

但群集并没有去掉见证的投票,也没有动态调整至1票,因此这时如果再宕机一个节点群集将关闭,老王猜想这里的关键在于共享见证失效时,状态是“失败”所导致的,群集没有去掉该见证的投票,也没有动态调整节点投票。这就很危险,在这种不正常工作的情况下,再坏一个节点就要强制启动群集

因此老王在想会不会是动态仲裁偏袒磁盘见证,不重视共享见证呢?难道共享见证除了时间分区还有这个问题吗?于是很快老王又尝试了磁盘见证

时间节点3 :磁盘见证情况下 群集还剩下三个节点存活,这时宕机一个节点,紧接着群集磁盘也禁用

这时虽然见证磁盘已经禁用,但是群集并不会立刻感知到,可见状态还是联机

经过一段时间后状态会变成联机挂起,仲裁磁盘会根据故障策略逐个尝试在各个节点挂起,但这是见证票数和节点票数依然没有动态调整

最终见证磁盘变成失败状态,但是依然没有调整见证投票数和节点投票数

因此可以看出,当见证磁盘忽然发生故障无法访问的时候,这时候开始群集的动态仲裁就已经非正常工作,不论见证磁盘变成联机挂起或是失败,只要坏掉其中一个节点,经过一会群集一定会判定当前55无法形成仲裁而关闭群集

最后一个节点尝试形成群集,但过数秒后失败,因为没有不能进行仲裁操作,不存在多数一方投票

因此大家可以看出,不论是共享见证还是磁盘见证都面临这个问题

即在从3节点剩到2节点时,群集见证忽然失联,群集将不会动态调整投票,这时1个节点再宕机时,群集会关闭,需要手动强制仲裁,并应切换为多数节点仲裁模式,防止再次发生

共享见证失联后,在这种情况下会直接在日志中不断写入共享见证失败,但动态仲裁一直不会调整见证和节点的投票

磁盘见证则是会根据磁盘策略,先尝试联机挂起,之后状态失败,但动态仲裁同样在群集磁盘失联后,始终不会动态调整见证和节点的投票

除非磁盘见证状态会变成脱机,在一个理想的情况下,磁盘见证失效会是脱机状态,然后释放出投票,群集感知到见证票数失去,动态再调整一个节点的票数,现在群集是奇数一票

但根据老王的观察,在3剩2,磁盘见证再忽然失效的情况下,磁盘见证的状态会始终是失败的,并不会变成脱机

如果磁盘见证的情况使脱机的,老王尝试,发现只有在磁盘处于正常状态时候,可以手动将状态改为脱机,在磁盘见证正常脱机的情况下,会按照我我们预想的去掉见证的投票,再随机去掉一个节点的投票

因此当发生这种见证忽然失联的场景时,共享见证和磁盘见证所面临的问题是一致的,并不存在偏袒关系,老王感觉这应该是动态仲裁检测机制的一个bug,当见证忽然失联时候,可以置为失败状态,但是应该可以动态去掉失败状态见证的票数,重新动态调整节点投票,不应该因为一个见证的失联而导致整个动态仲裁接下来的都非正常的工作。

所以,在使用动态仲裁的时候需要考虑到以下两点可能会遇见但容易被忽略的问题

  1. 纯粹使用多数节点,动态仲裁调整节点数,当剩下2节点时,有百分之66左右的几率群集可以正常存活至最后一个节点,当被选中投票节点忽然断电宕机,则群集关闭,需要手动强制启动群集。
  2. 使用见证加节点投票数,动态仲裁+动态见证,当3剩2场景下,见证忽然失联,见证并不会去掉自身的一票,动态仲裁也并不会自动调整至1票,如果再宕机一个节点,群集将关闭,这时需要手动强制启动一个节点,当其它两个节点恢复时,可以手动切换至多数节点仲裁模型,这样当再次出现3剩2场景下,会自动调整至1票,自动坚持至百分之66左右几率存活到最后一个节点场景,然后由于我们是强制启动的群集,因此即便当见证以后再恢复,强制启动的群集数据库也会盖过见证磁盘的数据库。
时间: 2024-10-01 06:09:30

WSFC动态仲裁容易被忽略的两点的相关文章

WSFC动态仲裁及投票调整2

OK~ WSFC 2012 R2 年度盛宴开始~ 在本文中,老王将用一系列的场景,把动态仲裁,动态见证,票数调整,LowerQuorumPriorityNodeID,阻止仲裁等群集仲裁技术串起来,完成一个又一个复杂的场景,本篇文章可能并不太适合对于WSFC不了解的朋友,适合对于WSFC群集仲裁技术及2012动态仲裁技术有一定初步了解的朋友,如果您还不了解WSFC,建议您去先看下老王写过的博客,或者其它地方相关的资料,如果您对于WSFC仲裁,动态仲裁技术已经有了初步的了解,相信跟这老王这篇文章中的

WSFC动态仲裁及投票调整1

在上一篇中老王以2008R2WSFC为例,介绍了仲裁发生时的变化处理,到了2012时代开始,这发生了很大的变化,甚至我们要重新去思考仲裁 2008及以前时代的仲裁比较死板,就好像你和群集说好了,3个节点的多数仲裁模型,我至少有两个节点运行,那么一旦当你的群集剩下最后一个节点的时候,群集一定会是关闭的,因为08时代的群集主要强调的遵循仲裁模型,你与群集订好的仲裁协议不可以被违反,即使你剩下的这个节点可以提供服务,但是群集也会把它关闭掉,除非你使用强制仲裁启动群集,所以在08时代强制仲裁可以说是经常

Windows WSFC文件共享仲裁故障处理

问题现象:部署的WSFC仲裁文件夹共享无法访问,脱机状态.共享又无法恢复,这时需要更换一个新的共享文件夹充当仲裁角色.处理步骤:1.添加新的共享文件夹充电仲裁角色.2.添加新的共享文件夹充电仲裁角色后,发现在Alwayson的高可用性组中还是使用之前脱机状态的共享文件夹3.重新配置群集仲裁角色,选择不配置仲裁角色.此时脱机故障的仲裁角色将被删除.4.删除新添加的共享仲裁,重新配置新文件共享仲裁5.至此Alwayson故障转移正常 原文地址:https://blog.51cto.com/49641

微软WSFC全方位解析

Windows Server Failover Clustering是微软重要的Windows Server功能,它为微软众多企业级平台提供底层高可用机制,掌握WSFC的概念原理,功能使用,故障排错将对管理员运维有很大帮助,本系列文章将从WSFC的概念介绍,功能使用,故障排错,性能优化,WSFC 2016新功能解析等多个层面来为大家介绍WSFC,一层层揭开它的神秘面纱,让更多朋友知道它,使用它 WSFC概念与管理操作知识补遗21篇: 浅谈群集与分布式基础知识 http://blog.51cto.

WSFC仲裁模型优化方案选型

WSFC仲裁模型优化方案选型 生产环境某系统数据库高可用环境描述 生产环境某系统部署为主.备.灾备三节点SQL Server 2014 AlwaysOn AG,操作系统为Windows Server 2012 Standard,环境基于域(Domain)和Windows故障转移集群(WSFC).无见证磁盘,采用多数节点仲裁.主.备都有投票权,灾备无投票权.默认启用了动态仲裁,默认动态仲裁随机挑选一个节点去掉投票权.生产环境当前投票在备节点. 第1部分:测试环境资源描述 Windows故障转移群集

WSFC日志分析进阶篇

在群集日志分析基础篇中,老王为大家介绍了几种群集日志的位置和用途,例如事件管理器系统日志中可以告诉我们,当群集出现故障时,大体是什么原因导致的,给出一个方向,应用程序日志里面的FailoverClustering - Manager -Diagnostic日志可以帮助我们在事件发生后回溯执行过那些操作,FailoverClustering - Operational日志可以帮助我们了解群集资源,网络检测,安全的基本变化情况是否正常,还有群集管理器中的汇总日志,这些日志,通常情况下可以为我们指出一

WSFC基础知识奠基

前面主要和大家介绍了一下群集的种类,以及一些群集通用的基本知识,本章开始我们将专注于微软故障转移群集的深入研究与理论解析 微软故障转移群集即是我们上篇文章介绍的,一个典型的高可用性群集解决方案,它内置在Windows Server的角色与功能里面,不需要安装额外工具,故障转移群集通常情况下都是主从工作的模式,即一个群集应用同时只有一个节点对外提供服务,然后故障转移群集利用心跳检测机制检测节点存活状态,一旦检测到节点宕机,会通过查询群集数据库,来讲宕机节点承载的群集应用进行上线 同时故障转移群集也

WSFC SQL应用磁盘阵列替换

在上篇文章中,我们讲了WSFC上层文件服务器应用数据磁盘的替换与升级,实际上我们可以有好多个场景去适用这种替换方式,第一,扩容替换 ,就是我们上篇所演示的那样,第二,坏损替换,事先文件服务器好的时候,把数据拷贝出来,某天忽然群集数据磁盘坏了,直接插入新磁盘,把备份的内容还原进来,点击修复磁盘即可. 那么基于上篇文章提到的内容,本篇我们再来看一种场景,针对于SQL Server群集应用,完整替换群集磁盘阵列,应该怎么处理. 一个SQL群集会有仲裁磁盘,DTC磁盘,数据磁盘,甚至日志磁盘,我们假设这

Windows Server 群集仲裁

群及仲裁的用意 群集仲裁的目的之一是防止群集出现网络分区的时候导致群集脑裂,脑裂是群集出现分区(或者叫分组)的结果,群集分区意味着两个分区都认为对方已经不存在或者失效,于是会争夺群集资源的控制权.脑裂的后果是两个分区各自同时且独立读写共享磁盘而导致磁盘数据混乱. 仲裁的目的之二是限制群集所能承受的最大故障数,仲裁要求群集有多数投票存在,否则群集将失效,比如一个5节点的群集可以忍受最多两个节点同时发生故障.  群集投票 投票算法基于投票结果少数服从多数,群集中各个节点需要心跳机制来通报彼此的"健康