一 、F5负载分担方式:
1)原理:
客户发出服务请求到VIP
BIGIP接收到请求,将数据包中目的IP地址改为选中的后台服务器IP地址,然后将数据包发出到后台选定的服务器
后台服务器收到后,将应答包按照其路由发回到BIGIP
BIGIP收到应答包后将其中的源地址改回成VIP的地址,发回客户端,由此就完成了一个标准的服务器负载平衡的流程
2)服务器的健康监控和检查分类:
服务器 (Node) -Ping (ICMP)
BIGIP可以定期的通过ICMP包对后台服务器的IP地址进行检测,如果在设定的时间内能收到该地址的ICMP的回应,则认为该服务器能提供服务
服务 (Port) – Connect
BIGIP可以定期的通过TCP包对后台服务器的服务端口进行检测,如果在设定的时间内能收到该服务器端口的回应,则认为该服务器能提供服务
扩展内容查证(ECV:Extended Content Verification)—ECV
3)负载均衡的算法
负载均衡设备本身都是以负载均衡算法为基础的,负载均衡算法分为两种:静态负载均衡算法和动态负载均衡算法.
轮询(RoundRobin):顺序循环将请求一次顺序循环地连接每个服务器。 当其中某个服务器发生第二到第7层的故障,BIGIP就把其从顺序循环队列中拿出,
不参加下一次的轮询,直到其恢复正常。 ·比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。
当其中某个服务器发生第二到第7层的故障,BIGIP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
优先权(Priority):给所有服务器分组,给每个组定义优先权,BIGIP用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,
分配用户的请求);当最高优先级中所有服务器出现故障,BIGIP才将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。
最少的连接方式(Least Connection):传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7层的故障,BIGIP就把其从服务器队列中拿出,
不参加下一次的用户请求的分配,直到其恢复正常。
最快模式(Fastest):传递连接给那些响应最快的服务器。当其中某个服务器发生第二到第7层的故障,BIGIP就把其从服务器队列中拿出,
不参加下一次的用户请求的分配,直到其恢复正常。
观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7层的故障,
BIGIP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
预测模式(Predictive):BIGIP利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。
(被BIGIP进行检测)
动态性能分配(DynamicRatio-APM):BIGIP收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配。
动态服务器补充(DynamicServer Act.):当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。
服务质量(QoS):按不同的优先级对数据流进行分配。
服务类型(ToS):按不同的服务类型(在Type of Field中标识)对数据流进行分配。
规则模式:针对不同的数据流设置导向规则,用户可自行编辑流量分配规则,BIGIP利用这些规则对通过的数据流实施导向控制。
二、 nginx 负载分担方式
1)原理
2)监控检查
在nginx.conf配置文件里面的upstream加入健康检查,如下:
upstream name {
server xxxx.xxxx.xxxx.xxxx:80;
server xxxx.xxxx.xxxx.xxxy:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
}
type:健康检查包的类型,现在支持以下多种类型
- tcp:简单的tcp连接,如果连接成功,就说明后端正常。
- ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。
- http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。
- mysql: 向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。
- ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。
- port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,
比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。
默认是0,表示跟后端server提供真实服务的端口一样。该选项出现于Tengine-1.4.0。
3)负载算法
轮循(默认)
Nginx根据请求次数,将每个请求均匀分配到每台服务器
最少连接
将请求分配给连接数最少的服务器。Nginx会统计哪些服务器的连接数最少。
IP Hash
绑定处理请求的服务器。第一次请求时,根据该客户端的IP算出一个HASH值,将请求分配到集群中的某一台服务器上。后面该客户端的所有请求,都将通过HASH算法,找到之前处理这台客户端请求的服务器,然后将请求交给它来处理。