关于TCP迁移的集群实现方案

2013-11-21 10:38:02王晓红
关键词:后台报文前置

王晓红

(山西工程职业技术学院,山西 太原030009)

随着当前信息高速公路的发展,越来越多的网络Web系统走入人们的视线.人们对系统性能要求也越来越高,单靠提高服务器单机的物理性能,已经很难满足人们的需要.提高系统的整体性能和吞吐量,已经迫在眉睫.集群技术正是在这个时候,以其高的性价比和良好的扩展性,成为人们追逐的目标.利用多台单机性能一般的主机,组建一个高性能运算整体,大大提高系统性能,这是一个具有创造力的想法.

当前服务器集群通常是指通过高性能的LAN或WAN网络(同构的或异构的)相互联结而成的一种服务器体系结构.它由一台前置机(即调度器,简称FE)和若干后台真实服务器(简称BE)构成,与分布式系统不同,每个BE服务器,都是一个独立的处理单元,且具有相同的业务处理能力.整个集群对于使用方来说,就像是一台超级计算机,而且该计算机还能在客户需要的时候,动态地提高整体性能;当客户需要访问集群时,只需要访问集群对外暴露的虚拟IP地址(即直接访问前置机),就能达到访问集群的目的.当客户的请求到达FE,FE通过采用负载均衡等策略将收到的请求分配给集群中某台服务器,服务器在业务处理完毕以后,直接把结果又返回给前置机,由前置机把处理结果返回给客户,这是一个通常意义的集群的传统做法.

1 TCP协议迁移集群实现技术

当前服务器集群实现技术,实际上是指集群调度技术,这里并不是指调度算法.而是对于连接请求的处理方法:基于DNS的解析技术,基于客户端技术,基于IP层的调度技术,基于请求内容的调度技术,基于TCP迁移技术[1].

当前TCP协议迁移技术主要有3种:第一,基于Netfilter的TCP协议迁移方法.该方法是基于Linux内核的,是一个集抓取、截获和分析网络数据包为一体的编程框架,通过该框架,可以很容易地修改报文字段.基于该框架的TCP迁移方法有很多,但是最多是利用IP隧道进行协议迁移,即在客户与前端服务器完成3次握手以后,再通过隧道方式,在后台服务器再次建立一个3次握手环境,从而实现TCP协议的迁移.但是基于隧道的迁移技术都有一个致命的缺陷,那就是性能.对于客户而言,建立1次连接,这种类型的集群,却需要建立至少3次的连接,这还是没有考虑应用性能和IP隧道建立开销的情况下[2].第二,基于连接修改和传递技术的TCP迁移方法[3].该技术同样是在客户与前置机完成3次握手以后,再与后台服务器迁移进程完成新的连接,利用与后台服务器的连接传递迁移的数据结构,最后在后台服务器上创建新的握手成功的数据结构.该方法同样是性能问题.第三,基于重构连接现场的TCP迁移方法,该方法是“一步到位”建立连接现场.整个迁移过程,FE和BE之间只有1次报文交换,通讯量极小,效率很高,但是该种原始的迁移技术,仅仅是针对HTTP请求,即仅仅能够利用在Web服务器集群当中.本文提出的新型TCP迁移技术,也是归属于这种技术,通过极小的信息开销,在后台服务器端重建连接现场,完成TCP协议的迁移.

3 新型TCP迁移技术

TCP迁移技术的主要思想是通过对TCP/IP协议,甚至链路层协议的修改,使客户端和服务器端已经建立的连接发生迁移,导致请求的路径不变,回复的来源地址发生了变化.由于考虑到并不是所有的连接请求都需要迁移,和集群调度算法的需要,新型TCP迁移技术仅仅对TCP协议进行扩充,兼容标准TCP协议,可以根据集群或应用层面的需求,来决定是否迁移,以及迁移目标地址.这样,系统实现时,只需要在集群的所有服务器中安装修改后的TCP/IP协议包——新型的TCP扩充协议包,建立相应的 Web或其他应用系统,即就可以完成整体性能提升,这些对于客户都是透明的,客户端软件仅仅需要安装标准的TCP/IP协议即可.新型TCP扩充协议包主要是对TCP连接的3次握手和4次中断进行了扩充,增加了SYNHANDOFF报文和ASK-HANDOFF报文,以及FIN-HANDOFF报文.

标准的TCP连接3次握手原理如下:

1)请求端(通常称为客户),根据目标指定的IP和端口,发送SYN报文.报文中比较重要的字段是初始序号.2)服务器端在收到SYN报文后,向客户端发送ASK报文,报文中,确认SYN的初始化序号,并带有自己的初始化序号.3)客户端在收到服务器端的ASK报文后,回复ASK报文,进行确认,完成3次握手[4].

