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