首页> 中国专利> 基于keepalived的双机热备系统的控制方法

基于keepalived的双机热备系统的控制方法

摘要

本发明实施例提供了一种基于keepalived的双机热备系统的控制方法,包括:在第一服务器作为主服务器对外提供服务的过程中,如果所述第二服务器监测到所述第一服务器异常,则所述第二服务器切换为主服务器对外提供服务,所述第一服务器的状态置为异常状态,所述第二服务器的keepalived组件预先拉启;所述第一服务器监测到自身的状态由所述异常状态置为正常状态后,自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系。本发明的实施例,通过Keepalived组件提供访问的方式能保证在一个服务器异常的情况下访问无中断,提升服务器的稳定性和可靠性,另外,服务器异常恢复后可以自动与主服务器建立主备关系,不需要人工参与,从而节省人力且方便简单。

著录项

  • 公开/公告号CN112860485A

    专利类型发明专利

  • 公开/公告日2021-05-28

    原文格式PDF

  • 申请/专利权人 北京北信源信息安全技术有限公司;

    申请/专利号CN202110148075.4

  • 发明设计人 林皓;毕永东;杨泳;李渊;

    申请日2021-02-03

  • 分类号G06F11/14(20060101);G06F9/445(20180101);G06F11/30(20060101);

  • 代理机构11002 北京路浩知识产权代理有限公司;

  • 代理人李文清

  • 地址 100093 北京市海淀区闵庄路3号103幢三层301

  • 入库时间 2023-06-19 11:08:20

说明书

技术领域

本发明涉及服务器部署技术领域,尤其涉及一种基于keepalived的双机热备系统的控制方法。

背景技术

双机热备系统在主服务器出现故障后,可以由备用服务器继续提供服务。目前的双机热备系统,在主服务器发生故障并由人工修复后,需要人工处理繁琐的配置等工作,以将修复好的服务器再接入双机热备系统中,从而恢复主备关系,操作繁琐,浪费人力。

发明内容

针对现有技术中的问题,本发明实施例提供一种基于keepalived的双机热备系统的控制方法。

具体地,本发明实施例提供了以下技术方案:

第一方面,本发明实施例提供了一种基于keepalived的双机热备系统的控制方法,所述双机热备系统包括第一服务器和第二服务器,所述第一服务器和所述第二服务器互为主备,所述第一服务器和所述第二服务器预先安装有keepalived组件,所述第一服务器和所述第二服务器通过各自的keepalived组件向外提供服务,所述控制方法包括:

在第一服务器作为主服务器对外提供服务的过程中,如果所述第二服务器监测到所述第一服务器异常,则所述第二服务器切换为主服务器对外提供服务,所述第一服务器的状态置为异常状态,所述第二服务器的keepalived组件预先拉启;

所述第一服务器监测到自身的状态由所述异常状态置为正常状态后,自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系。

进一步地,在所述第一服务器作为主服务器对外提供服务的过程中,所述第一服务器通过自身的keepalived组件挂载服务IP,以通过所述服务器IP向外提供服务,在所述第二服务器作为主服务器对外提供服务的过程中,所述第二服务器通过自身的keepalived组件挂载服务IP,以通过所述服务器IP向外提供服务。

进一步地,所述第一服务器的keepalived组件通过向所述第二服务器的keepalived组件发送心跳信号,以确定所述第二服务器是否异常,所述第二服务器的keepalived组件通过向所述第一服务器的keepalived组件发送心跳信号,以确定所述第一服务器是否异常。

进一步地,所述第一服务器监测到自身的状态由所述异常状态置为正常状态后,自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系,包括:

所述第一服务器重启时,或者在定时执行脚本达到执行时间时,执行连接预设的网关地址的命令,并在与所述网关地址连接成功时,将所述异常状态置为所述正常状态,并自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系。

进一步地,在第一服务器作为主服务器对外提供服务的过程中,如果所述第二服务器监测到所述第一服务器异常时,所述第一服务器还用于触发执行停止自身向外提供的服务,并将所述第一服务器的所述正常状态置为所述异常状态。

进一步地,所述第二服务器切换为主服务器对外提供服务时,还包括:所述第二服务器预先启动自身向外提供的服务。

