应用交换技术的负载均衡算法
应用交换技术里主要包括四项关键的技术:
l截获和检查流量
l服务器监控健康检查
l负载均衡算法
l会话保持
截获和检查流量保证只有合适的数据包才能通过;
服务器监控和健康检查随时了解服务器群的可用性状态;
负载均衡和应用交换功能通过各种策略导向到合适的服务器;
会话的保持以实现与应用系统完美结合;
F5在应用交换技术中的优势:
A、截获和检查流量
�CBIG-IP 有最强的数据包截获和检查引擎去检查任何数据流量包中的任何部分,可以检测16384bytes包的深度,理论上可以检测64Kbytes的包长度
�C这使得BIG-IP 明显有别于其他的厂商的产品
B、用于定制控制的iRules工具
�C可用来定义如何根据报头和/或TCP有效负载信息来引导、保存和过滤流量。
�CiRules增强了企业或服务提供商定根据业务需求定制应用流量的能力。
�C通用检查引擎和iRules分别是应用智能和业务决策来进行应用流量管理的方法和工具。
C、服务器监控和健康检查
�C服务器(Node)-Ping(ICMP)
�C服务(Port)-Connect
�C扩展的应用验证(EAV)
�C扩展的内容验证(ECV)
�C针对VOD服务器的专用健康检查机制
�C针对节点的检查频率和超时频度,e.g.10seconds响应,e.g.5seconds
D、负载均衡和应用交换功能
�CGlobal Load Balancer提供17种负载均衡算法
�CF5提供最优质的负载均衡和应用交换功能
静态算法
动态算法
智能算法
I �Ccontrol
UIE + Irules
�CLocal Load Balancer提供12种负载均衡算法
E、持续功能
�C连续性与负载平衡是相互对立的,但它对于负载平衡又是必不可少的!
�C简单的连续性―基于源地址
�CHTTP Cookie 连续性
�CSSL Session ID 连续性
�C目的地址的亲合作用--caches
�Cstandby BIG-IP实现对连续性记录的镜像
�C智能与第七层的内容交换组合
F5做为应用交换领域的领导厂商,一直保持着技术上的领先地位,F5已经有40多项技术申请了专利,其它的竞争合作伙伴都在购买F5的这些专利技术。接下来我们讨论一下负载均衡算法。
负载均衡算法,做为应用交换的四个主要技术之一,它相对其它三个技术来说,更为重要些,在应用交换领域里,主要的技术是负载均衡的算法,完整的、完善的、可控的、灵活的负载均衡算法无疑决定着负载均衡厂商在应用交换领域的地位。负载均衡算法是非常重要的功能指标。一般来说,我们将负载均衡方法归纳为两种类型:静态的负载均衡算法,动态负载均衡算法。
本地流量管理技术主要有一下几种负责均衡算法:
静态负载均衡算法包括:轮询,比率,优先权
动态负载均衡算法包括: 最少连接数,最快响应速度,观察方法,预测法,动态性能分配,动态服务器补充,服务质量,服务类型,规则模式。
静态负载均衡算法
・轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
・比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
・优先权(Priority):给所有服务器分组,给每个组定义优先权,BIG-IP 用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIG-IP 才将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。
1 |
3 |
5 |
2 |
4 |
6 |
动态负载均衡算法
・最少的连接方式(Least Connection):传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。
1 |
2 |
・最快模式(Fastest):传递连接给那些响应最快的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
101 |
102 |
・观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
1 |
2 |
・预测模式(Predictive):BIG-IP利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。(被BIG-IP 进行检测)
1 |
2 |
・动态性能分配(Dynamic Ratio-APM):BIG-IP 收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配。
・动态服务器补充(Dynamic Server Act.):当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。
・服务质量(QoS):按不同的优先级对数据流进行分配。
・服务类型(ToS): 按不同的服务类型(在Type of Field中标识)对数据流进行分配。
・规则模式:针对不同的数据流设置导向规则,用户可自行。
对应本地的应用交换,大家可以通过对上述负载均衡算法的理解, 结合实际的需求来采用合适你的负载均衡算法,我们常用到的一般是最少连接数、最快反应、或者轮询,决定选用那种算法, 主要还是要结合实际的需求。
全局流量管理技术主要有以下几种负载均衡算法:
静态负载均衡算法包括:TOPOLOGY
动态负载均衡算法包括:RTT
以上的算法是我们常用到的算法,其它的算法这里就不做阐述了。
Topology原理、性能
在SCDN的服务中, 为了加快用户访问的回应速度, 一般利用电信的资源, 通过收集各省级ip网段划分, 通过用户访问的省级ip网段定位, 直接决定用户的最优服务省级骨干边缘节点, 在f5 networks的技术中就是topology的处理, 具体界面如下:
3DNS在配置的时候预先根据访问规则, 定义不同的ip网段或省级用户分类访问相应的data center 或pool.
在3DNS接到访问的解析请求时, 通过对topology的比对, 判断应该回应的data center 或pool 地址.
Topology在不同的CDN 环境中得到了很多应用, 在功能, 稳定性和性能上都有非常优异的表现
在SCDN的模型中有一个非常特别的性能问题, 就是GSLB产品在添加多条规则后的性能下降问题; 压力测试的试验表明, 在300条规则和3000条规则的不同情况下, 每秒解析的次数的性能下降有10倍以上, 特别时在实际应用当中, 可能存在更多的规则, 那性能的下降就非常难以预料了, 因此引入的user define regions 技术可以极大的缓解性能压力.
使用的方法就是将多个ip 网段规定成user define regions, 然后的规则不是针对ip 网段, 而是针对不同的regions, 在实际使用中针对3000条规则的性能上升可以达到15~20倍左右.
RTT原理
RTT 的全称是round trip time , 就是指由各省级骨干边缘节点到各省local DNS的访问发起到接受回应的时间, 不同的各省local DNS的RTT时间的收集对比, 可以产生实际的网络就近性对比表格,
具体访问流程:
1.local DNS 向3DNS发起解析请求
2.3DNS 接收到local DNS的请求后, 通过加密通道通知省级骨干边缘节点内的bigip 有一个local DNS需要进行RTT的测试
3.省级骨干边缘节点内的bigip接到RTT测试请求, 并向local DNS发起访问
4.local DNS 回应bigip 的访问请求
5.省级骨干边缘节点内的bigip将local DNS的回应的延迟时间等相关信息返回给3DNS
6.3DNS 经过接受各省级骨干边缘节点内的bigip的回应, 存储并判断后将最优的地址返回给local DNS
省级骨干边缘节点内的bigip可以选择多种测试方法判断对local DNS的RTT时间, 包括:
DNS_Dot: 向local DNS发起一个包含”.”的测试, 也就是root, 希望得到一个root列表清单
DNS_REV: 向local DNS发起”PTR”的测试, 希望得到相应的domain 名称
UDP:发起一个UDP的包, 看是否回应
TCP:发起一个TCP的包看是否回应
ICMP:发起一个ICMP 的ping 包, 看是否回应
针对一个local DNS 的RTT结果:
ldns {
address202.103.6.46
cur_target_state 285241347
ttl2419200
probe_protocoldns_rev
path {
datacenter"zjm"
cur_rtt419814
cur_hops0
cur_completion_rate 10000
cur_last_hops0
}
path {
datacenter"changsha"
cur_rtt15175
cur_hops0
cur_completion_rate 10000
cur_last_hops0
}
path {
datacenter"xian"
cur_rtt53816
cur_hops0
cur_completion_rate 10000
cur_last_hops0
}
}
如果你有不通的出口时, 这项记录就会有相应的数值,假设你有三条出口链路, 那么对应每个本地的DNS就会有三条记录,RTT 会把延时最短的一个解析给本地的DNS,这样本地的用户就能得到一个相对他/她最快的站点,从而实现了服务的持续、稳定、可靠、可用。