负载均衡的工作方式

1.http重定向

当http代理(比如浏览器)向web服务器请求某个url后,web服务器可以通过http响应信息中的location标记来返回一个新的url。这意味着http代理需要继续请求这个新的url,完成自动跳转。
缺点:吞吐率限制
优点:不需要额外的技术支持

2.dns负载均衡

dns负责提供域名解析服务,当访问某个站点时,实际上首先需要通过该站点域名的dns服务器来获取域名指向的ip地址,这一过程,dns服务器完成了域名到ip地址的映射,同样,这样映射也可以是一对多的,这个时候,dns服务器便充当了负载均衡调度器
dig google.cn 查看dns的配置
缺点:dns记录缓存更新不及时、策略的局限性、不能做健康检查
优点:可以寻找最近的服务器,加快请求速度
适用场景:多机房部署的时候

3.反向代理负载均衡

在用户的请求到达反向代理服务器时(已经到达网站机房),由反向代理服务器根据算法转发到具体的服务器。常用的apache,nginx都可以充当反向代理服务器。反向代理的调度器可以根据扮演的是用户和实际服务器中间人的角色。
工作在http层(七层)
缺点:代理服务器成为性能的瓶颈,特别是一次上传大文件
有点:配置简单、策略丰富、维持用户回话、可根据访问路径做转发。
适用场景:请求量不高的,简单负载均衡。后端较大的应用。

4.ip负载均衡

工作在传输层(四层)
通过操作系统内修改发送来的ip数据包,将数据包的目标地址修改为内部实际服务器地址,从而实现请求的转发,做到负载均衡。lvs的nat模式。
缺点:所有数据进出还是过负载机器,网络宽带成为瓶颈。
优点:内核完成转发,性能高。
使用场景:对性能要求高,但对宽带要求不高的应用。视频和下载等大宽带的应用,不适合使用。

5.数据链路层的负载均衡

工作在数据链路层(二层)
在请求到达负载均衡器后,通过配置所有集群机器的虚拟ip和负载均衡器相同,再通过修改请求的mac地址,从而做到请求的转发。与ip负载均衡不一样的是,在请求访问服务器 之后,直接返回客户。而无需经过负载均衡器。LVS DR(Direct Routing)模式。
缺点:配置复杂
优点:由集群机器直接返回,提高了出口宽带。
适用场景:大型网站使用最广的一种负载均衡方法

负载均衡中维护用户的session会话

1.把同一个用户在某一个会话中的请求,都分配到固定的某一台服务器上去,常见的负载均衡算法有ip_hash法。
2.session数据集中存储。session数据集中存储就是利用数据库或者缓存来存储session数据,实现了session和应用服务器的解耦。
3.使用cookie代替session。

负载均衡常见的策略

1.轮询

能力比较弱的服务器导致能力较弱的服务器最先超载

2.加权轮询

这种算法解决了简单轮训调度算法的缺点:传入的请求按照顺序被分配到集群中服务器,但是会考虑提前为每台服务器分配的权重。

3.最少连接数

根据后端服务器当前的连接数情况,动态的选取其中当前积压连接数量最少的一台服务器处理当前的请求,尽可能的提高后端服务的利用效率,将请求合理的分流到每一台服务器

4.加权最少连接数

5.源ip_hash

这种方式通过生成请求源ip的哈希值,并通过这个hash值来找到正确的真实服务器,这意味着对于同一主机来说他对应的服务器总是相同。

6.随机

通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问,实际效果接近轮询的结果。