开发者学堂课程【高性能集群负载第二课时:负载均衡】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/804/detail/13877
负载均衡
内容简介:
一、 负载均衡简介
二、 常见的负载均衡方式
三、 常见算法
四、 拓展算法
五、 其他负载平衡
一、负载均衡简介
负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,可以单独对外提供服务而无需其他服务的辅助。
平均或不平均的分配人物,避免服务器压力太大或太小
二、常见的负载均衡方式
1.用户手动选择
在游戏、下载站点,往往会采用分区分服的方式,人工实现负载均衡。
(1)优势:实现方式简单,只要展示所有节点即可。
(2)劣势:负载均衡不均匀,可能出现某些节点压力过大,有些节点毫无压力。
2.DNS轮询均衡
大部分DNS服务商都支持为同一主机名设定多个不同的A记录,DNS服务器在解析的时候,会根据A记录的顺序,随机分配不同的服务器。
(1)优势:实现方式简单,用户无感知。
(2)劣势:可靠性低,出问题修复慢;负载均衡不均匀,可能出现某些节点压力过大,有些节点毫无压力。
3.四层/七层负载均衡
对于可靠性较高的业务,会通过四层/七层负载均衡设备来完成服务器的负载均衡。
(1)优势:可靠性高,更新速度快,提供健康检查。
(2)劣势:硬件实现需要购买专属硬件;软件实现需要自行配制部署。
(3)四层/七层负载均衡的区别:
a) 四层负载均衡在TCP/UDP层面,将外部的IP地址映射到内部的多个IP地址中,每次请求使用其中的一个IP 地址,从而实现负载均衡的目的。
b)七层负载均衡在HTTP协议层面,将用户请求进行分发。
4.硬件负载均衡和软件负载均衡
(1)硬件负载均衡:通过硬件设备实现的负载效果更好、效率高、性能稳定、但是成本比较高。
(2)软件负载均衡:通过软件实现的负载均衡主要依赖于均衡算法的选择和程序的健壮性。网络处理性能方面不如硬件负载均衡,但是不需要购买专门软件,成本较低。
三、常见算法
1.轮询算法
(1)轮询算法是将每个请求按时间顺序或排序顺序逐一分配到不同的后端节 点上,如果节点出现问题,则排除节点,不再分发请求。
(2)轮询算法的优势是实现简单
(3)轮询算法的缺点是无法平衡不同主机之间的性能
2.加权轮询算法
(1)加权轮询算法是在基本的轮询策略上加入不同的权重,指定各个节点被轮询的几率。
(2)加权轮询可以有效的处理后端节点性能不同的问题。
3.IP Hash 算法
(1)IP hash 算法是指将客户端的IP 使用特定的 Hash 算法,将其请求定位到某一台后端服务器当中。
(2)IP Hash的好处是同一个用户的请求始终在同一台服务器上处理,不存在连接保持的问题。
(3)IP Hash 的问题是无法保证后端服务器之间的负载均衡,可能有些后端压力会较大,而有些压力较小。
四、拓展算法
1.Fair 算法
(1)Nginx 可以通过第三方模块 fair来拓展负载均衡算法
(2)Fair算法通过 Nginx 后端的响应时间来判断负载情况。Nginx 会将请求分发给负载最轻的节点
(3)优势是可以有效的平衡不同节点之间的负载
(4)劣势是需要手动编译第三方模块
2.URL Hash 算法
(1)Nginx 可以通过第三方模块 url hash 来拓展负载均衡算法
(2)url hash 算法与 ip hash类似,不同的是针对客户端请求的URL进行 hash.
(3)url hash 在后端有缓存的情况下,可以提升缓存的利用率
(4)url hash 的问题是再让节点出现异常无法自动排除节点
五、其他负载平衡
1.Nginx轮询负载均衡
2.Nginx最少连接数负载均衡
3.Nginx随机分配负载均衡
4.Nginx分路径轮询负载均衡
5.Nginx加权轮询负载均衡
6.Nginx ip_hash负载均衡
7.Nginx TCP负载均衡