Citrix Netscaler负载均衡算法
Citrix Netscaler负载均衡算法
http://blog.51cto.com/caojin/1926308
众所周知,作为新一代应用交付产品的Citrix Netscaler具有业内领先的数据控制、应用交付的能力,然而作为根本内容之一的ADC功能,如果不具备强大的、多元化的均衡算法是不可能适应如此众多的应用场景,更无法做到好的应用交付产品。因此我们在此讨论一下比较常用的负载均衡算法就很有必要。
目前最新版本的Netscaler支持17种均衡算法,目前先讨论最常用的12种
1、轮询算法(Round Robin)
当NetScaler 使用轮询的负载均衡算法时,它会将来自客户端的请求轮流分配给后台中的服务器,从1开始,直到N(后台服务器个数),然后重新开始循环。
如果考虑后台服务器的处理能力不同,可以给每个服务器分配不同的权值,通过设置权重比率来调整循环调度的机率。
2、最少连接算法(Least Connection)
当NetScaler 使用最小连接的负载均衡算法时,它是把新的连接请求分配到当前连接数最小的服务器。最小连接算法是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。系统会记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器时,其连接数加1,当连接中止,其连接数减一。
如果考虑后台服务器的处理能力不同,也可以给每个服务器分配不同的权值,通过设置权重比率来调整最小连接算法的调度机率。
3、最少响应时间
当NetScaler 使用最小响应时间的负载均衡算法时,它是把新的连接请求分配到当前连接数最小并且平均响应时间最小的服务器。最小响应时间算法的调度因素实际上有两个部分组成,即当前每服务器上的最小连接数和每服务器的平均响应时间(这里的平均响应时间为TTFB,即第一个字节到达的时间,对于Http协议为response code为200的第一个字节数据返回的时间),这两个因子的乘积做为算法调度的判断依据。最新的连接请求将被发送到最小连接数和平均响应时间乘积最小的服务器。
如果考虑后台服务器的处理能力不同,也可以给每个服务器分配不同的权值,通过设置权重比率来调整最小享用时间算法的调度机率。
4、最小带宽算法(Least Bandwidth)
当NetScaler 使用最小带宽的负载均衡算法时,它是把新的连接请求分配到当前流量吞吐(单位为bps)最小的服务器。
如果考虑后台服务器的处理能力不同,也可以给每个服务器分配不同的权值,通过设置权重比率来调整最小带宽算法的调度机率。
5、最少数据包算法(Least Packets)
当NetScaler 使用最少数据包的负载均衡算法时,它是把新的连接请求分配到数据包最少的服务器。计算最小数据包的方法是过去14秒每个服务器上处理的数据包数量。
如果考虑后台服务器的处理能力不同,也可以给每个服务器分配不同的权值,通过设置权重比率来调整最少数据包算法的调度机率。
6、令牌算法(Token)
当NetScaler 使用令牌负载均衡算法时,它分发新的连接请求将依据客户端请求中所附带的令牌(Token)信息,具备相同令牌的请求将会分配到相同的后台服务器。令牌算法是一种基于内容信息的调度算法,NetScaler可设置令牌(Token)所在的位置和尺寸,这样通过搜索到相同的令牌,而将请求发往相同的后台服务器。
令牌算法可以应用到TCP、http和Https服务类型,甚至可以实现不同的服务之间的唯一性。对于Http/Https协议,令牌(Token)可以在Http header或URL或Http body中取得。Netscaler可以在TCP Payload前最多24K字节中搜索配置的Token,如果是非Http服务,Netscaler可以在最多前16个数据包中中搜索配置的令牌(Token),但不能超过24K字节。
7、URL Hash算法
URL散列(Hash)负载均衡算法常用于缓存(Cache)环境,当NetScaler 使用URL散列(Hash)负载均衡算法时,NetScaler通过一个散列(Hash)函数将此连接请求的URL信息进行计算并将计算值缓存在系统中,同时映射到后台某个服务器。随后基于URL信息做为散列键(Hash Key)进行Hash计算得到相同值的请求,均发送到这个后台服务器。
8、域名 Hash算法
当NetScaler 使用域名散列(Hash)负载均衡算法时,NetScaler通过一个散列(Hash)函数将此连接请求的域名(Domain)信息进行计算并将计算值缓存在系统中,同时映射到后台某个服务器。随后基于域名信息做为散列键(Hash Key)进行Hash计算得到相同值的请求,均发送到这个后台服务器。
9、源IP地址 Hash算法
当NetScaler 使用源IP地址散列(Hash)负载均衡算法时,NetScaler通过一个散列(Hash)函数将此连接请求的源IP地址信息进行计算并将计算值缓存在系统中,同时映射到后台某个服务器。随后基于源IP地址做为散列键(Hash Key)进行Hash计算得到相同值的请求,均发送到这个后台服务器。
10、目的IP地址Hash算法
当NetScaler 使用目的IP地址散列(Hash)负载均衡算法时,NetScaler通过一个散列(Hash)函数将此连接请求的目的IP地址信息进行计算并将计算值缓存在系统中,同时映射到后台某个服务器。随后基于目的IP地址做为散列键(Hash Key)进行Hash计算得到相同值的请求,均发送到这个后台服务器。
11、源IP和目的IP地址 hash算法
当NetScaler 使用源IP和目的IP地址散列(Hash)负载均衡算法时,NetScaler通过一个散列(Hash)函数将此连接请求的源IP地址和目的IP地址信息进行计算并将计算值缓存在系统中,同时映射到后台某个服务器。随后基于源IP地址和目的IP地址做为散列键(Hash Key)进行Hash计算得到相同值的请求,均发送到这个后台服务器。
源IP地址和目的IP地址散列(Hash)算法常应用在防火墙集群负载均衡环境中,它们可以保证流量出入的唯一性。
12、自定义的基于SNMP的判断算法(Custom Load)
当NetScaler 使用自定义负载均衡算法时,NetScaler按照自定义策略通过SNMP协议获取相关服务器运行参数,例如CPU利用率、内存使用、服务器连接和响应时间等多种信息,最终通过预先策略设定的参数矩阵(metric)来决定新的连接请求发送给哪一台后台服务器。
也许有人会问怎么Netscaler不支持加权算法?在其他ADC里面加权会作为一种单独的算法出现,也就只能支持一两种而已。但是在Netscaler,加权是在service的设定,会和其他已有的算法结合,从某种程度上讲就变成更多的算法,也就变成了12+12加权=24种均衡算法。下面仅以最小连接的加权来讨论
最小连接数
当NetScaler 使用最小连接的负载均衡算法时,它是把新的连接请求分配到当前连接数最小的服务器。最小连接算法是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。系统会记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器时,其连接数加1,当连接中止,其连接数减一。
如果考虑后台服务器的处理能力不同,也可以给每个服务器分配不同的权值,通过设置权重比率来调整最小连接算法的调度机率。
无权重参与
service1权重=4 |
||
servcie2权重=2 |
||
NW=当前连接数*(10000/权重) |
||
service1NW=连接数*2500 |
||
service2NW=连接数*5000 |
加入权重后请求的分配情况
请求数 |
service1 NW |
service2 NW |
当前NW |
0 |
0 |
0 |
0 |
1 |
2500 |
0 |
2500 |
2 |
2500 |
5000 |
5000 |
3 |
5000 |
5000 |
10000 |
4 |
5000 |
10000 |
12500 |
5 |
7500 |
10000 |
17500 |
6 |
10000 |
10000 |
20000 |
7 |
10000 |
15000 |
22500 |
8 |
12500 |
15000 |
27500 |
9 |
15000 |
15000 |
30000 |
10 |
15000 |
20000 |
32500 |
11 |
17500 |
20000 |
37500 |
12 |
20000 |
20000 |
40000 |
13 |
20000 |
25000 |
42500 |
14 |
22500 |
25000 |
45000 |
15 |
25000 |
25000 |
47500 |
16 |
25000 |
30000 |
50000 |
17 |
27500 |
30000 |
55000 |
18 |
30000 |
30000 |
57500 |
19 |
30000 |
35000 |
60000 |
注释:
当service的NW相同的时候遵循轮询算法,这也是导致在第一个周期与权重比例有所不同的原因所在。
当前NW的计算方法:NW=当前连接数*(10000/权重)但在计算系统当前NW(不是service的NW)时会利用上次索取Service的权重来进行计算。例如请求3-》4,由于请求3落在service1,servcie1的权重是4(10000/4=2500)那么在计算第4个请求的NW就用上次NW+10000/权重=12500。在4-》5的时候由于上次落在了service2上,那计算第5个请求的NW就用上次NW+10000/权重(用servcie2的权重)=17500。
为了明确看出权重的影响,下表以1:5的权重来体现
service1权重=5 |
||
servcie2权重=1 |
||
NW=当前连接数*(10000/权重) |
||
service1NW=连接数*2000 |
||
service2NW=连接数*10000 |
请求数 |
service1 NW |
service2 NW |
当前NW |
0 |
0 |
0 |
0 |
1 |
2000 |
0 |
2000 |
2 |
2000 |
10000 |
4000 |
3 |
4000 |
10000 |
14000 |
4 |
6000 |
10000 |
16000 |
5 |
8000 |
10000 |
18000 |
6 |
10000 |
10000 |
20000 |
7 |
10000 |
20000 |
22000 |
8 |
12000 |
20000 |
32000 |
9 |
14000 |
20000 |
34000 |
10 |
16000 |
20000 |
36000 |
11 |
18000 |
20000 |
38000 |
12 |
20000 |
20000 |
40000 |
13 |
20000 |
30000 |
42000 |
14 |
22000 |
30000 |
52000 |
15 |
24000 |
30000 |
54000 |
16 |
26000 |
30000 |
56000 |
17 |
28000 |
30000 |
58000 |
18 |
30000 |
30000 |
60000 |
19 |
32000 |
30000 |
62000 |
Citrix Netscaler负载均衡算法相关推荐
- Citrix ADC负载均衡技术
1 本地负载均衡技术 用户可根据系统的实际情况,在Citrix ADC中定义若干个虚拟服务器(也称为vserver 或者 VIP), 其上包括了一个IP地址和端口.这个虚拟服务器被设置成与一组运行在真 ...
- 应用交换技术的负载均衡算法
原文出处是:http://hi.baidu.com/ruijievideo/blog/item/5959be1f3c1621ff1bd576d2.html 应用交换技术的负载均衡算法 应用交换技术里主 ...
- nginx 负载 sessionid 不一致_你不知道的Nginx负载均衡算法,快进来迅速掌握
关于负载均衡的三种算法,轮询法,随机法,最小连接法,这三种负载均衡的算法,但是关于负载均衡还有其他的算法,我们也需要你去看,而且在面试的过程中,很有可能是会问到的呦. 对于要实现高性能集群,选择好负载 ...
- 自古帝王多短命,假如皇帝也懂负载均衡算法...
" 大家都知道古代皇帝各个都是后宫佳丽三千,而皇帝身上都天然的带着雨露均沾的精神,不想单独的宠爱一人! 来自:51cto技术栈 弱水三千,又怎舍得只取一瓢饮?据传皇帝们晚上睡觉个个都怕冷,因 ...
- 负载均衡算法及其Java代码实现
负载均衡算法及其Java代码实现 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须 ...
- 互联网研发中负载均衡算法一点探索
负载均衡在线上服务中有着很重要作用,因为一台web服务比如tomcat,能够处理qps(每秒处理请求数) 是有限的.那么就需要有有前端负载均衡服务将大的流量分发为多个后端服务进行处理. 负载均衡产品有 ...
- Ribbon 负载均衡调用04——ribbon 负载均衡算法||手写轮询算法(原理+JUC)CAS+自旋锁
RoundRobinRule.java 源码剖析 /*** Copyright 2013 Netflix, Inc.** Licensed under the Apache License, Ver ...
- Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)
文章目录 Pre 需求 工程 Code 继承AbstractLoadBalancerRule实现自定义Rule 随机权重策略 配置 验证 源码 Pre Spring Cloud Alibaba - 0 ...
- Spring Cloud Alibaba - 07 Ribbon 应用篇及内置的负载均衡算法
文章目录 Ribbon整合三部曲 artisan-cloud-ribbon-order step1 搞依赖 step2 搞注解 (在RestTemplate上加入@LoadBalanced注解) St ...
最新文章
- 最新Spring整合MyBatis详解教程
- Android通用简洁的下载器
- 小米宣布加入鸿蒙,中兴和OPPO抵制后,第一个宣布加入鸿蒙阵营的果然是魅族...
- 面试官:String的最大长度是多少?
- 前端学习(1411):多人管理31数据分页2
- 优秀!33岁博士,拟作为县长人选!
- Call for Papers | ACCV 2022在澳门等你
- git 强制将本地代码更新仓库里面的代码
- Metaspace泄漏排查
- 设计灵感|排版死板?可能是你的角度不对!
- 21天jenkins打卡Day2-安装Jenkins
- selenium反爬
- pr同时对多个视频进行缩放
- linux c语言修改文件权限,C语言再学习 -- 修改linux文件权限
- 《经济的律动》徐远(作者)epub+mobi+azw3格式下载
- 多测师肖sir_高级金牌讲师_项目数据
- 计算机应用基础原文,计算机应用基础(本) - 平时作业
- image.fromstream 参数无效原因分析及解决
- 使用Canvas把照片转换成素描画
- JAVA面试、笔试题
热门文章
- Winform中将Bitmap对象通过pictureBox显示图片
- 用Xshell连接Linux系统时输入反斜杠成W
- Tkinter的Checkbutton组件的简单使用
- 讲故事的用户故事样例之1
- android - FlutterActivity MethodChannel和FlutterView
- python计算机基础_python计算机基础
- linux 串口编程_ARM-Linux开发与MCU开发有何不同?上篇
- java二进制转十进制代码_二进制转十进制java代码
- 神策数据入选 Facebook 全球合作计划,助力出海客户拥抱全球化广告生态
- 三家逐鹿,私有化部署能帮神策数据杀出重围么?| 公司调研