ADX_应用交付技术白皮书

DPtech ADX应用交付平台

技术白皮书

杭州迪普科技有限公司

2013年10月

目录

1.概述 (3)

2.面向服务的应用交付技术 (3)

2.1.基本概念 (4)

2.2.调度算法 (5)

2.3.会话保持 (7)

2.4.应用内容调度 (9)

2.4.1.HTTP应用内容调度 (10)

2.4.2.基于UDP协议的应用内容调度 (11)

2.5.应用健康检查与服务器维护 (12)

2.5.1.应用健康检查 (12)

2.5.2.软关机和温暖上线 (12)

2.6.HTTP服务高级交付技术 (13)

2.6.1.HTTP重定向 (13)

2.6.2.HTTP内容重写 (13)

2.6.3.HTTP连接复用 (14)

2.6.4.SSL加速 (14)

2.7.浮动长连接 (18)

2.8.虚拟机管理系统关联 (19)

2.9.ADL应用交付脚本语言 (19)

2.10.典型组网 (20)

3.面向流量管理和优化的应用交付技术 (23)

3.1.基本概念 (23)

3.2.基于链路流量阈值的调度 (24)

3.3.基于链路质量/状态的调度 (24)

3.4.基于静态和动态就近性的调度 (25)

3.5.基于域名的调度 (25)

3.6.基于应用协议的调度(ABR) (26)

3.7.基于智能DNS的调度 (27)

3.7.1.DNS静态就近性匹配 (28)

3.7.2.DNS透明代理 (29)

3.8.广域异地出口链路负载均衡 (29)

3.9.典型组网 (31)

4.面向广域网的全局应用交付技术 (32)

4.1.基本原理 (32)

4.2.全局调度算法 (33)

4.3.基于DNS的调度技术 (33)

4.4.基于HTTP的调度技术 (34)

4.5.基于IP-anycast的调度技术 (34)

5.高可靠安全性 (35)

5.1.HA部署方式 (35)

5.2.VSM虚拟交换矩阵技术 (36)

5.3.硬件级高可靠性 (36)

1.概述

随着基于多种平台的网络应用服务高速发展,传统的服务器负载均衡理念和基于普通路由的流量处理方式已经渐渐无法跟上时代发展的脚步,使得用户对使用应用交付技术也提出了越来越高的要求。

迪普科技DPtech ADX3000应用交付平台(简称:应用交付设备)消除了网络和应用之间的割裂,满足了用户规模不断扩大和对应用服务提出的更高要求,使用户的访问速度、访问安全以及7×24不间断的稳定性得到提高,并大大降低运营成本。ADX3000应用交付设备具有处理能力强、应用交付能力全面、接口密度丰富等优点,可应用于各行业和运营商的数据中心、网络出口,具有提高服务可靠性和响应速度、方便业务灵活扩展等价值。

2.面向服务的应用交付技术

服务器应用交付技术由应用负载均衡、应用健康检查、应用内容调度、应用交付优化、自由应用交付定制以及服务器弹性维护等多种技术组成,合理运用这些服务器应用交付技术可以大幅度提升应用交付性能和质量,降低人工维护和故障处理成本。

2.1.基本概念

●虚服务

应用交付设备对外提供的应用服务称为虚服务,虚服务配置在应用交付设备上,通过IP地址、协议、端口号唯一标识。客户的访问请求通过网络到达应用交付设备,依据这些标识匹配到虚服务后,由应用交付设备按照配置好的交付策略分发给真实服务。

●真实服务

真实服务由IP地址和端口号唯一标识,其中端口号可以与虚服务的不同。多个真实服务可以在一台物理服务器上,也可以在多台物理服务器上。客户端的请求在分发至真实服务时,应用交付设备会将请求的目的IP地址和目的端口修改为真实服务的IP地址和端口。

●真实服务组

真实服务组是多个真实服务的集合,虚服务会通过所引用的真实服务组来确定可以调度的真实服务的范围以及所使用的调度算法。

●调度算法

客户请求命中虚服务后,虚服务依据配置好的算法,如轮询、最小连接等,从可用的真实服务组中选出一个真实服务,将客户请求分发给该真实服务。

