什么是负载均衡

负载均衡是由多态服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,可以单独对外提供服务而无需求他服务的辅助。

常见的负载均衡方式

用户手动选择

在游戏,下载站点,往往会采用分区分服的方式,人工实现负载均衡
image.png

优势

实现方式简单,展示所有节点即可

劣势

负载均衡不均匀,可能某些节点压力大,某些节点无压力

DNS轮询均衡

大部分DNS服务商都支持为同一主机名设定多个不同的A记录,DNS服务在解析的时候,会根据A记录的顺序,随机分配不同的服务器、
image.png

优势

实现方式简单,用户无感知

劣势

可靠性低,出问题修复慢,这里主要是TTL时间为600秒,可能down的时候已经过了10分钟;
负载均衡不均匀,可能某些节点压力过大,有些节点无压力

四层/七层负载均衡

对于可靠性较高的业务,会通过四层/七层负载均衡设备来完成服务器的负载均衡

优势

可靠性高,更新速度快,提供健康检查

劣势

硬件实现需要购买;
软件实现需要自行部署配置

四层负载与七层负载的区别

四层负载均衡在TCP/UDP层面,将外部的IP地址映射到多个内部的IP地址中,每次请求使用其中一个IP地址,实现负载均衡的目的
七层负载均衡在HTTP协议层面,将用户请求进行转发
image.png.

4层负载的配置

image.png

硬件负载均衡与软件负载均衡

硬件负载均衡

通过硬件设备实现的负载均衡效果好、效率高、性能稳定,但是成本高

软件负载均衡

通过软件实现的负载均衡主要依赖于均衡的算法选择与程序的健壮性

负载均衡背后的逻辑

轮询算法

轮询算法是将每个请求按时间顺序或者排序顺序逐一分配到不同的后端节点,如果节点出现问题,则排除节点,不再进行请求分发
image.png

优势

实现简单

劣势

无法平衡不同主机之间的性能

加权轮询

在基础的轮询策略上加入不同的权重,指定各个节点被轮询的几率
可以用来有效的处理后端节点性能不同的问题
image.png

IPHash

IPHash算法是指将客户端的IP使用特定的Hash算法,将其请求定位到某一台后端服务器中
image.png

优势

将同一个用户的请求始终在同一台服务器上处理,不存在连接保持的问题

劣势

无法保证后端服务器之间的负载均衡,有些后端压力比较大,有些压力比较小

拓展算法:Fair算法(Nginx)

Nginx第三方模块Fair拓展负载均衡算法
Fair算法通过Nginx后端响应的时间来判断负载情况。Nginx会将请求分发给负载最轻的节点

优势

可以有效平衡不同节点之间的负载

劣势

手动编译第三方模块

拓展算法:URLHash算法

与IPhash类似,不同的是针对客户端请求的URL进行Hash

优势

在后端有缓存的情况下,提升缓存的利用率

劣势

出现问题的节点无法自动排除