进一步地,所述第一服务器和所述第二服务器之间进行数据同步操作,其中,所述数据同步包括数据库同步、缓存Redis同步和文件存储FastDFS同步。

第二方面,本发明实施例还提供了一种基于keepalived的双机热备系统,所述双机热备系统包括第一服务器和第二服务器,所述第一服务器和所述第二服务器互为主备,所述第一服务器和所述第二服务器预先安装有keepalived组件,所述第一服务器和所述第二服务器通过各自的keepalived组件向外提供服务,其中:

在第一服务器作为主服务器对外提供服务的过程中,如果所述第二服务器监测到所述第一服务器异常,则所述第二服务器切换为主服务器对外提供服务,所述第一服务器的状态置为异常状态,所述第二服务器的keepalived组件预先拉启;

所述第一服务器监测到自身的状态由所述异常状态置为正常状态后,自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系。

第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的基于keepalived的双机热备系统的控制方法的步骤。

第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的基于keepalived的双机热备系统的控制方法的步骤。

由上面技术方案可知,本发明实施例提供的基于keepalived的双机热备系统的控制方法,通过Keepalived组件提供访问的方式能保证在一个服务器异常的情况下访问无中断,提升服务器的稳定性和可靠性,另外,服务器异常恢复后可以自动与主服务器建立主备关系,不需要人工参与,从而节省人力且方便简单。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的基于keepalived的双机热备系统的控制方法的流程图;

图2为本发明一实施例提供的基于keepalived的双机热备系统的控制方法中双机热备系统部署示意图;

图3为本发明一实施例提供的基于keepalived的双机热备系统的结构框图;

图4为本发明一实施例提供的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1示出了本发明实施例提供的基于keepalived的双机热备系统的控制方法的流程图。其中,双机热备系统包括第一服务器和第二服务器,所述第一服务器和所述第二服务器互为主备,所述第一服务器和所述第二服务器预先安装有keepalived组件,所述第一服务器和所述第二服务器通过各自的keepalived组件向外提供服务。

在具体应用中,双机热备系统通常应用于软件或应用系统部署架构要求高可用的场景,双机热备系统旨在解决服务器断电、故障关机、断网、硬盘损坏等场景下导致的业务应用系统不可用的问题。一般情况两台服务器分布在不同的物理位置,其中一台机器故障不可用时,另外一台服务器可继续提供服务,是一种以整个服务器为单位的高可用架构。从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。双机热备由备用的服务器解决了在主服务器故障时服务中断的问题。

双机热备就是一种利用故障点转移的方式来保障业务连续性。其业务的恢复不是在原服务器,而是在备用服务器。双机热备热备不具有修复故障服务器的功能,而只是将故障隔离。服务器的故障可能由各种原因引起,如设备故障、操作系统故障、软件系统故障等等。

如图1所示,本发明实施例提供的基于keepalived的双机热备系统的控制方法,包括如下步骤:

步骤101:在第一服务器作为主服务器对外提供服务的过程中,如果所述第二服务器监测到所述第一服务器异常,则所述第二服务器切换为主服务器对外提供服务,所述第一服务器的状态置为异常状态,所述第二服务器的keepalived组件预先拉启。

第一服务器可以是主服务器,即服务器1,第二服务器是备用服务器,即服务器2。可以理解的是,主服务器和备用服务器仅仅是相对而言的,假设当前第一服务器是主服务器,当第一服务器故障发生后,第二服务器则切换成主服务器,类似地,假设当前第二服务器是主服务器,当第二服务器故障发生后,第一服务器则切换成主服务器。

在本发明的一个实施例中,在所述第一服务器作为主服务器对外提供服务的过程中,所述第一服务器通过自身的keepalived组件挂载服务IP(即:虚拟IP地址),以通过所述服务器IP向外提供服务,在所述第二服务器作为主服务器对外提供服务的过程中,所述第二服务器通过自身的keepalived组件挂载服务IP,以通过所述服务器IP向外提供服务。

第一服务器可以监测第二服务器是否异常,第二服务器也可以监测第一服务器是否异常,具体来说,所述第一服务器的keepalived组件通过向所述第二服务器的keepalived组件发送心跳信号,以确定所述第二服务器是否异常,所述第二服务器的keepalived组件通过向所述第一服务器的keepalived组件发送心跳信号,以确定所述第一服务器是否异常。