●会话保持

请求连接之间会存在相互关联的关系,比如某客户发起的所有新建连接请求通过某个标识进行关联,如果将这些请求分发至不同的真实服务,则会造成业务失败。因此,通过某个标识将不同的新建连接请求关联起来并发送给同一个真实

服务的过程就是会话保持。

●应用内容调度

应用交付设备可以对应用客户端发出的请求内容进行识别和策略匹配,然后将命中策略的请求分发至指定实服务组上,而不是通过调度算法来选择,这个过程就叫做应用内容调度。

●应用健康检查

应用健康检查功能是指应用交付设备对真实服务是否能够提供服务进行主动探测,依据不同的探测方法可以探测出真实服务是否可以正常提供服务。如果真实服务出现故障,则应用交付设备不会再将新的请求发送到这个出现故障的真实服务上。

2.2.调度算法

应用交付设备提供多种实用高效的调度算法,用户可以综合考虑具体应用服务以及物理服务器的性能来选择最佳的调度算法,从而合理分担各个物理服务器的压力,提高物理服务器的有效利用率。

●轮询

应用交付设备依次将请求分发到真实服务组内的每个真实服务上,各个真实服务平均分担用户的连接请求。适用于每个应用请求对服务器的处理压力近似,(如普通HTTP、Radius、DNS)且各真实服务的性能差距不大的情况。

●加权轮询

应用交付设备按照权值大小,将请求分发到真实服务组内的每个真实服务上,权值大的真实服务分配较多请求,权值小的真实服务分配较少请求。适用于每个应用请求对服务器的处理压力近似,且各真实服务的性能有较大差距的情况。

●最小连接

应用交付设备依据当前各真实服务的连接数来估计真实服务的负载情况,把新的连接分配给当前连接数最小的真实服务。适用于每个应用请求对服务器的处理压力和处理时间要求不同(时间长的连接会造成较大的处理压力),如FTP、TELNET等,且各真实服务的性能差距不大的情况。

●加权最小连接

应用交付设备调度新建连接时尽可能使真实服务的已建立连接数和所配置的权值成比例,其中权值和服务器处理性能相关。适用于每个应用请求对服务器的处理压力和处理时间要求不同(时间长的连接会造成较大的处理压力),如FTP、TELNET等,且各真实服务的性能差距不大的情况。

●源地址哈希散列

应用交付设备将客户发起请求的源IP地址做哈希散列,并依据结果映射到一台真实服务。适用于同一源IP地址发起的请求必须调度到相同真实服务的情况,多用于应用本身对请求的源IP地址有要求的环境。

●源地址源端口哈希散列

应用交付设备将客户发起请求的源IP地址和源端口做哈希散列,并依据结果映射到一台真实服务。适用于同一源IP地址和源端口发起的请求必须要调度到相同真实服务的情况,多用于应用本身对请求的源IP地址和源端口有要求的

环境。

●最小流量

应用交付设备根据当前各真实服务的流量来估计真实服务的负载情况,把新的连接分配给流量最小的服务器。适用于每个应用请求应对服务器的处理压力与该连接所产生流量大小成正比,且处理时间不同(如视频类服务等)且各真实服务的性能差距不大的情况。

●加权最佳性能

应用交付设备通过SNMP或者第三方插件等形式获取真实服务的性能数据,如CPU使用率、内存剩余等信息,调度新建连接时尽可能使真实服务的连接数和真实服务的性能权值成比例。适用于应用的业务情况非常复杂,每个请求对真实服务的处理压力和连接时间无特定规律可言,且各真实服务的性能差距也较大的情况。

●最小响应时间

应用交付设备依据当前各真实服务器的响应时间来估计真实服务的负载情况,把新的请求调度给响应时间最小的真实服务。适用于应用的业务情况非常复杂,每个请求对真实服务的处理压力较大其连接时间较长,但各真实服务的性能差距不大的情况。

2.3.会话保持

在实际网络应用场景中,会话保持技术至关重要,大部分网络应用所发起的连接都存在关联关系,如何准确、高效的处理这里关联关系就是会话保持技术要

