WSFC CLUSDB

转眼已经是2018年了,真快啊,在这里老王首先祝福各位博友新的一年身体健康,事业顺利,在新的一年里老王仍然会继续为大家分享微软企业级技术,也欢迎大家与我一同探讨,共同学习,这新年第一篇老王想和大家聊聊WSFC的群集数据库,以及和它相关的一些组件

首先,我们回忆下之前介绍过的群集基础概念,里面有提到Windows群集的运作机制,群集在运作过程中会产生一个群集数据库,存放在各节点注册表中,如果有磁盘见证也会存放在磁盘见证一份,群集会把各节点的状况,以及节点承载的群集角色纷纷记录在注册表中,然后在各节点与磁盘见证上复制,当其中一个节点宕机,群集协调其它活着的节点检查自身的群集数据库注册表,查看宕机节点承载的角色,进行failover

因此大家可以看出,群集数据库储存了群集运作过程中节点状态,群集状态,群集角色状态等配置数据,它需要被复制到各个节点,当灾难发生时其它节点会参照群集数据库进行failover,因此如果重要的群集,应该针对于群集节点OS进行备份,系统状态中会包括群集数据库

群集数据库注册表位置,位于各节点HKEY_LOCAL_MACHINE\Cluster单元下,可以在里面看到群集的配置,各节点的状态,群集角色的配置

其中paxos标记为2008开始WSFC新增的功能,在2008之前,群集只有“仲裁驱动器”会保存一份群集数据库的最新副本,各个节点都需要和仲裁盘进行同步,由仲裁盘复制群集数据库到各节点,各节点在关机重启后也必须连接到仲裁盘同步下载群集数据库,如果仲裁盘出现故障,则群集将无法启动,因此在2008之前,仲裁磁盘成为了单一故障点,2008开始,群集引入了paxos标记的机制,每个节点本身都可以保存群集数据库最新副本,如果某个节点修改群集数据,则该节点paxos标记增加,随后各节点感应到有更新的paxos标记,会自动与其同步群集数据库内容,当节点宕机恢复后,会对比自身paxos标记与磁盘见证paxos标记,如果如果磁盘见证更新,则与其同步后上线,如果磁盘见证检测到群集节点有更新paxos标记的群集数据库也会与其同步

默认情况下节点群集服务每次启动都会检查群集数据库注册表配置单元,确保完整才可以正常启动群集,如果非最新,则需与其他节点或磁盘见证同步群集数据库,如果节点群集服务未启动,则不会加载群集数据库注册表配置单元,除了我们说的每个节点本身的群集数据库注册表单元,如果节点是见证磁盘所在节点,还会额外加载一个0.Cluster配置单元,非见证磁盘所有者节点,不会加载这个配置单元

在群集数据库注册表中我们可以看到关于群集的配置信息,在碰见一些棘手的问题时我们也许会需要改动它们,例如有一些资源没办法图形界面或命令行界面删除,这时候就可以在注册表里面进行删除处理,但是官方并不建议这样做,以下为官方推荐做法:删除群集资源的标准操作,建议采用标准做法,轻易不要直接操作注册表

除了注册表,我们在另外一个位置也可以找到关于群集数据库的文件,C:\Windows\Cluster目录中,以下文件为群集数据库相关,可以说WSFC的群集数据库文件现在有注册表和磁盘文件两份,注册表很好理解,就像大多数管理软件的配置数据库一样,记录了群集的所有配置,但是磁盘里面的这些文件是干嘛的,网上也没有人说清楚,根据老王的猜想,这可能是一个打包文件,把各节点的群集数据库注册表打包成磁盘文件,便于各节点之间传送,同时也可能含有一些同步群集数据库的密钥

打开群集见证磁盘,可以看到0.Hive的磁盘文件

下面我们来实际验证下群集数据库的同步,首先,我们随便在一个节点上面修改群集的配置

修改前节点paxos标记

修改后节点paxos标记

其它节点检测到其它节点有paxos标记更新,与其同步群集数据库,同步完成后paxos标记为最新

0.Cluster 见证磁盘注册表单元也同步群集数据库为最新,paxos标记更新一致

其它节点查看群集注册表,可以看到同步后最新的群集数据库配置

0.Cluster见证磁盘注册表单元 也可以看到同步后最新的群集数据库配置