步骤102:第一服务器监测到自身的状态由异常状态置为正常状态后,自动拉启自身的keepalived组件,以与第二服务器建立主备关系。

具体来说,第一服务器监测到自身的状态由所述异常状态置为正常状态后,自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系,包括:所述第一服务器重启时,或者在定时执行脚本达到执行时间时,执行连接预设的网关地址的命令,并在与所述网关地址连接成功时,将所述异常状态置为所述正常状态,并自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系。

在本发明的一个实施例中,在第一服务器作为主服务器对外提供服务的过程中,如果所述第二服务器监测到所述第一服务器异常时,所述第一服务器还用于触发执行停止自身向外提供的服务,并将所述第一服务器的所述正常状态置为所述异常状态。

在本发明的一个实施例中,所述第二服务器切换为主服务器对外提供服务时,还包括:所述第二服务器预先启动自身向外提供的服务。

在具体应用中,用KeepAlived通过一个VIP(即:服务IP)对外提供服务。两台机器(即第一服务器和第二服务器)都安装KeepAlived,并做相应配置。

两个服务器,通过keepalived组件增加VIP挂载,所有请求都通过VIP来访问。同一时间仅有一台服务器对外提供服务,默认主服务器先启动keepalived,优先挂载VIP对外提供访问。Keepalived组件之间可以互相心跳监测,当备机监测到和主机无法通信,则备机的keepalived会将VIP挂载到备机,这时由备服务器提供服务,完成主备切换。通过VIP访问服务实际后端是由备服务器提供服务。

Keepalived使用非抢占式配置:非抢占式不再有主备之分,主备关系是相对的,配置全部都为BACKUP,并且配置文件中添加nopreempt,用来标识为非抢占式。

心跳监控,实际是2个keepalived之间心跳,心跳失败会认为对方故障,触发挂载VIP。监测对方故障包括但不限于服务器关机、硬件故障、系统故障、断网等,当然停止keepalived,也会导致对方心跳失败,也会触发对方挂载VIP。

如图2所示,正常和异常切换逻辑,保证故障机器恢复正常自动建立主备关系,每台机器部署一个脚本(例如check_gateway.sh),脚本内部逻辑为ping网关地址,并记录连通结果(bad为失败,good为成功)到result_ping.txt。使用crontab定时执行脚本(例如周期为1分钟),crontab服务设置为开机自启动。根据result_ping.txt中记录的数据做相应的操作。目的是保证服务器从异常恢复为正常后,可以自动拉启keepalived,保证和当前主机建立主备关系。并且脚本中也可以做些额外的操作,比如自动拉启组件和服务(mysql、redis、fastdfs、应用服务等等),具体根据需要来增加。其中,result_ping.txt中记录3次ping网关的结果和当前服务器状态(active正常,inactive异常)。

正常切换为异常,如果连续3次ping不通(三次都是bad),并且当前状态是正常(current_state=active),则认为服务器从正常变为异常,触发执行停止所有组件和服务,因为服务器异常如果不停止组件和服务可能会带来错误的运行记录,不过此处按需处理即可。停止完成后标记状态为异常(current_state=inactive)。

异常切换为正常,当服务器从异常中恢复后,开机自启动开启定时器执行脚本,连续3次ping成功(三次都是good),并且当前状态是异常(current_state=inactive),则认为服务器从异常切换为正常,标记状态为正常(current_state=active),之后触发执行启动所有组件和服务,保证数据存储层的组件之间的数据同步开始执行。服务也准备好,备机完成自动接入。保证下一次主机故障,备机可正常快速提供服务。

在本发明的一个实施例中,所述第一服务器和所述第二服务器之间进行数据同步操作,其中,所述数据同步包括数据库同步、缓存Redis同步和文件存储FastDFS同步。由此,可以保证数据完整性以及切换后业务系统数据的一致性。

具体来说,数据存储层同步,因为是两台服务器,单独都可提供服务。要做到实时切换并可提供服务,底层得数据存储全部都需要共享同步。组件涉及:数据库MySQL、缓存Redis、文件存储FastDFS。

