WSFC 服务启动开关详解

  clussvc是Windows故障转移群集的托管系统服务,运行于每一个群集节点,是WSFC的主服务,负责群集组件之间的通讯,处理故障转移操做和管理配置等任务,clussvc也和群集其它组件,如RHS,NetFT组件相协同,节点的硬件,群集成员资格,心跳检测结果,第三方软件干扰,将决定节点的群集服务可否正常启动node


   以下图所示为clussvc主服务包括的组件,能够看到几乎全部的群集组件都寄生于clussvc下面,所以clussvc的服务启停相当重要,一旦clussvc服务中止,则该节点将没法使用群集功能,若是群集全部节点clussvc服务关闭,则群集将中止对外服务。数据库


2018-03-03_102438.png


下图为Clussvc在群集架构中扮演的位置,能够看到,clussvc负责接收API传来的操做,再将用户的请求传给其它群集组件进行工做,同时也负责群集内部组件的协同通讯,RHS和CPrepSrv的检测也将反馈给Clussvc网络


2018-03-03_102316.png


因为clussvc做为群集的托管主服务,所以它比较特殊,不一样的场景会须要不一样的启动开关,启动命令以下 net start clussvc /启动参数架构


从2000到2003时代,clussvc群集服务的启动参数以下ide


7838.image_thumb.png


Fixquorum:适用于2000与2003时代该开关主要适用于处理,由于仲裁设备而致使群集服务没法启动的场景,例如被挂载的群集见证磁盘不稳定,常常出现脱机状况,使用fixquorum参数启动后可让群集服务启动,可是不联机群集仲裁设备,仅联机群集IP和群集名称,同时关闭日志记录存储到仲裁设备功能,经过该模式启动后,群集应用资源和仲裁资源将被脱机,管理员能够手动联机仲裁资源以观察日志进行诊断spa


该启动参数最好用于群集只剩下一个节点的场景,经过该参数启动后,将在该节点挂载群集数据库,群集IP,群集名称,便于排错,若是群集其它节点正在运行,建议排除仲裁设备问题前,为其它节点中止群集服务,以防止抢夺群集IP,群集名称。debug


排除问题后从新以正常开关net start clussvc启动节点调试



NoQuorumLogging :透过该参数启动后群集将关闭日志记录存储到仲裁设备功能,用于诊断仲裁设备中的仲裁日志和检查点问题,一般状况下,该开关仅在一个节点上使用,主要用于2003时代当仲裁设备日志文件或检查点文件损坏,而且您想手动将这些文件替换为备份副本时使用。日志


须要注意,经过该参数启动群集有可能引起时间分区问题,经过NoQuorumlogging启动的节点最好不要修改群集信息orm


在2008以前,群集只有“仲裁设备”会保存一份群集数据库的最新副本,各个节点都须要和仲裁盘进行同步,由仲裁盘复制群集数据库到各节点,各节点在关机重启后也必须链接到仲裁盘同步下载群集数据库,若是仲裁盘出现故障,则群集将没法启动,所以在2008以前,仲裁磁盘成为了单一故障点,2008开始,群集引入了paxos标记的机制,每一个节点自己均可以保存群集数据库最新副本,若是仲裁设备出现问题,最快的解决办法,新加入一个仲裁磁盘,把旧的替换掉,仲裁磁盘检测到群集节点的数据库paxos标记比较新,会自动同步新的群集数据库过来。


Debug:在2003时代群集日志仅包含群集服务启动后的群集日志,而不包含群集服务启动过程的日志,所以,若是要排除群集服务启动过程的故障,须要使用debug开关执行操做,切换到C:\System32\Cluster 目录下,使用命令提示符执行clussvc /debug > c:\clusdebug.txt,则能够将群集服务以debug的用途启动,并将捕捉整个启动过程信息至日志,主要用于2003时代,由于群集启动帐号或系统配置而致使群集服务没法启动问题,2008以后群集服务启动日志可在clusterlog看到


Debug参数也支持设置启动诊断日志级别,方法以下:clussvc / debug loglevel = 3> c:\debug.log


level 0 不记录

level 1 只记录错误

level 2 记录错误和警告

level3  记录全部事件,包括未写入事件日志的事件


DebugResMon : 用于调试资源监视器进程,并所以调试由资源监视器加载的资源动态连接库(DLL),开发人员可使用此开关来调试资源监视器进程及其自定义资源DLL,在资源监视器进程启动以前,群集服务进程等待,并等待消息“等待调试器链接到resmon进程X”,其中X是资源监视器进程的进程ID(PID).群集服务会执行此操做,以等待由其建立的全部资源监视器进程。在用户将调试器附加到资源监视器进程而且资源监视器进程启动后,群集服务将继续其初始化。

用法:Clussvc /debug /debugresmon


ResetQuorumLog : 用于2000及2003时代,若是仲裁日志和检查点文件未找到或已损坏,则可用于根据本地节点的%SystemRoot%\ Cluster \ CLUSDB注册表配置单元中的信息来建立文件,适用于仲裁磁盘仲裁日志,出现损坏的场景,即便用各节点本地文件注册表建立仲裁日志和检查点文件,然后使用fixquorum方式启动群集,替换仲裁磁盘。

用法:net start clussvc / resetquorumlog,执行该命令后,MSCS会自动检测仲裁日志损坏,自动使用节点本地注册表配置单元从新生成仲裁日志


