这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战
什么是负载均衡?
将负载(访问请求)进行平衡,分摊到多个工作单元上执行。实现高性能,高可用(集群化),高并发。
实现负载均衡的方式
- 二层负载均衡(mac):负载均衡器对外提供 虚IP,集群中不同机器的 IP 地址相同,但 MAC 地址不同。当负载均衡器收到外部请求时,改变报文的目标 MAC 地址实现负载均衡。
- 三层负载均衡(ip):外部请求虚拟的 ip 地址,负载均衡接收后,分配 ip 地址,转到对应的机器。
- 四层负载均衡(tcp):传输层只有 TCP/UDP 协议,这两种协议除了包含源IP、目标IP之外,还包含源端口号和目标端口号。负载均衡器通过改变数据包的 IP和端口号 实现负载均衡。
- 七层负载均衡(http):基于url、浏览器类别或语言的负载均衡(不局限这三种)。通过报文中的应用层内容,再加上负载均衡设备的服务器选择方式,决定最终的服务器。
负载均衡工具(软件)
LVS:主要用来做四层负载均衡。
Nginx:主要用来做七层负载均衡。 Nginx是一个轻量级的Http和反向代理服务器,并发能力强,扩展性好(可以通过模块方式进行功能扩展)。
架构如下:
master不负责具体的工作,只是负责读取配置文件,调用worker工作。当worker被启动后,只负责web最简单的工作,其它工作都是由worker中的模块来处理。模块之间是以流水线的方式进行工作,即一个用户请求是由多个模块根据自己的功能依次完成的。
负载均衡算法
负载均衡算法分为静态负载均衡算法 和 动态负载均衡算法。
- 静态
- 轮询:顺序循环连接每个服务器。
- 比率:给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。
- 优先权:给所有服务器分组,给每个组定义优先权,用户的请求分配给优先级最高的服务器组
- 动态
- 最少连接数:选择连接数最少的服务器。
- 最快响应:选择响应速度最快的服务器。
- 预测模式:负载均衡器收集服务器的指标,进行预测分析,选择一台性能最佳的服务器接收请求。