原理讲解
轮询:轮流选择节点池内节点,机会均等
加权轮询:按照每个节点的权重比例,选择每个节点的机会与其权重成正比,权重越高的节点,被选中的几率越大。
加权最少连接:选择(连接数/权重)最小的节点
最快响应时间:节点监视器探测每个节点以获取节点响应时间,响应时间越小,被选择的机会越大。
动态反馈:节点监视器通过SNMP监视节点负载,根据节点负载动态改变其权值,使负载轻的节点获得更多的选择机会,负载重的节点获得较少的选择机会,从而达到各个节点的负载均衡
优先级:优先调度优先级高的节点,优先级高的节点不可用时才会调度到下一级节点。
哈希:根据哈希的关键字(IP_PORT,SRC_IP,URI,HOST)经过哈希运算得到哈希值,使不同的关键字尽
可能平均调度节点池中各个节点,相同关键字的访问调度到同一个节点
案例演示
注意事项
1.会话保持优先级高,测试过程中需要取消关联会话保持。
2.加权轮询测试时,权重需要按比例设置,否则效果为轮询
3.动态反馈需要结合SNMP监视同时使用
4.优先级只有等待节点不可用才会调度低的节点,节点繁忙,不认为不可用
会话保持上
会话保持用途:
通过不同的实现方法,最终实现在会话记录有效时间内,类似的来源请求都可以调度分配到同一个节点上,实现一些会话的连贯,整个虚拟服务的正常访问。
Source IP
根据记录相同的P地址来源,形成一张会话记录表,后续的连接过来优先查询该记录表,实现相同源|P地址在生效时间内都调度到同一个节点。
注意事项
sourceip会话保持需要注意掩码,会话记录表统计的是源i地址和掩码与运算后的网络地址。
会话保持:cookie插入
在服务器的HTTP应答的头部中插入一个cookie,记录被调度的服务器。最基本的 cookie会话保持,比如值为类似88598220的随机数字。
cookie插入流程回顾
1节点服务器返回的HTTP应答是没有携带cookie信息的
2服务器HTP应答经过AD设备后被插入 cookie字段,比如Cookie: sangfor 1=88598220; path=/
3客户端再次访问,携带上该 cookie信息经过AD分发,优先查询cookie记录表,从而匹配上一次的节点;
cookie改写流程回顾
1节点服务器返回的HTP应答是已经携带 cookie信息,比如set-Cookie: sangfor 1=88598220; path=
2服务器HTP应答经过AD设备后被改写cok字段,比如set-Cookie: sangfor 1=某公司 9818464588598220 path=/
3客户端再次访问,携带上该 cookie信息经过AD分发,优先查询cookie记录表,从而匹配上一次的节点;
4脱去改写的帽子,再转发给节点,实现服务器的透明
某公司
cookie被动流程回顾
1.节点服务器返回的HTTP应答是已经携带cookie信息,例如Set-Cookie: sangfor 1=88598220; path=
2服务器HTTP应答经过AD设备,AD将cookie值转换成一个哈希值例如%¥&#.然后会把这个哈希值与当前调度的节点一起插入到会话保持记录中,例如:<%¥&#,node1>
3客户端再次访问,携带上该 cookie信息Set- Cookiesango1=88598220;path=/发现 cookie方式为被动,则使用cookie值进行同样的哈希运算得到值%¥&#
4.根据上面计算出来的哈希%¥&#再去会话记录表中查询,发现存在记录匹配node1节点
cookie改写与被动异同点
相同点:
1节点服务器都已经携带了自身的 cookie信息;
2最终由AD转发给节点,携带的 cookie信息和服务器初次应答的一致,对服务器而言透明化
不同点
1改写方式是AD针对服务器的应答修改了 cookie信息,转发给客户端,同时AD自己维持一张记录表;
2被动方式是AD针对服务器的应答 cookie值做了哈希计算,形成哈希值与节点对应关系的记录表;
3改写方式客户端看到的coke不是服务器的真实 cookie值,被动反之综上可知,客户端的应用如果对 cookie有校验,则必须用 cookie被动