[AlwaysOn Availability Groups]CLUSTER.LOG(AG)

时间:2021-04-07 00:35:45

CLUSTER.LOG(AG)

作为故障转移资源,在SQL Serverwindows故障转移集群服务的资源DLL(hadrres.dll)之间有额外的内部交流,DLL无法被SQL Server监控。WSFC logCLUSTER.LOG可以诊断WSFC集群或者SQL Server Resource DLL的问题。

以下演示了SQL Serverwindows集群管理的关系。windows集群管理用来初始化AG资源创建,释放或者状态修改。

1.生产集群日志

2个方式生产集群日志:
1.
在命令行使用cluster /log /g命令。集群日志会生成在\windows\cluster\reports目录的每个WSFC节点下。这个方法的有点是你可以指定生成日志详细程度的级别,通过/level选项。坏处是不能指定生成什么目录下面,具体可以看: How to create the cluster.log in Windows Server 2008 Failover Clustering.
2.
使用Get-ClusterLog powershell命令,好处是可以指定所有节点生产到什么目录上。好处是不能指定日志的详细级别。

以下Powershell命令生产最近15分钟的cluster log,并放入到当前日志文件。运行这个命令需要管理员权限
Import-Modeul FailoverClusters
Get-ClusterLog –TimeSpan 15 –Destination .

2.冗余AlwaysOn日志

可以通过以下操作,设置CLUSTER.LOG的冗余程度:
1.
启动故障转移集群管理器
2.
展开集群和服务和应用节点,点击AG
3.
右击AG资源点击属性
4.
点击属性tab
5.
修改VerboseLogging属性,默认为0,取值从02.
6.
点击确定
7.
右击AG资源点击,Take this resource offline
8.
右击AG资源点击,Bring this resource online

3.AG Resource事件

表如下可以显示CLUSTER.LOG下的关于AG资源的不同事件,更多关于 Resource Hosting Subsystem (RHS) Resource Control Monitor (RCM) in WSFC的信息查看:Resource Hosting Subsystem (RHS) In Windows Server 2008 Failover Clusters.

Identifier

Source

Example from CLUSTER.LOG

Messages prefixed with RES and '[hadrag]'

hadrres.dll (AlwaysOn Resource DLL)

00002cc4.00001264::2011/08/05-13:47:42.543 INFO [RES] SQL Server Availability Group <ag>: [hadrag] Offline request.

00002cc4.00003384::2011/08/05-13:47:42.558 ERR [RES] SQL Server Availability Group <ag>: [hadrag] Lease Thread terminated

00002cc4.00003384::2011/08/05-13:47:42.605 INFO [RES] SQL Server Availability Group <ag>: [hadrag] Free SQL statement

00002cc4.00003384::2011/08/05-13:47:42.902 INFO [RES] SQL Server Availability Group <ag>: [hadrag] Disconnect from SQL Server

Messages prefixed with [RHS]

RHS.EXE (Resource Hosting Subsystem, host process of hadrres.dll)

00000c40.00000a34::2011/08/10-18:42:29.498 INFO [RHS] Resource ag has come offline. RHS is about to report resource status to RCM.

Messages prefixed with [RCM]

Resource Control Monitor (Cluster Service)

000011d0.00000f80::2011/08/05-13:47:42.480 INFO [RCM] rcm::RcmGroup::Move: Bringing group 'ag' offline first...

000011d0.00000f80::2011/08/05-13:47:42.496 INFO [RCM] TransitionToState(ag) Online-->OfflineCallIssued.

RcmApi/ClusAPI

An API call, which mostly means SQL Server is requesting the action

000011d0.00000f80::2011/08/05-13:47:42.465 INFO [RCM] rcm::RcmApi::MoveGroup: (ag, 2)

3. 隔离的调试AlwaysOn资源DLL

最好的调试配置是,集群独立的使用AlwaysOn资源DLL(hadrres.dll)。默认WSFC集群所有的资源DLL在独立的实例rhs.exe上运行。所有集群里的资源会共享给通一个rhs.exe实例。当你试图使用调试器调试hadrres.dll使用定点暂停可能会导致其他共享了rhs.exe.的实例也中断了。当你在集群中使用多个AG组,当你在调试器定点调试,一样的配置会导致所有的AG都会中断。

为了隔离其他资源DLL,包括其他AG,在独立的rhs.exe使用以下步骤:
1.
打开注册表,找到HKEY_LOCAL_MACHINE\Cluster\Resources。这个key包含了所有资源的key,每个都有不同的GUID
2.
找到一个key包含了AG名的。
3.
修改SeparateMonitor =1
4.
重启集群服务。