什么是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检测的间隔时间可以在“资源属性”的“高级策略”里面设置,一般采用默认即可,如需更改,可参考下图的位置设置。

SQL Server 2012故障转移的looksalive check和is alive check的更多相关文章

  1. 在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群

    需要说明的是我们搭建的SQL Server故障转移集群(SQL Server Failover Cluster)是可用性集群,而不是负载均衡集群,其目的是为了保证服务的连续性和可用性,而不是为了提高服 ...

  2. 在Windows Server 2012中搭建SQL Server 2012故障转移集群

    OK~ WSFC 2012 R2 年度盛宴开始~ 在本文中,老王将用一系列的场景,把动态仲裁,动态见证,票数调整,LowerQuorumPriorityNodeID,阻止仲裁等群集仲裁技术串起来,完成 ...

  3. AlwaysOn可用性组功能测试(二)--SQL Server群集故障转移对AlwaysOn可用性组的影响

    三. SQL Server群集故障转移对AlwaysOn可用性组的影响 1. 主副本在SQL Server群集CLUSTEST03/CLUSTEST03上 1.1将节点转移Server02.以下是故障 ...

  4. SQL Server AlwaysOn 故障转移

    目的: a) AlwaysOn 可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案. b) 当数据库服务器SQL1出现故障宕机时,可以通过AlwaysOn可用性组,自动故障转 ...

  5. SQL SERVER 2012 从Enterprise Evaluation Edtion 升级到 Standard Edtion SP1

    案例背景:公司从意大利购买了一套中控系统,前期我也没有参与其中(包括安装.实施都是第三方),直到最近项目负责人告诉我:前期谈判以为是数据库的License费用包含在合同中,现在经过确认SQL Serv ...

  6. 系统升级日记(1)- 升级到SQL Server 2012

    最近一段时间在公司忙于将各类系统进行升级,其最主要的目标有两个,一个是将TFS2010升级到TFS2013,另外一个是将SharePoint 2010升级到SharePoint 2013.本记录旨在记 ...

  7. 图文详解在Windows server 2008 R2上安装SQL Server 2012集群

    1.准备: 4台服务器(1台AD.2台SQL服务器.1台iSCSI存储服务器) 9个IP(1个AD的IP.2个SQL服务器的IP.2个心跳IP.1个iSCSI存储服务器的IP.1个集群IP.1个DTC ...

  8. 基于iSCSI的SQL Server 2012群集测试(四)--模拟群集故障转移

    6.模拟群集故障转移 6.1 模拟手动故障转移(1+1) 模拟手动故障转移的目的有以下几点: 测试群集是否能正常故障转移 测试修改端口是否能同步到备节点 测试禁用full-text和Browser服务 ...

  9. 从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)

    本篇主要讲配置Windows 故障转移集群及遇到的相关问题(坑),因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 四种集群的仲裁配置: 1.多 ...

随机推荐

  1. x

    笔记 { 计算机 { 底层 { 程序运行 } 信息学 { 网络 { 网络信息安全 } 算法 { 算法 拟合 编译解释词法分析 } 编程语言 { C语言 嵌入式C++ } 黑客 } } 安卓 { 软件 ...

  2. Web前端工程师成长之路——知识汇总

    一.何为Web前端工程师?          前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业.Web前端开发工程师,主要职责是利用(X)HTML/CSS/JavaScript ...

  3. js 处理字母 大小写的 一些函数

    js中实现字母大小写转换主要用到了四个js函数: 1.toLocaleUpperCase2.toUpperCase3.toLocaleLowerCase4.toLowerCase 下面就这四个实现大小 ...

  4. JQUERY UI Datepicker Demo

    datepicker_demo.htm <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" &quo ...

  5. 数据库访问性能优化 Oracle

    特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...

  6. 在CentOS下利用Python+selenium获取腾讯首页的今日话题。

    1.安装依赖包 yum install wget firefox gcc zlib zlib-devel Xvfb 2.安装setuptools 官网地址:https://pypi.python.or ...

  7. 身份证验证JS代码

    身份证验证JS程序function checkidcardfun(code) { var city = {11: "北京", 12: "天津", 13: &qu ...

  8. [转]字符型IP地址转换成数字IP的SQL函数

    使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助.      /**//*--调用示例       sele ...

  9. bootstrap之强调文本的类(带颜色)

    bootstrap之强调文本的类(带颜色) <small>本行内容是在标签内</small><br> <strong>本行内容是在标签内</str ...

  10. Cannot run gnome extension in browser

    Error Message: We cannot detect a running copy of GNOME on this system, so some parts of the interfa ...