1.什么是负载均衡
一种计算机技术,用来在多个计算机(计算机集群),网络连接,CPU,磁盘驱动器或其他资源中分配负载,以达到最优化资源使用,最大化吞吐率,最小化响应时间,同时避免过载的目的.
将负载(工作任务,访问请求)进行平衡,分摊到多个操作单元(服务器,组件)上进行执行.是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案.
2.负载均衡的主要作用
- 高并发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力(吞吐量).
- 伸缩性:添加或减少服务器数量,然后由负载均衡进行分发控制,这使得应用集群具备伸缩性.
- 高可用:负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器,这使得应用集群具备高可用的特性.
- 安全防护:有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理,防火墙,放DDoS攻击等.
3.负载均衡算法
负载均衡算法分为两类:静态负载均衡算法和动态负载均衡算法.
1).静态负载均衡算法包括:轮询,比率,优先权
- 轮询:顺序循环将请求一次顺序循环地连接每个服务器.当其中某个服务器第二到第七层的故障,BIG-IP就把其从顺序循环队列中拿出,不参加下一次轮询,知道其恢复正常.
- 比率:给每个服务器分配一个加权值为比例,根据这个比例,把用户的请求分配到每个服务器.当其中某个服务器发生第二到第七层的故障,BIG-IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常.
- 优先权:给所有服务器分组,给每个组定义优先权,BIG-IP用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIG-IP才将请求发送给次优先级的服务器组.这种方式,实际为用户提供一种热备份的方式.
2).动态负载均衡算法:最少连接数,最快响应速度,观察法,预测法,动态性能分配,动态服务器补充,服务质量,服务类型,规则模式.
- 最少连接方式(Least Connection):传递新的连接给那些进行最少连接处理的服务器.当其中某个服务器发生第二到第七层的故障,BIG-IP就把其从服务器队列中拿出,不参加下次的用户请求的分配,直到其恢复正常.
- 最快模式(Fastest):传递连接给那些响应最快的服务器.当其中某个服务器发生第二到第七层的故障,BIG-IP就把其从服务器队列中拿出,不参加下次的用户请求的分配,直到其恢复正常.
- 观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器.当其中某个服务器发生第二到第七层的故障,BIG-IP就把其从服务器队列中拿出,不参加下次的用户请求的分配,直到其恢复正常.
- 预测模式(Predictive):BIG-IP利用收集到的服务器当前的性能指标,进行预测分析.选择一台服务器在下一个时间段内其性能将达到最佳的服务器相应用户的请求.
- 动态性能分配(Dynamic Ratio-APM):BIG-IP收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配.
- 动态服务器补充(Dynamic Server Act):当主服务器群中故障导致数量减少时,动态地将备份服务器补充到主服务器群.
- 服务质量(QoS):按不同的优先级对数据流进行分配.
- 服务类型(ToS):按不同的服务类型负载均衡对数据流进行分配.
- 规则模式:针对不同的数据流设置导向规则,用户可自行.
4.负载均衡工具:Nginx,HAProxy,LVS
LVS:LVS主要用来做四层负载均衡.使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
Nginx:Nginx主要用来做七层和四层负载均衡.Nginx是一个网页服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。
HAProxy:HAProxy主要用来做七层和四层负载均衡.HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
注: 其中提到的四层和七层表示的是传输层和应用层,具体请搜索OSI七层模型.