专利名称:基于看门狗本地检测技术的高可用集群系统假死解决方法
技术领域:
本发明属于计算机集群技术领域,特别是涉及解决高可用性集群 (High-availability clusters)系统假死的方法。
背景技术:
随着计算机应用领域的不断扩展和通信网络技术的飞速发展,电信、金融、电子政务等关键领域对服务器持续运行的要求越来越高,由于服务器宕机等故障所造成的业务停止将会带来无法估量的损失,为了应对这样的情况,目前惯用手段是采用高可用集群系统, 即使某台服务器发生故障,用户业务和数据也可迅速切换到备份服务器上,从而保证了整个系统对外服务的正常,为企业M小时x365天的关键业务应用提供了强大的保障。但是,现有高可用集群系统难以克服的一个问题是节点假死问题,比如当客户端的请求量达到一定数值,出现服务器硬件资源难以满足需求,服务器不能正常对外提供服务,半瘫痪的一种状况。这种状况的持续时间不定,是否可恢复也未知。此时如果备份服务器接管业务,主机假死恢复后服务在两个节点同时运行,会发生磁阵双挂,导致用户数据丢失。而如果备份服务器不接管业务则集群不能正常对外提供服务。因此,我们希望能有一种方法能解决假死的问题,保证高可用集群系统能更安全稳定的提供服务。现有的看门狗技术,又叫watchdog timer,是一个定时器电路,一般看门狗芯片和 CPU的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(喂狗),一旦CPU由于干扰造成程序跑飞后而陷入死循环状态时,喂狗便不能被执行,这个时候,看门狗电路就会由于得不到CPU送来的信号,便在它和CPU复位引脚相连的引脚上送出一个复位信号,使CPU发生复位,系统重启。
发明内容
针对上述问题,本发明提供基于看门狗本地检测技术的高可用集群系统假死解决方法,该方法基于看门狗技术,对假死状态进行检测、确认,避免业务在两个节点同时运行情况的发生。本发明通过以下技术手段实现基于看门狗本地检测技术的高可用集群系统假死解决方法,包括以下步骤A.集群系统启动时,读取配置文件,得到喂狗时间间隔T和最大检测失败次数N ; 设置看门狗超时时间为TXN,开启看门狗;B.设定喂狗参数条件;C.启动定时器进程,每隔时间T检测喂狗参数是否符合,参数符合则进行喂狗操作,然后等待时间T后进行下次检测;否则执行步骤D ;D.检测失败,不喂狗,等待时间T后进行下次检测;当连续N次检测失败,看门狗超时,系统重启;
E.系统重启过程中,该节点上运行的服务迁移到备份节点,保证系统的高可用性和数据安全性。本发明还可做以下改进步骤B中,所述喂狗参数条件为定时器进程正常运行。步骤B中,所述喂狗参数条件为衡量系统负载,系统负载小于阀值则符合喂狗条件。所述衡量系统负载的方法是,首先,获取系统CPU的总个数Num ;其次,读取系统最近5-20分钟的总负载值Load,计算当前平均负载LoadAvg = Load/Num ;然后比较系统当前平均负载LoadAvg与配置文件中规定的系统负载阈值Thres,如果LoadAvg小于Hires,则喂狗参数符合。所述衡量系统负载的方式为iowait查看磁盘IO负载、vmstat估算内存负载中的至少一种。步骤B中,所述喂狗参数条件为,首先,读取配置文件,记录需要由看门狗检测的服务以及其检测脚本信息;然后,进行服务本地检测,如果服务检测成功,则喂狗参数符合。所述服务本地检测方式为通过检测脚本发送TCP连接请求、SQL查询、特定于服务的消息、带协议标示位的包头或包体(包括文本和二进制流协议)中的任一种方式检测服务的可用性。所述检测脚本是由python、perl、shell、C中任一种语言所编写的检测程序。
所述看门狗是硬件看门狗。与现有技术相比,本发明具有的有益效果为1)本发明提供的基于看门狗本地检测技术的高可用集群系统假死解决方法,先检查主机是否处于假死状态,确定主机假死后使用看门狗技术重启主机,确保主机上运行的服务停止,有效的避免了主机假死恢复后服务在两个节点同时运行,会发生磁阵双挂,导致用户数据丢失的问题,保证了整个系统运行的稳定性。2)本发明提供的基于看门狗本地检测技术的高可用集群系统假死解决方法,先检查主机是否处于假死状态,确定主机假死后使用看门狗技术重启主机,主机重启过程中备份节点接管业务,解决了主机持续假死,集群不能正常对外提供服务问题,保证了服务可持续性。
图1为高可用多节点集群系统拓扑图;图2为本发明的基于看门狗本地检测技术的高可用集群系统假死解决方法流程图;图中1.磁盘陈列;2.活动节点;3.备份节点。
具体实施例方式下面结合附图和实施例对本发明进行详细的描述,以更进一步了解本发明的目的、方案及功效,但不作为对本发明所附权利要求保护的限制。实施例1
4
集群配置L个节点(L>》,每个节点都有硬件看门狗模块。按照图1进行现场部署,根据需要为集群配置m个服务。基于看门狗本地检测技术的高可用集群系统假死解决方法,包括以下步骤A.集群系统启动时,读取配置文件,得到喂狗时间间隔T和最大检测失败次数N ; 设置看门狗超时时间为TXN,开启看门狗;B.设定喂狗参数条件;C.启动定时器进程,每隔时间T检测喂狗参数是否符合,参数符合则进行喂狗操作,然后等待时间T后进行下次检测;否则执行步骤D ;D.检测失败,不喂狗,等待时间T后进行下次检测;当连续N次检测失败,看门狗超时,系统重启;E.系统重启过程中,该节点上运行的服务迁移到备份节点,保证系统的高可用性和数据安全性。启动集群后,进行系统假死状态测试,节点L2上有运行服务,采用超量客户端同时访问L2上的服务的方法导致节点L2假死。L2假死时间TXN秒后,看门狗超时,节点L2 重启,原运行在节点L2上的服务迁移到备份节点上,整个集群系统能正常对外提供服务。实施例2集群配置L个节点(L > 2),每个节点都有硬件看门狗模块,。按照图1进行现场部署,根据需要为集群配置m个服务。基于看门狗本地检测技术的高可用集群系统假死解决方法,包括以下步骤A.集群系统启动时,读取配置文件,得到喂狗时间间隔T和最大检测失败次数N ; 设置看门狗超时时间为TXN,开启看门狗;B.设定喂狗参数条件,为定时器进程正常运行;C.启动定时器进程,每隔时间T检测喂狗参数是否符合,参数符合则进行喂狗操作,然后等待时间T后进行下次检测;否则执行步骤D ;D.检测失败,不喂狗,等待时间T后进行下次检测;当连续N次检测失败,看门狗超时,系统重启;E.系统重启过程中,该节点上运行的服务迁移到备份节点,保证系统的高可用性和数据安全性。启动集群后,进行系统假死状态测试,节点L2上有运行服务,在L2上运行导致系统假死的测试程序导致节点L2假死。L2假死时间TXN秒后,看门狗超时,节点L2重启,原运行在节点L2上的服务迁移到备份节点上,整个集群系统能正常对外提供服务。实施例3集群配置L个节点(L > 2),每个节点都有硬件看门狗模块,。按照图1进行现场部署,根据需要为集群配置m个服务。基于看门狗本地检测技术的高可用集群系统假死解决方法,包括以下步骤A.集群系统启动时,读取配置文件,得到喂狗时间间隔T和最大检测失败次数N ; 设置看门狗超时时间为TXN,开启看门狗;B.设定喂狗参数条件,首先,获取系统CPU的总个数Num ;其次,读取系统最近15 分钟的总负载值Load,计算当前平均负载LoadAvg = Load/Num ;然后比较系统当前平均负载LoadAvg与配置文件中规定的系统负载阈值Thres,如果LoadAvg小于Hires,则喂狗参数符合;C.启动定时器进程,每隔时间T检测喂狗参数是否符合,参数符合则进行喂狗操作,然后等待时间T后进行下次检测;否则执行步骤D ;D.检测失败,不喂狗,等待时间T后进行下次检测;当连续N次检测失败,看门狗超时,系统重启;E.系统重启过程中,该节点上运行的服务迁移到备份节点,保证系统的高可用性和数据安全性。启动集群后,进行系统状态测试,节点L2上有运行服务,采用超量客户端同时访问L2上的服务的方法导致平均负载LoadAvg大于系统负载阈值Thres,该状态持续TXN秒后,看门狗超时,节点L2重启,原运行在节点L2上的服务迁移到备份节点上,整个集群系统能正常对外提供服务。实施例4集群配置L个节点(L >幻,每个节点都有硬件看门狗模块,。按照图1进行现场部署,根据需要为集群配置m个服务。基于看门狗本地检测技术的高可用集群系统假死解决方法,包括以下步骤A.集群系统启动时,读取配置文件,得到喂狗时间间隔T和最大检测失败次数N ; 设置看门狗超时时间为TXN,开启看门狗;B.设定喂狗参数条件为,首先,读取配置文件,记录需要由看门狗检测的服务以及其检测脚本信息;然后,通过检测脚本发送TCP连接请求、SQL查询方式进行服务本地检测, 如果服务检测成功,则喂狗参数符合;C.启动定时器进程,每隔时间T检测喂狗参数是否符合,参数符合则进行喂狗操作,然后等待时间T后进行下次检测;否则执行步骤D ;D.检测失败,不喂狗,等待时间T后进行下次检测;当连续N次检测失败,看门狗超时,系统重启;E.系统重启过程中,该节点上运行的服务迁移到备份节点,保证系统的高可用性和数据安全性。启动集群后,进行系统状态测试,节点L2上有运行服务,在L2上运行测试程序导致节点L2假死,该状态持续T X N秒后,服务连续N次本地检测失败,该状态持续T X N秒后, 看门狗超时,节点L2重启,原运行在节点L2上的服务迁移到备份节点上,整个集群系统能正常对外提供服务。上述的实施例仅为本发明的优选实施例,不能以此来限定本发明的权利范围,因此,依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。
权利要求
1.基于看门狗本地检测技术的高可用集群系统假死解决方法,其特征在于包括以下步骤A.集群系统启动时,读取配置文件,得到喂狗时间间隔T和最大检测失败次数N;设置看门狗超时时间为TXN,开启看门狗;B.设定喂狗参数条件;C.启动定时器进程,每隔时间T检测喂狗参数是否符合,参数符合则进行喂狗操作,然后等待时间τ后进行下次检测;否则执行步骤D ;D.检测失败,不喂狗,等待时间T后进行下次检测;当连续N次检测失败,看门狗超时, 系统重启;E.系统重启过程中,该节点上运行的服务迁移到备份节点,保证系统的高可用性和数据安全性。
2.根据权利要求1所述的基于看门狗本地检测技术的高可用集群系统假死解决方法, 其特征在于步骤B中,所述喂狗参数条件为定时器进程正常运行。
3.根据权利要求1所述的基于看门狗本地检测技术的高可用集群系统假死解决方法, 其特征在于步骤B中,所述喂狗参数条件为衡量系统负载,系统负载小于阀值则符合喂狗条件。
4.根据权利要求3所述的基于看门狗本地检测技术的高可用集群系统假死解决方法, 其特征在于所述衡量系统负载的方法是,首先,获取系统CPU的总个数Num ;其次,读取系统最近5-20分钟的总负载值Load,计算当前平均负载LoadAvg = Load/Num ;然后比较系统当前平均负载LoadAvg与配置文件中规定的系统负载阈值Thres,如果LoadAvg小于 Thres,则喂狗参数符合。
5.根据权利要求3所述的基于看门狗本地检测技术的高可用集群系统假死解决方法, 其特征在于所述衡量系统负载的方式为iowait查看磁盘IO负载、vmstat估算内存负载中的至少一种。
6.根据权利要求1所述的基于看门狗本地检测技术的高可用集群系统假死解决方法, 其特征在于步骤B中,所述喂狗参数条件为,首先,读取配置文件,记录需要由看门狗检测的服务以及其检测脚本信息;然后,进行服务本地检测,如果服务检测成功,则喂狗参数符I=I ο
7.根据权利要求6所述的基于看门狗本地检测技术的高可用集群系统假死解决方法, 其特征在于所述服务本地检测方式为通过检测脚本发送TCP连接请求、SQL查询、特定于服务的消息、带协议标示位的包头或包体中的任一种方式检测服务的可用性。
8.根据权利要求7所述的基于看门狗本地检测技术的高可用集群系统假死解决方法, 其特征在于所述检测脚本是由python、perl、shell、C中任一种语言所编写的检测程序。
9.根据权利要求1-8中任一项所述的基于看门狗本地检测技术的高可用集群系统假死解决方法,其特征在于所述看门狗是硬件看门狗。
全文摘要
本发明提供的基于看门狗本地检测技术的高可用集群系统假死解决方法,属于计算机集群技术领域。该方法通过预先设定喂狗参数条件,每隔时间T检测喂狗参数是否符合,参数符合则进行喂狗操作,然后等待时间T后进行下次检测;否则不喂狗,等待时间T后进行下次检测;当连续N次检测失败,看门狗超时,系统重启;系统重启过程中,该节点上运行的服务迁移到备份节点,保证系统的高可用性和数据安全性。避免了避免了主机假死恢复后服务在两个节点同时运行,会发生磁阵双挂,导致用户数据丢失的问题,保证了整个系统运行的稳定性。该方法可广泛应用于计算机集群技术领域。
文档编号G06F11/07GK102521060SQ201110362929
公开日2012年6月27日 申请日期2011年11月16日 优先权日2011年11月16日
发明者王幸福, 蔡强, 袁泉 申请人:广东新支点技术服务有限公司