解决的问题。

●IP地址会话保持

基于源IP地址的会话保持功能常用于标准服务器负载均衡应用中,用以确保同一个客户端的多个请求能分配到同一个真实服务器上。应用交付设备接收到客户端的首次请求时,建立源IP地址会话保持表项,记录为该源IP分配的真实服务,在会话保持表项生存周期内,后续相同源IP地址的业务报文都将发往该真实服务处理。

基于目的IP地址的会话保持功能常用于针对缓存服务器的负载均衡应用中,用以确保去往同一个目的IP地址的请求能分配到同一真实服务,从而提高缓存服务器的缓存命中率。应用交付设备接收到客户端的首次请求时,建立目的IP 地址会话保持表项,记录为该目的IP地址分配的真实服务,在会话保持表项生存周期内,后续相同目的IP地址的业务报文都将发往该真实服务处理。

●Radius服务的属性会话保持

基于Radius的会话保持功能常用于针对Radius服务器的负载均衡应用中,用以确保Radius报文中特定属性具有相同值的报文能分配到同一真实服务,从而保证Radius服务能够正确均衡执行。

例如针对用户名的Radius会话保持:应用交付设备接收到Radius客户端的登录请求时,建立Radius报文中的用户名会话保持表项,记录为该用户名分配的真实服务,在会话保持表项生存周期内,后续相同用户名的其他Radius请求都将发往该真实服务处理。

●HTTP服务的header会话保持

基于HTTP header 的会话保持功能常用于针对HTTP服务器的负载均衡应

用中,用以确保HTTP报文中特定header属性具有相同值的报文能分配到同一真实服务,从而保证HTTP服务能够正确均衡执行。

例如针对HTTP header URI属性的会话保持:应用交付设备接收到客户的HTTP请求时,依据HTTP header URI属性建立话保持表项,记录为该属性值分配的真实服务,在会话保持表项生存周期内,后续相同HTTP header URI请求都将发往该真实服务处理。

HTTP服务的cookie 会话保持

基于HTTP cookie的会话保持功能常用于针对HTTP服务器的负载均衡应用中,用以确保客户的所有请求能够分配到同一真实服务,从而保证HTTP服务能够正确均衡执行。

例如针对HTTP cookie的会话保持:应用交付设备接收到客户的HTTP请求时,依据调度算法为其分配一个真实服务,当服务器响应这个请求时,应用交付设备会在该响应报文中插入自有cookie,其中包含该客户端所分配实服务的信息,当客户端再发起其他请求时,请求报文中会携带该cookie,应用交付设备会依据该cookie所携带的信息将请求分配至对应的真实服务上。

2.4.应用内容调度

应用交付设备可以对应用内容进行识别和匹配,并依据匹配策略将符合条件的请求分发至指定服务器,从而可以满足日益复杂的服务端架构,增加服务端的业务可扩展性。

2.4.1.HTTP应用内容调度

随着HTTP应用服务的高速发展,HTTP应用服务端的构架也日新月异,越来越多的需要应用交付设备可以依据HTTP头部中的属性,如URI、cookie、HOST等,通过匹配策略将符合条件的请求调度到对应的服务器上,从而满足复杂架构下的多业务协同处理和负载均衡要求。

例如,针对HTTP头部URI属性的内容调度。应用交付设备首先与客户端完成TCP三次握手,当客户发出HTTP请求后,应用交付设备对该请求的内容策略匹配,例如已经有一条策略“URI中包含SPORTS的调度到服务器A”。

如下图所示,三次握手后,客户端通过HTTP请求/SPORTS/index.htm这个页面。客户端的HTTP请求命中了应用交付的调度策略,然后应用交付设备依据策略与服务器A完成三次握手,再将客户端的HTTP请求发送给服务器,随后应用交付设备再将服务器回复的内容转交给客户端,相当于完成了一个有选择的HTTP代理过程。

1. TCP 握手

SYN

4. HTTP 请求

GET /SPORTS/index.htm

2. TCP 握手 SYN/ACK