修改后的集群涉及的TCP连接的3次握手原理如下:

1)客户端向前置机发送SYN报文以后,前置机根据端口号或应用需求确认是否产生是否迁移,如果需要发生迁移,则立即向后台真实服务器发送SYN-HANDOFF报文,该报文实际上是除标准的SYN报文之外,增加了客户端向前置机发送SYN的信息字段.2)真实服务器在收到SYN-HANDOFF请求后,除了建立相应的标准连接以外,再根据信息构建连接迁移的结构,即所谓的重构连接现场,最后利用标准ASK报文进行回复.3)前置机收到真实服务器的标准ASK报文以后,同样按照标准ASK报文对客户进行回复,另外还需要构建该迁移连接的上下文环境.4)客户端收到标准ASK报文以后,最后发送标准ASK报文给前置机,完成连接的3次握手,成功创建连接.5)前置机在收到3次握手的确认以后,根据迁移环境,决定是否进行迁移行为.发送ASK-HANDOFF报文,该协议仅仅在标准的ASK协议之外,添加了客户端的ASK的信息字段.6)真实服务器在收到ASK-HANDOFF报文以后,完成与前置机的3次握手,并完成协议的迁移工作.

标准的TCP连接4次中断原理:客户端发送FIN报文到服务器,服务器收到FIN报文以后,发送FIN的ASK报文给客户端,客户即可完成单方面的连接中断.

修改后的集群4次中断原理:1)客户端发送标准FIN报文到前置机,前置机收到FIN报文以后,根据连接的上下文环境,发送FASK-HANDOFF报文到后台真实服务器[5],如图1所示.2)后台真实服务器收到该报文后,即可清除“虚拟的”迁移环境,并回复标准的ASK报文到前置机.3)后续连接中断报文与标准协议一致,就不再赘述了.

图1 协议迁移图

3 系统实现

本方案的实现方式分为两大部分,前置机和后台真实服务器.前置机与后台真实服务器,在centos6.0的基础上,卸载了标准TCP协议模块,安装了扩充的TCP协议模块.这样,即可兼容TCP标准协议,又可对标准协议进行了补充,不影响系统正常工作.另外,前置机上还安装了应用层面的软件模块,以辅助进行TCP协议迁移.前置机主要包括四部分:系统管理、资源收集、调度模块、迁移模块.4个模块相辅相成,能够更好地提高集群的性能.信息模块,主要对外提供统一、安全的管理接口,因为并不是所有的连接请求或数据请求,都需要进行TCP迁移,必须按照一定的管理或配置策略进行协议迁移,只有这样才能最大程度上发挥集群的作用,最大限度上提高集群的性能,最小限度地不影响系统其他正常的工作.比如,有那些物理设备是真实服务器,是为了准备协议迁移的;哪些连接是完全没有必要迁移的;服务器调度算法是怎样的?迁移日志保存情况如何?在什么情况下,才进行数据迁移.虽然迁移的代价已经大大减少,但是毕竟要多一部分的性能消耗,因此在访问量比较小或载荷不高的情况,完全没有必要进行协议迁移,如果强制性地进行迁移,反而会降低整体性能.这些问题都是需要通过系统对外暴露API或管理界面进行配置.资源收集模块,该模块主要是负责及时主动或被动获取或接收真实服务器所反馈的每台机子当前运行的资源信息状况,为调度模块计算数据,提供强大的计算依据.调度模块,主要是依据资源收集模块提供的当前所有真实服务器的运行状况和网络状况,进行调度策略计算,得出结果.迁移模块,主要根据扩充的TCP协议进行协议迁移,或称之为真实服务器上的协议重构.真实服务器上除了安装扩充的TCP协议模块以外,还安装了资源共享模块,用于前置机了解每台真实服务器的物理机子运行状态,例如:CPU占用率、内存占用量、某个进程线程运行数量等等.

系统整个运行流程是怎样的?首先连接请求来源于互联网,通过路由器,发送给集群前置机,当前的前置机已经通过系统管理对迁移进行了系统配置,比如:假设集群服务器的端口在80端口,可以配置,前置机的CPU占用率超过30%以后,通过80端口建立的所有连接都进行协议迁移,否则,仅仅进行基于IP层面上的调度,即NAT转换技术.另外在发起TCP迁移之前,系统还要根据得到的信息,进行调度,确定迁移的地址.在客户完成3次握手之后,相应的某台真实服务器上会建立“虚拟连接终端”,当具体应用请求到路由器之后,则又由路由器转发给前置机,前置机根据3次握手建立的上下文环境,确定转发的目标,真实服务器收到该请求以后,完成业务处理,并利用本机建立的“虚拟连接终端”,回复路由器数据,从而完成整个数据接收和回复过程,在应用数据的回复过程中,没有前置机的参与,减少了前置机的开销.

