一种基于内存换页同步的双机热备方法
【专利摘要】本发明公开一种基于内存换页同步的双机热备方法,包括以下步骤:(1)建立主机和备机的双机架构拓扑;(2)创建关键接续数据共享内存;(3)将关键接续数据实时存入对应的共享内存;(4)内存页面进行共享内存页面快照和页面同步;(5)控制双机切换;(6)双机切换后,备机变为主机,加载关键接续数据,无缝接续计算机系统运行,完成双机热备。本发明使得备机的启用和主机的恢复能够做到无扰切换,业务具有连续性;其次,采用了先进的双机检测手段,能够检测双机的硬件与软件,并且深入检测程序内部,有效提高了系统的可靠性与可用性,并且双机切换时间只有几秒。
【专利说明】一种基于内存换页同步的双机热备方法
【技术领域】
[0001]本发明属于双机热备系统领域,特别涉及一种基于内存换页同步的双机热备方法。
【背景技术】
[0002]现阶段,一般商用的双机集群系统在服务器状态的检测和资源的接管上都实现得很好,但是在实际的高实时系统应用中仍然存在一些缺点,主要是:
[0003]一般商用双机系统只检测服务器的状态,不检测服务程序内部的状态,在服务程序出现软件故障的时候,无法检测到这种情况,这在一定程度上降低了系统的可靠性与可用性;
[0004]服务器故障时,一般商用双机系统只能进行机器的自动切换,不支持用户自定义其他操作,灵活性较差;
[0005]一般商用双机系统没有实时性要求,切换时间长,一般切换时间达到几十秒甚至几十分钟;
[0006]备机的启用和主机的恢复做不到无扰切换,此过程中,业务不具有连续性。
【发明内容】
[0007]发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于内存换页同步的双机热备方法。
[0008]为了解决上述技术问题,本发明公开了一种基于内存换页同步的双机热备方法,包括以下步骤:
[0009]( I)建立主机和备机的双机架构拓扑;
[0010](2)创建关键接续数据共享内存;
[0011](3)将关键接续数据实时存入对应的共享内存;
[0012](4)内存页面进行共享内存页面快照和页面同步;
[0013](5)控制双机切换;
[0014](6)双机切换后,备机变为主机,加载关键接续数据,无缝接续计算机系统运行,完成双机热备。
[0015]步骤(I)中,主机和备机建立基于C/S的系统架构,两台服务器至少各配置两个网口,一个网口连接公网,另一个配置成主机和备机之间的私有网络,即心跳线。
[0016]步骤(2 )中,主机和备机创建共享内存,用以存储关键接续数据,关键接续数据是指在发生双机切换时能够不中断业务,接续计算机系统运行的所需要的数据。
[0017]步骤(3)中,主机和备机将关键接续数据实时存入或更新共享内存;更新共享内存使用的接口函数将共享内存中变化的页面做了标识,其标识变化页面的算法如下:
[0018](31)将整个共享内存区分为两部分,一部分为页面标识区,用以标识变化的页面,每一位对应一个大小为4KB的数据页面;另一部分为数据区,用以存储应用的关键接续数据,每个数据页面大小为4KB;
[0019](32)更新共享内存时,首先找到相应的数据区,更新数据后,将对应的页面标识区置为1,表示该数据区进行了更新。[0020]步骤(4)内存页面进行共享内存页面快照包括以下步骤:[0021](401)对主机接续共孚内存进行与加锁;[0022](402)主机进行快照,将改变的页面加入到一个页面队列中;[0023](403)对主机的接续共孚内存进行与解锁。[0024]步骤(4)中内存页面进行共享内存页面同步,包括如下步骤:[0025](404):主机与备机建立TCP连接;[0026](405):备机等待TCP连接;[0027](406):备机接受TCP连接;[0028](407):备机等待接收页面数据;[0029](408):主机将发送页面队列中页面数据组装报文依次发往备机,报文中含有改变的页面总数及当前页面序号;[0030](409):备机接收页面数据加入到缓冲队列;[0031](410):主机关闭TCP连接,挂下一次时控;[0032](411):备机断开TCP链接,并判定接收的页面数与改变的页面数是否一致,如果是则进行步骤(412),否则,转入步骤(405);[0033](412):备机更新共享内存的对应改变页面。[0034]步骤(5)中,主机和备机通过心跳线定期发送维护报方式探测对方的活动,当在规
定的时间内未能收到对方的维护报文,即认为对方掉线,如果是备机探测到主机掉线,则备 机切换为主机运行。
[0035]本发明步骤(6)中,主机和备机切换后,备机变为主机,加载共享内存中的关键接 续数据,无缝地接续计算机系统运行。
[0036]本发明首先建立双机架构拓扑,双机控制软件为应用创建关键接续数据共享内 存;各应用运行过程中将关键接续数据实时存入对应的共享内存中,内存页面同步软件定 期检测共享内存页面的变化并进行共享内存页面同步。双机控制软件监视双机的软硬件状 态并控制双机的切换,当双机切换后,各应用加载共享内存中关键接续数据完成系统的无 缝接续运行。
[0037]本发明克服一般商用双机软件不能适应高实时系统的要求,最大限度的提高实时 系统的健壮性、稳定性、可靠性,使得在服务器主机在故障时,服务器备机能够无缝的接续 主机的运行。
[0038]有益效果:本发明采用了独特的(关键接续数据共享)内存换页同步技术,使得备 机的启用和主机的恢复能够做到无扰切换,业务具有连续性;其次,采用了先进的双机检测 手段,能够检测双机的硬件与软件,并且深入检测程序内部,有效提高了系统的可靠性与可 用性,并且双机切换时间只有几秒;最后,还能支持一定的用户自定义操作,如某程序发生 异常退出时,可以直接重新启动接续运行,而不必进行双机切换。本发明实现原理相对简 单,通过工程实践证明,本发明能够克服一般商用双机软件不能适应高实时系统的要求,最 大限度的提高高实时系统的健壮性、稳定性、可靠性。【专利附图】
【附图说明】
[0039]下面结合附图和【具体实施方式】对本发明做更进一步的具体说明,本发明的上述和 /或其他方面的优点将会变得更加清楚。
[0040]图1为本发明中共享内存快照及共享内存换页同步流程图。
【具体实施方式】
[0041]本发明公开了一种基于内存换页同步的双机热备方法,包括以下步骤:
[0042](7)建立主机和备机的双机架构拓扑;
[0043](8)创建关键接续数据共享内存;
[0044](9)将关键接续数据实时存入对应的共享内存;
[0045](10)内存页面进行共享内存页面快照和页面同步;
[0046](11)控制双机切换;
[0047](12)双机切换后,备机变为主机,加载关键接续数据,无缝接续计算机系统运行, 完成双机热备。
[0048]步骤(I)中,主机和备机建立基于C/S的系统架构,两台服务器至少各配置两个网 口,一个网口连接公网,另一个配置成主机和备机之间的私有网络,即心跳线。
[0049]步骤(2)中,主机和备机创建共享内存,用以存储关键接续数据,关键接续数据是 指在发生双机切换时能够不中断业务,接续计算机系统运行的所需要的数据。
[0050]步骤(3)中,主机和备机将关键接续数据实时存入或更新共享内存;更新共享内 存使用的接口函数将共享内存中变化的页面做了标识,其标识变化页面的算法如下:
[0051](31)将整个共享内存区分为两部分,一部分为页面标识区,用以标识变化的页面, 每一位对应一个大小为4KB的数据页面;另一部分为数据区,用以存储应用的关键接续数 据,每个数据页面大小为4KB;
[0052](32)更新共享内存时,首先找到相应的数据区,更新数据后,将对应的页面标识区 置为1,表示该数据区进行了更新。
[0053]步骤(4)内存页面进行共享内存页面快照包括以下步骤:
[0054](401)对主机接续共享内存进行写加锁;
[0055](402)主机进行快照,将改变的页面加入到一个页面队列中;
[0056](403)对主机的接续共享内存进行写解锁。
[0057]步骤(4)中内存页面进行共享内存页面同步,包括如下步骤:
[0058](404):主机与备机建立TCP连接;
[0059](405):备机等待TCP连接;
[0060](406):备机接受TCP连接;
[0061](407):备机等待接收页面数据;
[0062](408):主机将发送页面队列中页面数据组装报文依次发往备机,报文中含有改变 的页面总数及当前页面序号;
[0063](409):备机接收页面数据加入到缓冲队列;
[0064](410):主机关闭TCP连接,挂下一次时控;[0065](411):备机断开TCP链接,并判定接收的页面数与改变的页面数是否一致,如果是则进行步骤(412),否则,转入步骤(405);
[0066](412):备机更新共享内存的对应改变页面。
[0067]步骤(5)中,主机和备机通过心跳线定期发送维护报方式探测对方的活动,当在规定的时间内未能收到对方的维护报文,即认为对方掉线,如果是备机探测到主机掉线,则备机切换为主机运行。
[0068]本发明步骤(6)中,主机和备机切换后,备机变为主机,加载共享内存中的关键接续数据,无缝地接续计算机系统运行。
[0069]实施例
[0070]本实施例提出了一种基于内存换页同步双机热备系统的实现方法,首先建立双机架构拓扑,双机控制软件为应用创建关键接续数据共享内存;各应用运行过程中将关键接续数据实时存入对应的共享内存中,内存页面同步软件定期检测共享内存页面的变化并进行共享内存页面同步。双机控制软件监视双机的软硬件状态并控制双机的切换,当双机切换后,各应用加载共享内存中关键接续数据完成系统的无缝接续运行。本发明包括以下处理步骤:
[0071](I)建立基于C/S的系统架构,两台服务器应至少配置两个网口,一个网口连接公网,另一个配置成私有网络,即心跳线。一般情况下,公网最好能够配置两个网口,采用双网主备冗余方式绑定,增加系统的可靠性。私有网络端口,可视传递数据量(内存换页同步数据优先从私有网络端口传输)情况,增加一个网络端口,采用负载均衡方式的绑定,以增加私有网络(心跳线)的带宽与可靠性。见图1。
[0072](2)双机控制软件根据各应用的需求(配置),为之创建共享内存,用以存储应用的关键接续数据,此关键接续数据是指在发生双机切换的时候,应用能够不中断业务接续运行的数据。
[0073](3)各应用将关键接续数据实时存入或更新其对应的共享内存,应用更新共享内存应使用专门的接口函数,该接口函数在更新共享内存的同时,将共享内存中变化的页面做了标识,
[0074]接口函数如下:
[0075]long UpdateShareMembyShareName(char*shareName, unsigned char*udata, longstartPos, long Size)
[0076]long UpdateShareMembyShareID(int shareID, unsigned char*udata, longstartPos, long Size)
[0077]以上两个函数实现同样的功能,区别在于第一个函数是根据共享内存区域名称进行更新,第二个是根据共享区域ID (即编号)进行更新。
[0078]参数:
[0079]shareName:字符串型,共享内存区域名称;
[0080]udata:更新的数据;
[0081]shareID:整型,共享区域ID (即编号);
[0082]startPos:长整型,更新的数据相对于该共享内存区域首址的偏移量(字节数);
[0083]Size:长整型,待更新数据的字节数;[0084]返回值:
[0085]大于0:本次成功更新数据的字节数;
[0086]0:未找到指定的共享内存区域(shareName或者shareID);
[0087]-1:startPos超出了该共享内存区域;
[0088]-2:待更新的数据量大于该指定的共享内存区域大小;
[0089]-3:startPos与Size之和大于该指定的共享内存区域大小;
[0090]具体算法如下:
[0091]其标识变化页面的算法如下:
[0092]A.整个共享内存区分为两部分,一部分为页面标识区,用以标识变化的页面,每一 位对应一个大小为4KB的数据页面;另一部分为数据区,用以存储应用的关键接续数据,每 个数据页面大小为4KB ;
[0093]B.应用更新数据时,首先找到相应的数据页面,更新数据后,将对应的页面标识位 置为1,表示该页面发生了变化;
[0094](4)主机上的内存页面同步软件定期(2秒)对共享内存区域进行页面快照,将变 化的内存页面发送到备机,备机的内存页面同步软件收到完整的变化的页面后,对本机的 共享内存进行同步更新。进行快照时,必须锁定共享内存的写访问,以保证此刻关键接续数 据的一致性,锁定后,快照必须在毫秒级完成,否则会对应用的运行产生影响,其页面快照 算法如下:
[0095]A.首先页面标识区的标识位是连续的,一次可以判定连续的32位(一个整数)的 整数值是否为0,如果为0,表示对应的32个页面都没有发生变化;
[0096]B.如果不为0,则表示32个对应页面中有变化的页面,此时,依次(需要4次循环) 判定32位中连续的8位(一个字节)的值是否为0,如果为0,表示对应的8个页面都没有发 生变化;
[0097]C.如果不为0,则表示8个对应页面中有变化的页面,此时,应依次判定(8位中) 每一位是否为0,为0,表示对应页面没有变化;不为0,表示对应页面已发生变化,将对应数 据页面进行快照(拷贝)并放入页面队列;
[0098]D.依次循环执行上述3个步骤,直至页面标识区判定完毕;
[0099]E.将页面标识区所有位全部置0 ;
[0100]快照完成后,对共享内存的写访问解锁,接着主备机之间开始传输页面数据。传输 采用TCP方式,但由于TCP的链路维护是非常复杂的,为避开复杂的链路维护,灵活采用了 用时建链、用完断链的方式,TCP传输优先选择心跳线进行传输,如果失败,则采用公网线路 进行建链传输,具体步骤解释如下:
[0101]A.主1:接续共孚内存与加锁;[0102]B.主2:进行快照,将改变的页面加入到发送页面队列中[0103]C.主3:接续共孚内存与解锁;[0104]D.主4:与备机建立TCP连接;[0105]E.备5:TCP等待;[0106]F.备6:接受TCP连接;[0107]G.备7:等待接收页面数据;[0108]H.主8:将页面队列中页面数据组装报文依次发往备机;
[0109]1.备9:接收页面数据加入到缓冲队列;
[0110]J.主10:关闭TCP连接,挂下一次时控;
[0111]K.备11:TCP断链,判定接收的页面数与变化的页面数一致,如果不是,则转入步骤备5:如果是,转入步骤备12 ;
[0112]L.备12:更新共享内存的相应页面,然后转入步骤备5 ;
[0113]故障检测是双机系统中最基础的一步,对于实时系统来说,故障检测必须做到定位故障及时准确、占用系统开销小、故障判别的成功率高。基于内存换页同步的双机热备系统中,采用了定时检测和动态检测相结合的方法进行双机状态的检测。定时检测指双机周期性的(I秒)发送状态维护报,维护报优先从心跳线发送,如心跳线发送失败,则从公网发送,如果一方连续多次(如4秒)未收到对方的维护报,则认为对方失效。这种方式不仅能有类似Ping方式检测的优点,还能从一定程度上冗余软件故障。动态检测指双机监控模块主动探测软件的运行状态,如软件超时、软件死循环、软件异常退出等。当检测到某软件故障时,双机监控模块立即停止发送维护报,进行故障告警,并通知对方进行双机切换,然后重启故障软件。
[0114]双机的状态切换是双机热备系统的一个关键问题,主要包括双机的并机(由单机变成双机的过程),双机切出(由双机变成单机的过程),双机的主备切换。双机并机,某服务器先单机运行,之后另一服务器启动运行形成双机的过程即为双机并机,此过程处理很简单,原先的单机主动升级为双机中的主机,接收输入信息、处理并输出;而后启的服务器则作为双机中的备机,处于空转状态。双机切出,双机在运行过程中,某服务器由于故障或人工命令退出,只剩单台工作的过程。双机切出分两种情况,一种是备机退出;另一种是主机退出,备机升级为主机。双机主备切换,双机在运行过程中,由人工命令或故障使得主备机交换的过程。
[0115](6)双机切换后,备机的各应用应加载共享内存中各自的关键接续数据,并根据这些关键接续数据重新挂载所用的时控,无缝的接续系统运行。具体的处理方法如下:
[0116]A.关键接续数据处理备机升为主机后,双机监视模块立即通知各应用,备机应用立即加载各自共享区的关键接续数据。
[0117]B.时控的处理应用加载完关键接续数据之后,最关键的就是时控的重新挂载了。时控大致分为三类,一类是周期性循环的时控,此类时控直接挂上即可;第二类是由某类信息触发的或者人工干预触发的单次或多次循环的时控,对于这类时控,可将触发条件或干预命令等信息作为关键数据存放于接续共享区,变为主机后,可根据这类信息,重新解算并挂起时控;第三类是由周期性的消息触发的单次时控,这类时控可由新的消息再次触发,不必做特殊加载处理。
[0118]从上面的处理可看出,系统还具有单机软故障快速恢复的能力。如果系统只有单机在运行,当某软件(非双机控制软件)发生故障时,双机控制软件可立即重启该软件,该软件只要执行以上A、B步骤的操作,便能正常的无缝的接续工作了。
[0119]本发明提供了一种基于内存换页同步的双机热备方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
【权利要求】
1.一种基于内存换页同步的双机热备方法,其特征在于,包括以下步骤: (1)建立主机和备机的双机架构拓扑; (2)创建关键接续数据共享内存; (3)将关键接续数据实时存入对应的共享内存; (4)内存页面进行共享内存页面快照和页面同步; (5)控制双机切换; (6)双机切换后,备机变为主机,加载关键接续数据,无缝接续计算机系统运行,完成双机热备。
2.根据权利要求1所述的一种基于内存换页同步的双机热备方法,其特征在于,步骤Cl)中,主机和备机两台服务器至少各配置两个网口,一个网口连接公网,另一个配置成主机和备机之间的私有网络,即心跳线。
3.根据权利要求1所述的一种基于内存换页同步的双机热备方法,其特征在于,步骤(2)中,主机和备机创建共享内存,用以存储关键接续数据,关键接续数据是指在发生双机切换时能够不中断业务,接续计算机系统运行的所需要的数据。
4.根据权利要求1所述的一种基于内存换页同步的双机热备方法,其特征在于,步骤(3 )中,主机和备机将关键接续数据实时存入或更新共享内存;更新共享内存使用的接口函数将共享内存中变化的页面做了标识,其标识变化页面的算法如下: (31)将整个共享内存区分为两部分,一部分为页面标识区,用以标识变化的页面,每一位对应一个大小为4KB的数据页面;另一部分为数据区,用以存储应用的关键接续数据,每个数据页面大小为4KB ; (32)更新共享内存时,首先找到相应的数据区,更新数据后,将对应的页面标识区置为I,表示该数据区进行了更新。
5.根据权利要求4所述的一种基于内存换页同步的双机热备方法,其特征在于,步骤(4)内存页面进行共享内存页面快照包括以下步骤: (401)对主机接续共孚内存进行与加锁; (402)主机进行快照,将改变的页面加入到一个页面队列中; (403)对主机的接续共孚内存进行与解锁。
6.根据权利要求5所述的一种基于内存换页同步的双机热备方法,其特征在于,步骤(4)中内存页面进行共享内存页面同步,包括如下步骤: (404):主机与备机建立TCP连接; (405):备机等待TCP连接; (406):备机接受TCP连接; (407):备机等待接收页面数据; (408):主机将发送页面队列中页面数据组装报文依次发往备机,报文中含有改变的页面总数及当前页面序号; (409):备机接收页面数据加入到缓冲队列; (410):主机关闭TCP连接,挂下一次时控; (411):备机断开TCP链接,并判定接收的页面数与改变的页面数是否一致,如果是则进行步骤(412),否则,转入步骤(405);(412):备机更新共享内存的对应改变页面。
7.根据权利要求2所述的一种基于内存换页同步的双机热备方法,其特征在于,步骤(5)中,主机和备机通过心跳线定期发送维护报方式探测对方的活动,当在规定的时间内未能收到对方的维护报文,即认为对方掉线,如果是备机探测到主机掉线,则备机切换为主机运行。
8.根据权利要求6所述的一种基于内存换页同步的双机热备方法,其特征在于,步骤(6)中,主机和备机切换后,备机`变为主机,加载共享内存中的关键接续数据,无缝地接续计算机系统运行。
【文档编号】H04L12/24GK103532753SQ201310474079
【公开日】2014年1月22日 申请日期:2013年10月11日 优先权日:2013年10月11日
【发明者】陈琛, 刘兵, 占怡, 柳永齐, 陈文明 申请人:中国电子科技集团公司第二十八研究所