3. TCP 握手 ACK

5. TCP 握手 SYN

6. TCP 握手 SYN/ACK

7. TCP 握手 ACK

对HTTP 请求内容进行匹配调度

8. HTTP 请求 GET /SPORTS/index.htm

9. HTTP 回复内容

10. HTTP 回复内容

客户端应用交付服务器

图1 基于HTTP 的应用内容调度

2.4.2. 基于UDP 协议的应用内容调度

基于UDP 协议的应用内容调度功能常用于DNS 、Radius 、以及各种私有应用协议的部署环境中,用以确保客户端的请求内容中包含某个或多个关键字的请求能够分配到同一真实服务组,从而保证整体基于UDP 协议的应用服务能够正确均衡执行。

例如针对DNS 请求的UDP 内容调度:应用交付设备接收到客户的DNS 请求时,首先对该请求的内容进行关键字匹配,如果包含配置好的关键字,则依据配置从该关键字指定的真实服务组中选出一个真实服务,然后将DNS 请求转发

给此真实服务。

特别要注意的是,针对UDP的内容调度是逐包的。

2.5.应用健康检查与服务器维护

丰富实用的应用健康检查技术可以从多个维度确保应用交付的质量,可靠先进的服务器维护技术则可以让应用系统中需要维护的服务器平滑切入切出,终端用户不会有任何感知。

2.5.1.应用健康检查

应用交付设备支持多种应用健康检查功能,包括TCP、HTTP、ICMP、DNS、SNMP、UDP、SMTP、POP3、SSL、RADIUS和自定义等。

针对同一台服务器可以同时配置多种健康检查,如可以同时将ICMP、TCP、HTTP这三个健康检查配置在一个真实服务上,从而可以对服务器从网络到操作系统直至应用业务层面进行全方位的检查,任意一个层面出现故障后,应用交付设备便不再会将客户请求发送至这台故障服务器,并发出告警。当故障服务器修复后,健康检查可以自动发现,再将新的请求发送至这台服务器。

2.5.2.软关机和温暖上线

当应用交付设备上的真实服务配置了软关机后,已经存在的连接保持不变,但只有命中会话保持的新建连接会继续调度至该真实服务,其他新建连接不会再

调度至这个真实服务。也就是说,应用交付设备只会将已经完成所有业务的客户端从该真实服务切出,而且将新的客户端请求不再调度至这个真实服务,保证服务器可以温暖平滑的切出交付系统。

当应用交付设备上的真实服务配置了温暖上线后,在这个真实服务被认为可以正常提供服务后(例如重新加入真实服务组、由故障状态恢复到正常、关闭软关机等等)的一定时间内,应用交付设备会控制分发至这个真实服务的请求速率,使得到这个真实服务的请求速率从零逐渐恢复至无限制,保证服务器可以温暖平滑的切入交付系统,避免一段时间内的大量请求对服务器造成过大压力。

2.6.HTTP服务高级交付技术

应用交付设备针对HTTP服务支持多项高级功能。

2.6.1.HTTP重定向

应用交付设备接收到客户的HTTP请求时,首先与客户完成TCP三次握手,当客户发出HTTP GET请求后,对请求的内容进行策略匹配,如果命中关键的话,则直接对客户端回复重定向地址,不再将请求转发给真实服务。

2.6.2.HTTP内容重写

应用交付设备接收到客户的HTTP请求或者收到真实服务的回复时,对请求的内容或者回复的内容进行策略匹配,如果命中关键的话,则依据策略将对应内

容修改。

例如,针对虚服务端口的HTTP内容修改:服务器回复的HTTP内容中,有些重定向信息可能包含端口(例如8080端口),这个端口很有可能不是虚服务的端口(例如80端口),而是真实服务的端口,当客户依据这个端口(8080端口)进行访问的时候会出现无法命中虚服务的情况,因此需要将这个端口修改为虚服务开放的端口(80端口)。

2.6.

3.HTTP连接复用

