第一部分·Nginx的软件负载均衡
一.负载均衡介绍
1什么是负载均衡
负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。
负载均衡的主要作用如下:
高井发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力。
伸缩性:添加或减少服务器数量,然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。
高可用:负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器、这使得应用集群具备高可用的特性。
安全防护:有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理、防火墙,防DDOs攻击等.
2负载均衡分类
从支持负载均衡的载体来看,可以将负载均衡分为两类:硬件负载均衡、软件负载均衡。
硬件负载均衡,一般是在定制处理器上运行的独立负载均衡服务器,价格昂贵。主流产品有:F5和A10。
优点: 功能强大:支持全局负载均衡并提供较全面的、复杂的负载均衡算法
性能强悍:硬件负载均衡由于是在专用处理器上运行,因此吞吐量大,可支持单机百万以上的并发
安全性高:具备防火墙,防DDOs攻击等安全功能
缺点: 成本昂贵:购买和维护硬件负载均衡的成本都很高
扩展性差:当访问量突增时,超过限度不能动态扩容
软件负载均衡,应用最为广泛,从软件层面实现负载均衡,一般可以在任何标准物理设备上运行。主流产品有:Nginx、HAProxy、LVS。
优点: 扩展性好:适应动态变化,可以通过添加软件负载均衡实例,动态扩展到超出初始容量的能力。
成本低:软件负载均衡可以在任何标准物理设备上运行,降低了购买和运维的成本
缺点:性能略差:相比于硬件负载均衡,软件负载均衡的性能要略低一些
3负载均衡算法
负载均衡器的实现可以分为两个部分:
根据负载均衡算法在候选服务器列表选出一个服务器将请求数据发送到该服务器上。
负载均衡算法是负载均衡服务核心中的核心。
负载均衡产品多种多样,但是各种负载均衡算法原理是共性的。负载均衡算法有很多种,分别适用于不同的应用场景,最为常见的负载均衡算法:轮询、随机、最小连接数、源地址哈希、一致性哈希。
轮询
upstream tomcats {
hash $request_uri;
server 192.168.1.173:8080;
server 192.168.1.175:8080;
}
特点:每个请求按时间顺序逐一分配到不同的后端服务器处理。
适用业务场景:后端服务器硬件性能配置完全一致,业务无特殊要求时适用。
加权轮询
upstream tomcats {
least_conn;
server 192.168.1.173:8080;
server 192.168.1.175:8080;
}
特点:指定轮询几率,weight值(权重)和访问比例成正比,用户请求按权重比例分配。
适用业务场景:后端服务器硬件性能处理能力不平均的情形
最小连接数(least_conn)
upstream tomcats {
least_conn;
server 192.168.1.173:8080;
server 192.168.1.175:8080;
}
特点:按nginx反向代理与后端服务器之间的连接数,连接数最少的优先分配。</