查看群集日志

此为后来老王又修改了一次群集实时迁移网络后的分析

GUM (Global Update Manager) ,检测到有节点群集配置发生变化,有paxos更新,提醒Node2节点与其更新,Node2节点收到请求后与Node1同步最新群集数据库

接收到GUM的信号后接下来由Database Manager组件负责数据库同步,进一步我们可以看出,具体同步的是那些注册表键值,由此可见,每次群集数据库是增量的,仅同步修改后的内容,同步完成后,确保群集数据库已为最新,更新节点paxos标记

对于群集数据库的处理,磁盘见证和文件共享见证,云见证有所不同,如上所述,磁盘见证中也保存着群集数据库的副本,使用CLFS组件与DM组件,确保磁盘见证内数据库文件为最新,而文件共享和云见证,则不会在目录中存放群集数据库副本,只是负责存放一个日志,记录着群集当前那个节点拥有最新的paxos标记

之前老王曾经和大家说过一个时间分区场景的问题,节点1,节点2,使用文件共享见证或云见证,节点1宕机,节点2修改了群集配置内容,然后节点2宕机,节点1开机上线,会发现无法联机,为什么,因为GUM组件会发现当前节点1没有最新的群集数据库,所以会阻止该节点联机,这时除非强制仲裁才可以启动节点1,但是启动后节点1为黄金副本,节点2再开机会丢失之前修改过的内容。

如果是见证磁盘则不会,同样的场景,如果节点2修改内容,节点1不在,那么修改的内容会被同步至见证磁盘,也就是0.Cluster注册表单元内容,然后当节点1联机上线,GUM会检测对比,告知节点1,你的群集数据库当前不是最新的,需要和见证磁盘进行同步,同步前节点不可以获得成员资格,群集节点1从见证磁盘同步到最新群集数据库后,正常联机上线

因此,如果群集会经常修改一些内容,为了避免时间分区的问题,老王通常建议采用见证磁盘

群集数据库与其他群集组件协同:

GUM:GUM为群集全局更新管理器,负责协调群集各个节点群集数据库内容为最新,GUM工作机制分为以下几种

1.全局周期性更新,由群集自动完成,默认情况下每隔四小时,告知各节点数据库管理器复制群集数据库内容

2.通知性更新,在以下场景发生:节点联机,节点脱机,群集注册表发生修改变化,一旦检测到节点有以上变化,则立刻通知各节点DM组件复制最新paxos标记数据库

3.仲裁更新,特定于磁盘见证仲裁模型,当群集更改无法复制到其它节点时,对于群集修改的配置,会以恢复日志的方式存储在见证磁盘,当有节点恢复时,自动从见证磁盘获取

GUM组件从NT4 Cluster Server开始就内置在群集组件中,这个组件在2012R2之前一直处于自我运作的情况,工作方式不能修改,2012R2之后发生了改变,在2012R2之前,GUM的原则是有最新的群集数据库更新了,我需要通知到你们所有节点,让你们都更新到群集数据库为最新,群集所有节点都需要响应GUM的更改需求,2012R2开始,支持下图三种模式工作,对于Hyper-V负载默认为1,能够实现只要大部分主机写入更新群集数据库之后就继续运作,可以使用命令修改

(Get-Cluster).DatabaseReadWriteMode = 1

一个潜在的问题,当针对群集中的节点请求信息时,节点必须与群集中的大多数节点进行通信得到确认,然后才能发送对请求的响应。对于不需要请求,这样可以,但是当请求经常被放入群集时,这会给群集带来巨大的通信负担,会为虚拟主机带来性能影响,于是2016开始微软改默认值为0

DM: Database Manager为数据库管理器,负责在每个节点上运行并维护群集数据库的本地副本,包括群集本身,群集节点成员资格,资源组,资源类型以及特定资源(如磁盘和IP地址)的描述,数据库管理器使用全局更新管理器将更改复制到其它节点

MM: MemberShip Manager为节点管理器,负责记录各节点资格,将节点资格列表在各节点复制,确保所有节点一致,节点管理器会收到各节点心跳检测的结果,如果检测到某个节点不可用,则将该节点从节点可用列表中标记为不可用,下次GUM复制将不会通知被MM标记为不可用的节点复制DM,需要注意如果节点仅是脱机状态,并不会从群集节点可用列表完全删除,只是会被标记为不可用,恢复后,将通知GUM完成DM复制,如果将节点逐出群集,则彻底从节点列表删除