HTTP 1.1 协议支持在同一会话中发送多次GET请求,从而达到提高Web 服务器的性能,因此,利用这个特点,当多个客户的请求发送到应用交付设备时,首先与每个客户建立TCP三次握手,然后依据配置的比例与服务器端建立TCP 三次握手(数量小于客户端请求数量)。当客户端发出HTTP GET请求后,应用交付设备将这些请求逐个通过已建立好的连接发送给真实服务,从而达到连接复用减轻服务器压力的目的。

2.6.4.SSL加速

应用交付设备支持SSL加速功能,此功能会利用应用交付设备代替服务器与客户端做复杂的SSL握手以及加解密运算,再将解密后的客户请求发送给服务器,最后将服务器发送过来的内容加密发送给客户,从而大大减轻服务器的实际运算压力。

SSL加速的几个常用场景如下所述:

SSL卸载

客户端使用HTTPS协议进行安全交互,首先由应用交付设备跟客户端进行TCP握手,然后进行SSL密钥交换与SSL握手,之后客户端把加密的请求数据发到设备。其次,设备对请求数据进行解密,根据解密后的明文进行负载均衡调度,分配真实服务,设备根据调度结果去连接服务器。最后,设备与服务器TCP 握手成功后将明文数据发给服务器,当服务器的响应数据再发送会设备时,设备会对其进行加密然后在发给客户端。

图2 SSL卸载功能示意图

SSL代理

客户端使用HTTPS协议进行安全交互,首先由应用交付设备跟客户端进行TCP握手,然后进行SSL密钥交换与SSL握手,之后客户端把加密的请求报文发到设备。设备对请求数据进行解密,根据解密后的明文进行负载均衡调度,分配真实服务,设备根据调度结果去连接服务器。设备与服务器TCP握手成功后,会使用新的加密套件与服务器进行SSL握手,握手成功后使用新的加密套件对明文数据进行加密并发给服务器。设备收到服务器的响应数据后使用对应的加密套件进行解密,得到明文后再使用与客户端交互的加密套件进行加密后发给客户端。

图3 SSL代理功能示意图

多数情况下应用交付设备与服务器交互的网络处于内网,相对比较安全,会直接使用明文交互。但对于有些安全级别要求比较高的地方,不能使用明文传输但是又想降低服务器压力,就可以采用这种方式使客户端与设备之间的交互使用安全级别高的加密套件,而应用交付设备与服务器之间使用安全级别相对比较低的加密套件进行加密。

2.7.浮动长连接

对于某些应用,连接可能会在持续较长时间,或者在较长的时间内没有进行交互。当服务器进行维护或者添加新的服务器后,容易出现客户端无法得到通知或者新加入的服务器无法获得请求的情况。

应用交付设备支持浮动长连接功能,当服务器进行维护时,应用交付设备会替代服务器与客户端终止连接,保证客户端能够得到正常的响应,便于客户端重新发起请求。当新加入服务器时,应用产品会依据当前的各个服务器的负载和调度算法,主动中断一些客户端的连接,当客户端的请求再次发送过来时,可以将这些请求分发至新加入的服务器上。

图4 浮动长连接功能示意图

2.8.虚拟机管理系统关联

应用交付设备可以与主流的虚拟机管理系统关联,例如当虚拟机管理系统关闭或者开启虚拟机时,应用交付设备会自动删除或者添加对应的真实服务。当应用交付设备通过各种健康检查发现真实服务无法正常提供服务时,可以通知虚拟机管理系统将对应的虚拟机进行重启或者关闭等动作。当应用交付设备发现整体的业务压力过低或者过高时,可以智能计算并通知虚拟机管理系统关闭或开启虚拟机,来将整个业务资源自动控制在一个合理的范围内。通过应用交付设备与虚拟机管理系统的紧密关联,可以很大程度上避免人工干预,且最大幅度的高效利用服务资源。

2.9.ADL应用交付脚本语言

由于应用交付业务经常需要针对业务进行深度定制以及复杂处理,静态的策略配置方式常常无法满足灵活的应用交付需求,因此应用交付设备支持通过先进的ADL(Application Delivery Language)应用交付脚本语言实现高自由度的应用交付业务处理。

相关主题
相关文档
最新文档