ResetQuorumLog 与 NoQuorumLogging 不一样适用场景

NoQuorumLogging:有仲裁设备备份,暂时停掉写入,而后把已备份的恢复覆盖

ResetQuorumLog:  没有仲裁设备备份,利用各节点本地注册表重建仲裁日志


两种参数启动群集服务后,都需使用net start clussvc再正常启动一次。


NoRepEvtLogging :适用于2000与2003 ,在2000和2003时代cluster log是群集服务实时产生的,此参数能够防止事件日志的复制,若是有大量事件日志条目,则群集服务将复制这些条目,并将它们记录到cluster.log。这可能会致使cluster.log快速换行。经过该参数能够阻止节点的cluster log被复制到其它节点,减小网络通讯带宽,而且能够把该节点未刷新到cluster log 的日志转移至本地log中


net start clussvc /norepevtlogging  阻止该节点的事件日志复制到其它节点,但能够正常接收其它节点的信息

clussvc /debug /norepevtlogging > c:\debugnorep.log  将该节点群集服务还未刷新至cluster log的日志转移至本地log


ForceQuorum:最广为你们熟悉的群集启动参数,在2003时代引入,2003时代该参数缩写为FO,FQ是fixquorum,2003时代的forcequorum,主要起到让少数分区提供服务的做用,和2008时代的forcequorum有一些区别,例如2003时代北京站点4节点,上海站点3节点,两站点间发生分区,可是北京已知没法对外提供服务,所以需强制启动上海站点,但起点过程需指定上海站点节点名称,如net start clussvc / forcequorum / forcequorum node5,node6,node7,使用该命令起点后,上海站点将从新启动一个群集,这个群集的可用全部者列表只有 5 6 7 节点。启动上海站点后应手动中止北京各节点群集服务,防止抢夺资源,当分区恢复时从新正常启动群集服务


在2008时代WSFC引入了几个新的参数, PreventQuorumIgnorePersistentState,以及发生变化的ForceQuorum


正如老王在前面文章能够你们提到过的,ForceQuorum在2008时代发生了变化,引入了paxos标记机制,和以前的做用同样,帮助群集节点在少数节点的状况下也能强制启动提供服务,可是却比以前版本方便了许多,在2008中,咱们只须要在少数节点其中一个节点执行net start clussvc /FQ 便可,2008开始FQ缩写开始指forcequorum,被执行FQ的节点自身的群集数据库会被提高为黄金副本,以后其它全部节点若是但愿参与群集,都必须和FQ节点同步群集数据库后,才能够正常参与进群集,在2008时代,若是少数方执行FQ强制仲裁后,须要到多数方执行PQ,阻止多数方造成群集,往后分区解除,多数方将自动与FQ方同步最新群集数据库


IPS参数于2008R2引入,ForceQuorum为2008起发生改变,PQ为2008R2引入,2008可经过hotfix得到


IPS开关是一个有意思的参数,相似于2000时代的Fixquorum,不一样的是fixquorum仅联机群集IP和群集名称,其它资源一概不联机,而IgnorePersistentState参数能够帮助咱们联机群集IP,群集名称,仲裁磁盘,这些全部核心组组件,而不联机任何基于群集的应用,能够帮助管理员先恢复群集正常服务,再排查基于群集的应用问题


在正常状况下,群集服务启动时,默认行为是将全部资源联机。IPS开关所作的是忽略当前的资源PersistentState值,并将全部内容保持为离线状态


使用该参数后群集总体处于联机状态,能够对外提供服务,此开关只会影响群集中的服务和应用程序组

该参数要求群集符合法定人数要求下才可使用


适用场景


1.群集各节点资源负载饱满,致使启动时群集节点崩溃,可使用/IPS模式启动群集,先联机一部分群集应用,进行排错,排错完成后,再联机其它群集应用。

2.基于群集的第三方应用致使群集伪挂起,使用IPS参数启动群集后正常启动群集,检查应用问题,修复后再联机应用。


用法:net start clussvc /ips 或 net start clussvc /ips /fq ,若是在不符合法定仲裁员数运做需添加fq参数


2012开始,阻止仲裁技术发生了改变,多数节点一方检测到少数节点一方存在强制仲裁会自动执行阻止仲裁操做,即确保认可强制仲裁一方为群集,与其群集数据库同步至最新后,才会启动自身群集服务,在以前2008时代,若是遇到强制仲裁的场景下,大多数时间都须要手动去执行阻止仲裁,不然会出现群集数据库覆盖等状况,到了2012则会自动帮助咱们作这件事。



2016 WSFC开始向最新的技术看齐整合了,存储副本,超融合技术,能够和Azure相配合,实现WSFC on Azure,Azure witness,除了这些还改变了群集默认的检测机制,新导入了瞬断机制,防止因为瞬时中断而致使群集应用故障转移,能够设定在指定时间内群集的故障不须要执行故障转移,若是某时间内发生了某次数的瞬时中断,则断定节点为检疫隔离状态,节点处在检疫状态下的时间,默认为7200秒,在这段时间,节点将不承载应用,全部虚拟机被实时迁移走,其它群集资源被移动走,若是节点提早恢复可以使用 net start clussvc /CQ 或 Start-ClusterNode -CQ ,执行ClearQuarantine操做,把节点手动恢复正常。


总结到最新2016还剩下的clussvc启动参数:FQ,PQ,IPS,CQ

相关文章
相关标签/搜索