负载均衡是网站建设必不可少的技术手段,在网站的可伸缩性,高可用性方面扮演着举足轻重的角色,而具体的实现技术也是多种多样的,从硬件到软件,从商业产品到开源代码,应有尽有,但实现的技术也不外乎几类。

从支持均衡负载的载体来看,可分为软件负载均衡和硬件负载均衡。

硬件负载均衡一般是在定制处理器上独立安装负载均衡服务器。其特点是功能强大,支持全局负载均衡且提供全面的,复杂的负载均衡算法。而且因其在专用的处理器上运行,吞吐量大,支持单机百万以上的并发。安全性也更高,具备防火墙,防DDOS攻击。但它的缺点也比较突出,购买和维护的成本高,当访问量突然增大时,不能动态扩容。

软件负载均衡可以从软件层面实现负载均衡,可以在任何标准物理设备的运行,也是因为其超强的适配度,应用极为广泛,无论大小公司都会应用到。

最常用的软件负载均衡工具有Nginx,LVS,HAProxy

LVS(Linux Virtual server)Linux虚拟服务器,是由章文嵩博士发起的自由软件项目,通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能的,高可用的服务器集群,其具备良好的的可操性,可扩展性和可靠性。从而以低廉的成本实现最优化的服务性能。

Nginx是一个网页服务器,他能反向代理HTTP,HTTPS,SMTP的等的协议链接,以及一个负载均衡器和一个http缓存。

HAProxy是一个使用C语言编写的开源代码软件,其提供负载均衡及基于http的应用程序代理。

软件负载均衡从通信层面看,可分为四层负载均衡和七层负载均衡。而这个四层和七层负载均衡是什么呢,说到这里我们要先介绍一个概念,OSI七层模型。..

OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范

 

而负载均衡是基于网络传输的。所以这七层模型就是绕不开的。负载均衡技术实现在OSI七层模型的不同层次,而最常用的就是四层负载均衡和七层负载均衡。

一 四层负载均衡 

是基于IP地址和端口进行请求转发。

修改IP地址,

修改MAC地址。

二 七层负载均衡 

根据用户访问的http请求头和URL信息将请求发送到特定的主机。

1)HTTP负载均衡

其原理是根据用户的http请求来计算一台真实的Web服务器地址,并将该服务器的地址写入http重定向响应中返回给用户浏览器。

他的优点是比较简单,缺点是浏览器需要两次请求才能完成一次访问,性能比较差,使用重定向后,搜索引擎会视为SEO作弊。如果负载均衡器宕机,就无法访问该站点。因此在实践中使用这种方案进行负载均衡的案例并不多见。

负载均衡活跃连接数和不活跃连接数 负载均衡 部署灵活_负载均衡活跃连接数和不活跃连接数

 

 

2)DNS域名解析负载均衡

在DNS服务器中配置多个A记录,每次域名解析请求都会根据负载均衡算法计算一个不同的IP地址返回,这样A记录中配置的多个服务器就构成一个集群,并可以实现负载均衡。

它的优点是将负载均衡工作转交给了DNS,

省掉了网站管理维护负载均衡服务器的麻烦,同时许多DNS还支持基于地理位置的域名解析,加快用户的访问速度,改善性能。

但它的缺点也很明显,可用性差,DNS多级解析,当新增和修改DNS之后,解析时间较长,解析过程中用户的访问会失败。可扩展性低,而且DNS负载均衡的控制权在域名服务商哪里,网站无法对其做出更多改善和管理,从而导致维护性也差。

负载均衡活跃连接数和不活跃连接数 负载均衡 部署灵活_服务器_02

 

3)反向代理负载均衡

在部署位置上,反向代理服务器处于web服务器前面,这个位置也是负载均衡服务器的位置,故大部分的反向代理服务器也提供负载均衡的功能。

它的工作方式是以代理服务器来接受网络请求,根据负载均衡算法转发到不同的web服务器上,服务器处理完成的响应也会通过反向代理服务器返回给用户。其优点是将负载均衡和反向代理服务器功能集成在一起,部署简单。缺点是反向代理服务器是所有请求和响应的中转站,其性能可能会成为瓶颈。

负载均衡活跃连接数和不活跃连接数 负载均衡 部署灵活_运维_03

 

4)Ip负载均衡

是在网络层通过修改请求目标地址进行负载均衡。

IP负载均衡是在内核完成数据分发,相较反向负载均衡有更好的处理能力,但由于所有的请求响应都需要经过负载均衡服务器,集群的最大响应数据吞吐量不得不受制于负载均衡服务器的网卡宽带。

负载均衡活跃连接数和不活跃连接数 负载均衡 部署灵活_服务器_04

 

5)数据链路层负载均衡

是指在通信协议的数据层链路层修改MAC地址进行负载均衡。

负载均衡活跃连接数和不活跃连接数 负载均衡 部署灵活_负载均衡活跃连接数和不活跃连接数_05

 

这种数据传输方式又叫做三角传输模式,在负载均衡数据分发过程中,不修改IP地址只修改MAC地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器的IP地址一致,达到不修改数据包的原地址和目的地址就能进行数据分发的目的。

由于实际处理请求的真实物理服务器IP和数据请求目的IP一致,不需要通过负载均衡服务器对地址进行转换,可将响应数据包直接返回给用户浏览器,从而避免负载均衡服务器网卡宽带成为瓶颈。

Linux 平台上最好的链路层负载均衡开源产品是 LVS (Linux Virtual Server)。