RHS&RCM: RHS为群集资源主机子系统,负责监视各个群集资源的运作状态,一旦RHS检测到群集资源不可用,则会将结果报告给RCM资源控制管理器,RCM根据资源的故障转移策略尝试重启或故障转移资源,一旦RCM将资源转移至其它节点,则触发节点群集数据库变化,更新paxos标记,GUM收到变化后会通知各节点DM复制最新的群集数据库

原文地址:http://blog.51cto.com/wzde2012/2056777

时间: 2024-11-29 11:31:57

WSFC CLUSDB的相关文章

WSFC基础知识奠基

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

WSFC动态仲裁及投票调整2

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

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

可以看到老王在仲裁这个部分,花了三个篇幅去讲,老王认为是值得的,因为在老王看来管理WSFC群集无非是架构设计要设计好,然后日常维护群集的可用,执行群集细部管理,细部日志分析,更新迁移等等,其中维护群集持续可用是我们在管理群集中最常见到的,而群集到底可不可用,和仲裁,见证,投票这些是有直接关系的 很多时候可能如果你不清楚仲裁是怎么回事,群集停了你也不知道是怎么回事,因此老王多花了一些篇幅来仔细把仲裁技术刨开来讲,力图让大家理解透彻,又花了两个篇幅以场景的形式把2012动态仲裁技术和群集其它仲裁技术

SQLServer 2014 Always on配置全过程(WSFC环境配置)

1.服务器管理器->功能->添加功能->故障转移集群 2.配置WSFC 为所有节点均安装完"故障转移群集"服务后,在任意节点服务器的"服务器管理器"中展开"故障转移群集管理器"对WSFC进行配置. 故障转移群集管理器->创建一个群集 在集群中将两个服务器放上去 点击下一步 成功后长这个样子 完成之后再去设置仲裁 至此,为SQL Server 2012 AG准备的WSFC环境已经完成. (在配置仲裁的时候发现配置两个虚拟机不

WSFC动态仲裁及投票调整1

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

WSFC AD权限规划

长久以来老王一直发现一个问题似乎有很多人对于WSFC群集的权限存在一些误解以为只有域administrator才可以装或者要Domain admins才可以装 其实WSFC的安装并不需要那么大的权限在本文中老王将为大家分享WSFC AD权限规划我们将尽可能采用最小化权限的原则来进行设计 主要围绕两种场景 1.最小化权限 2.预先置备CNO 之前博客中也曾经和大家提到过群集的创建过程以WSFC 2012时代之后为例当我们输入群集名称后群集会使用我们当前的执行账号去AD里面创建CNO对象去DNS中创

WSFC日志分析进阶篇

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

WSFC CNO与VCO误删恢复

在前面的文章中老王反复的和大家强调过CNO,VCO起到的作用 基本上,CNO和VCO,主要负责提供群集的Kerberos验证,作为管理访问点的一部分,提供用户访问 CNO VCO每次启动联机时需要联系到域控制器,CNO会与AD同步自己的计算机密码,也会帮助VCO同步密码,CNO负责维护与VCO的关联关系 可以说,如果我们的群集模型部署为传统AD架构,那么CNO和VCO将是非常重要的,一旦我们不小心删除了CNO或VCO对象,就会导致群集无法正常联机,应用无法和群集进行Kerberos验证. 在20

WSFC文件应用数据磁盘扩容替换

在实际的企业IT环境中,对于硬件而言少不了更新替换,有时候存储满了就需要扩容,对于WSFC上面的应用而言,Hyper-V本身我们可以利用存储迁移技术更换磁盘,但是对于其它群集应用本身不具备迁移技术的,应该怎么处理呢 今天我们就来看下群集中数据磁盘的扩容替换,此次我们假定这样一个场景,基于群集跑了一个文件服务器服务,一直用的很好,但是数据磁盘由于当时规划没有规划好,用满了,如何在保留原有数据的情况下更换磁盘 遇到这个问题,老王脑袋里首先有两种想法略过 把文件服务器现有内容拷贝出来到新的磁盘,文件服