# 负载均衡
硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期或者土豪级公司长期使用。软件负载均衡在互联网领域大量使用,常用的软件负载均衡软件有 Nginx,Lvs,HaProxy 等。
# 一、定义
当 http 请求过多时,反向代理服务器负责分发 http 请求,确保某台资源服务器(可以是集群)压力不会太大,而导致崩溃。解决并发压力,提供故障转移。
# 二、Ngnix 的负载均衡
# 1、定义
Ngnix 是一款轻量级的 Web 服务器/反向代理服务器,使用 epoll and kqueue 作为开发模型,工作在七层 Http 协议的负载均衡系统。
# 2、特点
具有高性能、高并发、低内存使用等特点。
# 3、策略
A、内置策略
包含加权轮询和 ip hash,这两种策略默认会编译进 nginx 内核,只需在 nginx 配置中指明参数即可。
B、扩展策略
如 fair、通用 hash、一致性 hash 等,默认不编译进 nginx 内核。
# 4、用途
Ngnix 一般作为入口负载均衡或内部负载均衡,结合反向代理服务器使用。
# 三、HaProxy 负载均衡
HAProxy 也是使用较多的一款负载均衡软件,提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机,是免费、快速并且可靠的一种解决方案,特别适用于那些负载特大的 web 站点。运行模式使得它可以很简单安全的整合到当前的架构中,同时可以保护你的 web 服务器不被暴露到网络上。
HTTP 和 HTTPS 的负载均衡叫做七层负载均衡,而 TCP 和 UDP 协议的负载均衡叫做四层负载均衡。
# 1、特点
- 支持两种代理模式:TCP(四层)和 HTTP(七层),支持虚拟主机;
- 配置简单,支持 url 检测后端服务器状态;
- 做负载均衡软件使用,在高并发情况下,处理速度高于 nginx;
- TCP 层多用于 Mysql 从(读)服务器负载均衡; (对 Mysql 进行负载均衡,对后端的 DB 节点进行检测和负载均衡)
- 能够补充 Nginx 的一些缺点比如 Session 的保持,Cookie 引导等工作。
# 2、策略,算法
- 轮询,轮流分配到后端服务器;
- 根据后端服务器性能分配;
- 最小连接者优先处理;
- 根据请求源 IP,与 Nginx 的 ip hash 类似。