4 性能测试和结果分析

* 硬件配置:

前置机1台,真实服务器2台,均采用

CPU:AMD Athlon(tm)64X2Dual Core Processor5400+ CPU

内存:2G内存

* 软件配置:

Centos6.0系统

* 网络架构:

将3台电脑(1台前置机,2台真实服务器)后台真实服务器构建成为一个局域网,并通过路由器与客户端相连.

客户端IP地址:192.168.10.1

前置机IP地址:192.168.20.129,

真实服务器1IP地址:192.168.20.159

真实服务器2IP地址:192.168.20.189

* 测试方法和结果分析:

编写TCP客户端,进行多线程测试.每个线程执行逻辑为:首先发起连接,然后发送1次固定长度数据,再接收固定长度数据,最后中断连接.通过在迁移和不迁移的2种情况下横向测试比较,发现在线程并发数超过45的情况下,迁移以后的系统性能优于不迁移的系统,即迁移后系统一个线程完成一次测试逻辑的平均时间要小于不迁移系统.但是在测试线程数少于45的情况下,不进行协议迁移系统占优.结果证明,TCP协议迁移在服务器任务繁重的情况下,可以大大提高服务器性能和吞吐量,但在任务轻松的情况下,反应不好,估计是由于系统管理等应用级别的模块存在,降低了系统性能,另外迁移产生的额外开销也是问题的原因之一.另外,也证明了论文中提及的一个观点,TCP协议迁移无论怎样减少迁移开销,都会产生一定的负载.随着实际运行环境中,连接频繁增加和中断,这种开销也会逐渐增加,当后台真实服务器将真实数据直接回复给路由器时,带来的性能提升大于协议迁移带来的性能开销时,这种迁移开销才能带来真正的价值,否则,TCP迁移只能是服务器新的负担.针对这种情况,系统设计了系统管理模块,该模块可以设定迁移的策略,从而减少迁移成为负担的现象.但是此次测试,本系统的调度算法仅仅是根据主机CPU占用率来进行调度,无法真实反映某个进程的执行情况,更无法充分发挥2种技术共存的系统中,迁移和不迁移2种集群技术的优势,还有待于下一步改进.另外,由于调度算法的依据来源于后台真实数据服务器的反馈,因此有一定的延迟,如果出现爆发性的数据请求,后台真实服务器很可能出现忙和闲的2种状况.因此在TCP迁移解决前置机的性能瓶颈之外,还可以对真实服务器正在处理的任务,或尚未处理的任务,进行任务迁移,要求其他闲机子进行协助运算.

5 结束语

本文详细描述了基于TCP迁移技术的多种集群实现方案,在进行分析后,提出了基于新型TCP迁移方法的集群实现方案,并通过测试证明,该方案是TCP迁移和不迁移技术的最佳结合,能够使集群无论在那种环境下,都能够发挥最大的性能.

[1]杨 兵,黄遵国,胡光明.基于高可用性的动态漂移技术研究[J],计算机工程与科学,2004,26(3):4-6

[2]Pai V,Arom M,Banga G,et al.Locality 2aware request distribution in cluster 2based network server[A].Proc of the 8th Int’lConf on architectural support for programming languages and operating systems[C].1998:205-216

[3]X Zhang,M Barrientos,J Chen,et al.HACC:An architecturefor cluster 2based web servers[A].Proc of the 3rd USENIX Windows NT Symp[C].1999

[4]R S Engelschall.Load balancing your web site[J].WEB Techniques Magazines,1998,3(5):48-50

猜你喜欢
后台报文前置
基于J1939 协议多包报文的时序研究及应用
汽车电器(2022年9期)2022-11-07 02:16:24
被诊断为前置胎盘,我该怎么办
前置性学习单:让学习真实发生
教书育人(2020年11期)2020-11-26 06:00:32
CTCS-2级报文数据管理需求分析和实现
国企党委前置研究的“四个界面”
当代陕西(2020年13期)2020-08-24 08:22:02
浅析反驳类报文要点
中国外汇(2019年11期)2019-08-27 02:06:30
被诊断为前置胎盘,我该怎么办
后台暗恋
前台、后台精彩花絮停不了
风采童装(2016年2期)2016-08-02 09:18:38
ATS与列车通信报文分析