博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 2012故障转移的looksalive check和is alive check
阅读量:6078 次
发布时间:2019-06-20

本文共 1802 字,大约阅读时间需要 6 分钟。

什么是looksalive check和is alive check

      SQL Server故障转移集群是建立在windows集群服务上的一种热备的高可用方案。在集群运行过程中,windows集群服务定期检测节点的资源健康状态,如果发生了故障,会根据预先定义的故障转移策略把SQL Server服务从故障节点切换到可用节点上,从而实现SQL Server的高可用。

      而looksalive和isalive就是windows集群服务定期检测节点的资源健康状况的两个方法,它们存在于 resource dll中。

根据资源类型不同,resource dll可分为两个大类。对于集群IP、DNS名称、服务服务(SQL Server)、集群磁盘等windows自带的资源类型,resource dll就是windows集群自带的Resource DLL——“clusres.dll”中;而对那些自己的专属资源类型的资源,他们有专属的resource dll,如SQL Server和sql server agent的resource dll分别为sqlrvres.dll和sqlatres.dll。

    下图显示了集群里资源的类型及资源DLL与资源的关系:

                      原图来自《SQL Server 2012实施与管理实战指南》

 

 

looksalive check和is alive check检测原理

RHS.exe的进程(windows集群服务进程clussvc.exe生成的)通过调用定义了looksalive check和is alive check方法 resource dll来实现对资源的健康状态检测。

在SQL Server故障转移集群中,对于SQL Server资源,looksalive check和is alive check检测的原理如下:

looksalive是基本的健康状态检测,它通过服务控制管理器(SCM)来检查SQL Server服务在活跃点是否处于“启动状态”,默认每隔5秒检查一次。

isalive则通过windows集群服务去执行select @@servername(SQL Server 2012之前的版本)或sp_server_diagnostics(SQL Server 2012),然后根据返回的结果来判断SQL Server是否可用。它默认每隔60秒检查一次。

      select @@servername是SQL Server 2012之前的版本执行isalive方法的操作。执行的结果返回给故障转移集群,如果故障转移集群收到返回的结果,则说明此资源目前在正常状态。反之,则说明此资源目前已经发生故障。

       这种方法简单、“粗暴”,能够适应大多数场景,但如果此时SQL Server负载比较高,没有在60秒内响应,则可能发生误判,导致故障转移发生。为了解决这个问题,在SQL Server 2012及以后的版本上,微软改进了isalive检查方法,不再使用select @@servername,取而代之的是使用存储过程sp_server_diagnostics。

      相比select @@servername而言,sp_server_diagnostics返回的结果要详细得多(如上图)。SQL Server会利用内部算法来处理sp_server_diagnostics的结果,然后从多个维度来评估SQL Server的健康状况(系统、资源、查询、IO等),从而作为windows故障转移集群判断是否需要进行故障转移的依据。除此之外,SQL Server 2012还做了特别的优化:

    执行sp_server_diagnostics的线程使用抢占模式,且线程的OS优先级也高于普通线程;

sp_server_diagnostics每隔20秒执行一次,默认情况下如果3次(60秒)执行的结果都显示SQL Server资源处于故障状态,才发生故障转移

    说明:之所以是60秒,是因为“资源属性”的HealthCheckTimeout默认为60秒,可以人为改变大小,但一般保持默认即可。

 

配置looksalive check和isalive check

looksalive和isalive检测的间隔时间可以在“资源属性”的“高级策略”里面设置,一般采用默认即可,如需更改,可参考下图的位置设置。

转载地址:http://hqagx.baihongyu.com/

你可能感兴趣的文章
一个想法(续二):换个角度思考如何解决IT企业招聘难的问题!
查看>>
tomcat指定配置文件路径方法
查看>>
linux下查看各硬件型号
查看>>
epoll的lt和et模式的实验
查看>>
Flux OOM实例
查看>>
07-k8s-dns
查看>>
Android 中 ListView 分页加载数据
查看>>
oracle启动报错:ORA-00845: MEMORY_TARGET not supported on this system
查看>>
Go方法
查看>>
Dapper丶DapperExtention,以及AbpDapper之间的关系,
查看>>
搞IT的同学们,你们在哪个等级__那些年发过的帖子
查看>>
且谈语音搜索
查看>>
MySQL数据库导入导出常用命令
查看>>
低版本Samba无法挂载
查看>>
Telegraf+Influxdb+Grafana构建监控平台
查看>>
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>