肖 佳,王古城,杨 旭,晁 勇
(1.华夏经纬信息科技有限公司 北京100022;2.广东省海外联络办公室 广东 广州510080;3.腾讯科技(北京)有限公司 北京100080)
双机热备与负载均衡的设计与实现
肖 佳1,王古城2,杨 旭3,晁 勇1
(1.华夏经纬信息科技有限公司 北京100022;2.广东省海外联络办公室 广东 广州510080;3.腾讯科技(北京)有限公司 北京100080)
针对OpenFlow SDN系统中的策略管理模块提出了一种新型的双机热备和负载均衡方案,采用了服务器集群的方式,通过Keepalived和Heartbeat实现了双机热备模块,通过Nginx实现了代理服务器和负载均衡模块。经工程验证有效降低了故障概率,系统可用性从97﹪提高至近100﹪。
SDN;策略管理;双机热备;负载均衡
随着计算机技术的发展,一套完备系统对数据安全和服务保障有着极高的要求,数据和服务的重要性已远远超过硬件本身。为了提高业务和数据的可用性和可靠性,实际应用中通常采取冗余和容错技术处理,而双机热备就是其中一种有效的解决方案[1]。双机热备系统一般包含主备两个功能单元,正常状态下主备两个单元均上电工作,但只有主单元输出有效。在主单元发生故障的情况下,备单元马上能够接替工作,保证系统能够持续、安全和可靠的运行。
系统故障主要原因可分3类,一是硬件自身故障,二是软件运行故障,三是机房环境和其他设备导致的故障。前两种故障在主备切换前后不具有关联性,可通过双机热备机制有效规避。而第三种故障则具有前后关联性,必须通过定量分析证明双机热备机制的有效性。运用贝叶斯原理[2],假设合理的故障概率,计算的结果如表1所示。
表1 基于贝叶斯原理计算双机热备故障概率Tab.1 The failure probability calculation of dual-server hotstandby based on baysian theory
经计算所得的结果约为9﹪,该值在备用服务器发生故障时会成为新的先验概率,远低于初始的先验概率20﹪,有效降低了故障概率。综上,无论是哪种故障原因,双机热备系统均能有效提高系统的可靠性和安全性,因而广泛应用于工业各个领域。
随着业务量的提高,网络访问量和数据流量快速增长,各个核心组件的处理能力和计算强度也相应增大,单一的服务器设备根本无法承担。如果放弃现有设备去做大量的硬件升级将造成资源浪费,而负载均衡技术可以很好的解决业务压力问题,对硬件的要求和投入也大大降低。如图1所示,一台普通服务器的性能较低,数台服务器组成集群的能力则等同于一台超级服务器。负载均衡建立在现有网络结构之上,提供了一种廉价透明的方法扩展网络设备和服务器的带宽,增加吞吐量,加强数据处理能力,提高网络的灵活性和可用性[3]。
图1 服务器集群Fig.1 Server cluster
SDN诞生于斯坦福大学Clean Slate课题[4],典型代表是OpenFlow项目[5],而策略管理是Open-Flow SDN中的重要组成部分。策略管理模块具有网络状态收集分析、对策略进行管理和数据可视化等功能,在整个OpenFlow SDN架构中隶属于集中控制点Controller,作用极为重要。为了提高策略管理模块的可用性和安全性,确保其提供可靠的服务,本文提出了一种新型的双机热备和负载均衡的方案。系统通过web服务器方式提供对外访问,代理服务器和负载均衡模块采用Nginx实现,双机热备模块采用Keepalived[6]和Heartbeat[7]实现。
本策略管理系统架构为B/S式,初始设计的架构示意图如图2所示。管理员在外部通过代理服务器实现对于服务器集群的访问,两台代理服务器采用双机热备技术确保系统的可靠性。主从代理服务器通过心跳机制报告自身状况,并监听另一代理服务器的心跳信号以检测对方是否发生故障。正常状态下主、从代理服务器均正常工作,但仅主服务器输出有效。如果检测到主代理服务器发生故障,则从服务器发出切换信号,切换输出;如果检测到从代理服务器发生故障,则将其隔离,避免误切换。
图2 策略管理系统初始架构示意图Fig.2 Initail schematic of the policy management system architecture
负载均衡集群将访问业务分摊,降低了业务压力,硬件配置要求也大幅降低。而集群访问的数据库服务器也通过热备份,即工作状态下实时备份保证了业务数据的安全可靠。
主从代理服务器的负载均衡可使用Nginx作为反向代理服务器来实现,而对外提供虚拟IP的软件可使用Keepalived或Heartbeat。对于Nginx[8]的服务可以使用一个监控脚本,用来监控提供虚拟IP服务器的Nginx是否处于正常工作状态。业务服务器上的软件取决于系统提供的业务,如果是Web服务器可以使用tomcat。数据库服务器上可以使用Keepalived或Heartbeat提供数据库公共访问的接口,数据库可根据业务服务器的要求决定,如Mysql、SQL server等。
上述构思方案实现了双机热备和负载均衡,而且负载均衡集群具有可扩展性。但是,对于硬件设备,诸如服务器和交换机的数量要求较多。鉴于实验室硬件资源有限,而系统业务压力并不大,因此将图2中的方案做以精简,修改为如图3中的方案。
图3 策略管理系统精简架构示意图Fig.3 Simplified schematic of the policy management system architecture
修改后的方案如图2所示,主代理服务器、负载均衡服务器A和数据库服务器A合并为一个主服务器,从代理服务器、负载均衡服务器B和数据库服务器B合并为一个从服务器。功能和工作流程上与原方案基本一致,减少了硬件的数量,提高了硬件的使用率。在当前业务压力下,功能复合对于整个系统稳定性的影响可以忽略。
实现过程按照自顶向下的思路,如图4所示。首先需要实现的是可供外部访问的虚拟IP功能。而双机热备可采用Keepalived和Heartbeat这两款较为通用的软件,提高可靠性避免单点故障。具体实现时可用Keepalived来提供Web访问的虚拟IP1,而Heartbeat提供数据库访问的虚拟IP2,也是通过Web访问。具体模块关系与结构如下图所示。
如图4所示,主从服务器对外提供一个公共的访问端口,即Keepalived提供的虚拟IP1服务。外部访问通过Nginx实现对Tomcat服务的访问,并可实现负载均衡机制,在访问量较大的情况下可有效提高系统性能。Heartbeat用于提供数据库访问的虚拟IP2,而Mysql数据库自带的Master/Slave模式可以实现数据在主从服务器上的实时同步,当主数据库出问题时可以通过Heartbeat服务检测,将主数据库服务转移至从数据库,从而提高数据库服务的可靠性。在实际环境搭建时, Keepalived的配置问题短期内没有解决,因而对方案做了一定的精简,仅采用了Heartbeat提供外部访问的虚拟IP,通过运行监控脚本,实现最初规划。
图4 系统模块关系示意图Fig.4 Schematic of the system module relationship
本系统双机热备方案的工作流程分为如下4种不同的情况:1)正常工作状态;2)主服务器宕机,切换到备用服务器;3)主服务器恢复正常,切换回主服务器;4)正在运行的服务软件异常。
下面将针对不同情况分别描述。
1)正常工作状态流程。
如图5所示,主服务器通过Heartbeat向外提供虚拟IP服务,从服务器的Heartbeat不断发送心跳信息;Nginx提供Web服务器的公共访问端口,Nginx将外部访问任务通过Tomcat的访问地址,分配给主从服务器上的Tomcat;Tomcat根据本机上的Mysql数据库内容,对外提供Web服务;同时,两台机器上的Mysql数据库实时互备,实现数据同步;监控脚本不断检测各个软件的工作状态,通过服务端口判断是否正常。
图5 监控脚本工作流程图Fig.5 Work fow chart of monitor script
2)主服务器宕机时工作流程
从服务器一段时间内没有探测到主服务器,认为主服务宕机并接管虚拟IP,但同时继续不断发送心跳信号探测主服务器;从服务器上的Nginx提供外部访问端口,并将任务分配给本机的 Tomcat(主服务器已经宕机),Tomcat访问本机Mysql数据库并向外提供Web服务。从服务上的脚本不断监控着各个软件的工作情况。
3)主服务器恢复正常的工作流程
主服务器开机后,各种软件相继启动,从服务器探测到主服务器,将虚拟IP交还给主服务器,并继续不断发送心跳信息;Nginx提供Web服务器的公共访问端口,Nginx将访问任务通过Tomcat的访问地址,分配给主从服务器上的Tomcat;Tomcat根据本机上的Mysql数据库内容,对外提供Web服务;同时,两台机器上的Mysql数据库实时互备,实现数据同步;监控脚本不断检测各个软件的工作状态,监控脚本的工作流程如图5所示。
4)正在运行的服务软件异常时工作流程
根据监控脚本的工作流程可知,Heartbeat和Tomcat出现异常时,直接重启服务。若Mysql或Nginx出现异常时,首先关闭依赖其才能提供服务的Heartbeat或Tomcat,然后重启Mysql或Nginx。若恢复正常,则开启Heartbeat和Tomcat;若依然存在故障,则不启动,并将错误写入日志。上述过程中若主服务器上的Heartbeat关闭或异常,则由从服务器接管虚拟IP;若两台服务器中出现Tomcat关闭,则正在服务Nginx不会分配给其任务,由另一台Tomcat提供服务。
以平均无故障工作时间(MTTF)和平均修复时间(MTTR)来度量单机系统和双机热备系统的可用性,计算公式为,实际测试结果如表2所示。
表2 单机系统和双机热备系统的比较Tab.2 Comparison of single system and dual-server hotstandby system
如表2所示,双机热备可以非常有效的降低系统故障率,提高系统可用性。
本策略管理系统通过Heartbeat软件实现了双机热备机制,而Keepalived软件也可实现此功能。Heartbeat还向外提供了虚拟IP,负载均衡需要通过这个虚拟IP将访问任务下发到后面的服务器集群。Nginx的作用就是将访问任务平均分派给后面的服务器,本系统采用2台Tomcat服务器实现负载均衡。Mysql可以通过简单的配置来实现双机数据互备的目标。
本系统的双机热备评价指标主要有以下3点:
1)虚拟IP的切换速度:本技术应能在主服务器出现异常时,快速将业务切换到从服务器上,切换的时间应该是在稳定的前提下越短越好。
2)对于服务访问的中断时间:虽然说双机热备技术可以提供不间断的服务,但是对于切换时的短时间服务中断还是难以避免的,所以应将服务中断时间控制的越短越好。
经实测,以上两项时间和可控制在200 s以内。
3)系统可用性:双机热备技术应能有效提升系统的可靠性,检测结果显示,系统可用性由97.342﹪提升至99.996﹪。
[1]覃庆努,魏学业,于蓉蓉,等.基于双机联合故障检测的双机热备系统可靠性和安全性研究 [J].系统工程与电子技术,2011(12):2776-2780.QIN Qing-nu,WEI Xue-ye,YU Rong-rong,et al.Reliability and security study of dual computer hot-standby system based on dual computer joint fault detection[J].Systems Engineering and Electronics,2011(12):2776-2780.
[2]Nate Silver.The Signal and the Noise[M].New York:Penguin Press,2012.
[3]百度百科.负载均衡 [EB/OL].[2014-10-20].http://baike.baidu.com/view/51184.htm.
[4]百度百科.SDN[EB/OL].[2014-10-20].http://baike.baidu.com/view/1311159.htm?fr=aladdin.
[5]Nick McKeown.OpenFlow:Enabling Innovation in Campus Networks[J].Sigcomm,2008:69-74.
[6]百度百科.Keepalived[EB/OL].[2014-10-20].http://baike.baidu.com/view/4175422.htm?fr=aladdin.
[7]百度百科.Heartbeat集群配置 [EB/OL].[2014-10-20].http://wenku.baidu.com/linkurl=3ikoxX7G42UjIPjWRjmEBz4H_bts faYvsmBlkoUJjtaVFFJMBXjqa7LA0iwnUlYcYcWSsSXBr3UP ikL3rVEf-SAM2vW-Fm6DEsrqJp6mlLvny.
[8]Nginx官网.Nginx[EB/OL].[2014-10-10].http://wiki.nginx.org/.
Design and implementation of dual-server hot-standby and loading-balancing scheme
XIAO Jia1,WANG Gu-cheng2,YANG Xu3,CHAO Yong1
(1.China Information Technology Coporation,LTD.,Beijing 100022,China;2.Guangdong Province Overseas Liaison Office, Guangzhou 510080,China;3.Tencent Technology Coporation,LTD.,Beijing 100080,China)
Aiming at policy management module belonging to Open-Flow SDN system,this paper presents a new scheme of dual-server hot-standby and loading-balancing.The approach of server cluster is adopted.The dual-server hot-standby module is realized byKeepalived and Heartbeat.The proxy server and load-balancing module is achieved by Nginx.Failure probability is reduced effectively proved by engineering implementation and the feasibility of this systemis improved from 97﹪to nearly 100﹪.
SDN;policy management;dual-server hot-standby;loading-balancing
TN91
:A
:1674-6236(2015)18-0176-04
2014-11-29稿件编号:201411249
肖 佳 (1983—),男,安徽芜湖人,博士研究生,工程师。研究方向:数据挖据、复杂网络和信息安全。