写点什么

采用负载均衡技术总结

用户头像
superman
关注
发布于: 2020 年 07 月 08 日

1:需求与分类

大规划请求下单个节点满足不了请求的压力,需要通过负载均衡将请求引导到不同的节点满足请求,

多个节点间分担任务。

按照负载均衡所处的网络层次可分为 DSN负载均衡,网络层负载均衡,链路层负载,应用层负载(反向代理负载-nginx,haproxy,mysqlproxy等)。



2:负载均衡的调度算法

请求如何分配到多个节点上通过负载均衡算法,也可叫调度算法。

常用调度算法分为两类:

静态算法:

调度时不考虑机器当前的负载情况,只根据固定算法调度。包括:轮询-加权轮询,随机-加权随机,哈希(源地址哈希,请求的一致性哈希,目标地址哈希)

动态算法:

根据机器的负载动态调整,包括最小响应时间,最小连接数,最小活跃数。

动态算法理论上更合理,但实现上会更复杂。很多情况下使用的是静态算法。



3:会话信息保持



请求调度到不同节点时如何获取到当前用户的会话信息,保证相同账户在多次请求间可以共享信息。

主要解决比如用户的http的多次请求,可以共享会话信息。

会话信息保持方法:

1:session绑定

连接建立后请求每次都调度到同一个节点上,会话信息存在这个节点上。

如果是应用层,需要根据源地址等信息绑定。

缺点:节点故障会重启会丢失。

2:cookie绑定

会话信息放在cookie中,每次请求附带cookie

缺点:每次附带cookie信息,增加请求负担。浏览器可能禁用cookie

3:共享全局session服务器存储

将会话信息放到专门的服务器上,各个节点共享。比如放到redis上。

这是目前用的比较多的一种。



4:常用具体技术

1:DNS或GeoDNS

可用于跨区域机房及跨国间的负载均衡.

2:LVS

支持链路层或网络层负载均衡。

支持工作模式

DR模式:

默认模式,也是用的最多的一种模式。通过修改目标的mac地址,在链路层转发。

特点:rs可以直接返回,不需经过vs,不能跨网段负载,不支持端口映射。

NAT模式

修改目标ip地址,转给rs,实际是4层转发。修改了ip,tcp层的数据。

特点:返回必须经过vs,可以端口映射,可以跨网段(路由需要特殊绑定),vs容易成为瓶颈。

rs可以使任何系统。

TUN模式

ip隧道模式,请求请求后将ip层包再封装一层,原包作为新包的包体。转发给rs.

特点:可跨地域,要求rs也支持隧道。不支持端口映射。rs可直接返回。



FULLNAT模式

用的比较少。



LVS本身的高可用,配合keepalive.heartbeat.

3:Nginx

用的最多的一种反向代理负载。

可用根据url,ip,等灵活配置负载地址。

代理层还可以做缓存,日志,安全防护等。



用户头像

superman

关注

还未添加个人签名 2018.07.20 加入

还未添加个人简介

评论

发布
暂无评论
采用负载均衡技术总结