负载均衡,顾名思义,就是讲用户的请求均衡的发给多个服务器。
负载均衡 ,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力,同时能够提高网络的灵活性和可用性。
负载均衡的好处
- 透明:对用户来说,不管背后有多少服务器集群,用户感知就像访问一台服务器一样。
- 高性能:三个臭皮匠赛过诸葛亮,人多力量大。
- 水平扩展:再多部署一台服务器很容易。
- 高可用:挂了一台,还有可以切换到其他的正常的服务器。
负载均衡的技术
最常用的有3种:
- Nginx:最最常用,毫无疑问国内使用最多的
- LVS:
- HAProxy:最近在用的
- F5:硬件负载均衡器,收费。
常用的使用方式:
- Web端:Nginx/HAProxy+Keepalived
- 后端:MySQL主从及读写分离,LVS+Keepalived
负载均衡的种类
有很多种负载均衡
- 二层负载均衡:基于MAC地址
- 通过一个虚拟的MAC地址接收请求,然后把请求分配到真实MAC地址
- 三层负载均衡:基于IP地址
- 通过一个虚拟的IP地址接收请求,然后把请求分配到真实IP地址
- 分析IP层和TCP/UDP层(传输层)
- 四层负载均衡:基于IP+端口
- 通过虚拟IP+端口接收请求,然后把真实请求分配到真实服务器
- 七层负载均衡:基于URL等应用层信息
- 通过虚拟的URL接收请求,然后把请求分配到真实的服务器
- 分析HTTP的URL或Cookie(应用层)
没有负载均衡
没有负载均衡时的Web应用通常如下图所示:

我们可以看到,用户是直连Web服务器的。简单是简单,但是可能会遇到以下问题:
- Web服务器挂了:用户就无法访问应用了
- 如果短时间内大量用户同时访问Web应用,服务器可能会响应变慢甚至挂了
4层负载均衡
实现多台服务器的负载均衡最简单的方式使用4层负载均衡。
4层负载均衡是基于IP+端口的负载均衡。
是传输层的负载均衡。
如下图所示:

7层负载均衡
7层负载均衡就是基于URL等应用层信息的负载均衡。
7层负载均衡是应用层负载均衡。

负载均衡算法
多个服务器,要选用哪一台,所以总得有个规则,这就是负载均衡的算法。
常用的算法有:
- roundrobin轮询:轮流选择,公平公正,这也是默认算法
- 最小连接:选最闲(当前连接数最少的)的服务器。长连接时可以考虑用这种。
- hash散列:根据IP地址做hash散列,这样就可以同一个IP的始终(除非重启了)访问同一台服务器。
高可用
High Availability,也就是HAProxy中的HA。
高可用,顾名思义就是高度可用,就算HAProxy挂掉了也还是可以用,应用服务不受影响,用户照样访问。
这样一台HAProxy肯定是不行的——这就是单点。
那么很简单,同时准备几台HAProxy呗,这样就消除单点了。高可用就是消除单点。比如数据库的高可用就几个数据库集群。
常见的HA高可用配置如下所示:

比较容易理解,一台HAProxy正常工作接收用户请求。
另一台是冗余,但它不是多余。它会周期检测工作的HAProxy的健康状态,当原来的状态异常时,就激活另一台HAProxy,接收用户请求。这就是failover机制,故障转移机制。
本文深入探讨负载均衡的概念,分析其如何通过分配用户请求至多个服务器来提升网站性能与可用性。介绍了Nginx、LVS、HAProxy等常用负载均衡技术,并详细解释了二层至七层的不同负载均衡类型及其应用场景。
2463

被折叠的 条评论
为什么被折叠?