MySQL做主主同步;

Redis只支持主备同步。发生主备切换时,由于Redis的特殊性,备服务需要将Redis的配置修改为主配置,再重启后方可生效。此处的操作会在keepalived触发挂载VIP时配置的监控脚本自动执行。具体在上面的keepalived配置示例可看到redis_master.sh和redis_backup.sh,脚本内容就是切换redis的主从角色。

FastDFS:每个机器(主备)各自都配置一个tracker和一个storage,两个storage是属于同一组的,之间是复制模式。每个storage配置tracker_server为两台机器的tracker,这样两台文件就是同步的。

根据本发明实施例的基于keepalived的双机热备系统的控制方法,通过Keepalived组件提供访问的方式能保证在一个服务器异常的情况下访问无中断,提升服务器的稳定性和可靠性,另外,服务器异常恢复后可以自动与主服务器建立主备关系,不需要人工参与,从而节省人力且方便简单。

图3示出了本发明实施例提供的基于keepalived的双机热备系统的结构示意图。如图3所示,本实施例提供的基于keepalived的双机热备系统,包括:第一服务器310和第二服务器320,所述第一服务器310和所述第二服务器320互为主备,所述第一服务器310和所述第二服务器320预先安装有keepalived组件,所述第一服务器310和所述第二服务器320通过各自的keepalived组件向外提供服务,其中:

在第一服务器310作为主服务器对外提供服务的过程中,如果所述第二服务器320监测到所述第一服务器310异常,则所述第二服务器320切换为主服务器对外提供服务,所述第一服务器310的状态置为异常状态,所述第二服务器320的keepalived组件预先拉启;

所述第一服务器310监测到自身的状态由所述异常状态置为正常状态后,自动拉启自身的keepalived组件,以与所述第二服务器320建立主备关系。

根据本发明实施例的基于keepalived的双机热备系统,通过Keepalived组件提供访问的方式能保证在一个服务器异常的情况下访问无中断,提升服务器的稳定性和可靠性,另外,服务器异常恢复后可以自动与主服务器建立主备关系,不需要人工参与,从而节省人力且方便简单。

由于本发明实施例提供的基于keepalived的双机热备系统,可以用于执行上述实施例所述的基于keepalived的双机热备系统的控制方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。

在本实施例中,需要说明的是,本发明实施例的装置中的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。

基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图4,所述电子设备具体包括如下内容:处理器301、存储器302、通信接口303和通信总线304;

其中,所述处理器301、存储器302、通信接口303通过所述通信总线304完成相互间的通信;

所述处理器301用于调用所述存储器302中的计算机程序,所述处理器执行所述计算机程序时实现上述基于keepalived的双机热备系统的控制方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:在第一服务器作为主服务器对外提供服务的过程中,如果所述第二服务器监测到所述第一服务器异常,则所述第二服务器切换为主服务器对外提供服务,所述第一服务器的状态置为异常状态,所述第二服务器的keepalived组件预先拉启;所述第一服务器监测到自身的状态由所述异常状态置为正常状态后,自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系。

可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。

基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述基于keepalived的双机热备系统的控制方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:在第一服务器作为主服务器对外提供服务的过程中,如果所述第二服务器监测到所述第一服务器异常,则所述第二服务器切换为主服务器对外提供服务,所述第一服务器的状态置为异常状态,所述第二服务器的keepalived组件预先拉启;所述第一服务器监测到自身的状态由所述异常状态置为正常状态后,自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系。

可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。

基于相同的发明构思,本发明又一实施例提供了一种计算机程序产品,所计算机程序产品包括有计算机程序,该计算机程序被处理器执行时实现上述基于keepalived的双机热备系统的控制方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:在第一服务器作为主服务器对外提供服务的过程中,如果所述第二服务器监测到所述第一服务器异常,则所述第二服务器切换为主服务器对外提供服务,所述第一服务器的状态置为异常状态,所述第二服务器的keepalived组件预先拉启;所述第一服务器监测到自身的状态由所述异常状态置为正常状态后,自动拉启自身的keepalived组件,以与所述第二服务器建立主备关系。

可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。

此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的流量审计方法。

此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

此外,在本发明中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号