在大型的网站服务器集群中,负载均衡技术是必不可少的。使用负载均衡的技术架构,能够有效避免后端服务出现单点故障,提升服务的稳定性。
负载均衡简介
负载均衡构建在现有网络结构之上,可以方便有效地扩展服务器资源。通常将大量的并发请求分散至多个节点上分别处理,减少客户端的等待时间;也可以将单个重负载的运算分担到多个节点上做并行处理,***进行汇总。
负载均衡作用
- 请求分发
请求分发即按照一定的算法将大量的并发请求分散至多个节点的服务器上处理,减轻单台服务器的压力,减少请求响应时间以及提升系统并发量。
- 故障转移
通过心跳机制检测判断各个服务器的状态,能够自动剔除不可用的服务器并将请求发送可用服务器,减少服务出现不可用的概率,提高可用性。
负载均衡分类
平时我们常用的有四层负载均衡和七层负载均衡,四层的负载均衡是基于IP和端口实现的,七层的负载均衡是在四层的基础上,基于URL等信息实现。
常用于四层负载均衡的软件(还有F5、NetScaler等硬件负载均衡器)有:
- LVS:重量级软件,本身不支持正则表达式,部署起来比较麻烦,但是性能高,应用范围广,一般的大型互联网公司都有用到。
- HAProxy:轻量级软件,支持的负载均衡策略非常多,较灵活。
- Nginx:轻量级软件,支持的协议少(HTTP、HTTPS和Email协议),对于Session支持不友好。
- 常用于七层负载均衡的软件有:
- HAProxy:全面支持七层代理,灵活性高,支持Session会话保持。
- Nginx:可以针对HTTP应用进行分流,正则规则灵活,支持高并发,部署简单。
- Apache:性能较差,一般不考虑。
- MySQL Proxy:官方的数据库中间件,可以实现读写分离,负载均衡等功能,但是对分表分库支持不完善(可选替代品:Atlas,Cobar,TDDL)。
技术原理
四层负载均衡类似路由器的转发,通过修改报文中的目标地址和端口,然后直接转发给该服务器,只需要一个TCP连接即可。七层负载均衡通过类似于代理的机制进行转发,负载均衡服务器会分别与客户端和后端的服务器都建立TCP连接。
应用场景
四层负载均衡一般用于TCP应用中,比如基于C/S架构开发的ERP系统。七层负载均衡大多应用于使用HTTP/HTTPS协议搭建的网站和内部平台系统。