负载均衡技术(一)———负载均衡技术介绍
此文已由作者张小刚授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
本文主要是对负载均衡技术进行一个简单的介绍,并结合在实际生产环境中负载均衡技术的应用情况,让大家对负载均衡技术,以及这一技术在公司的应用情况有一个简单的了解。
什么是负载均衡技术
负载均衡技术,是现代计算机领域的基础技术之一,其基本原理是通过运行在前面的负载均衡服务器,根据执行的负载均衡算法,将流量分配到后端服务器上,从而提高整个系统的扩展能力,实现服务的并行扩展,同时,负载均衡技术还可以起到对外网屏蔽内网服务器,从而提高系统的可用性。
常用的负载均衡方式有硬件负载均衡和软件负载均衡两种:
-
硬件负载均衡:指的是采用专门负载均衡硬件设备来进行负载均衡操作,由于由专门的硬件设备进行,因此有很强的性能,但缺点是价格昂贵,扩展,升级成本较高,不利于进行二次开发。
-
软件负载均衡:就是用软件来执行负载均衡操作,虽然性能比不上专门的硬件,但价格相对低廉(不需要专用的硬件),易扩展,便于进行二次开发,现在已经被大量公司采用,用于实际的生产服务环境中。本文的重点就是对于软件负载均衡服务的介绍。
软件负载均衡服务介绍
软件负载均衡服务一般分为两种:四层负载均衡和七层负载均衡,四层和七层指的是负载均衡服务运行的位置,分别对应ISO网络协议中的传输层和网络层。在实际应用中,四层负载均衡一般就是位于层的TCP协议(或者SSL协议)的负载均衡,而七层负载均衡就是HTTP协议(或者HTTPS)协议的负载均衡。
除此之外,还有针对ICMP,POP3邮件协议,针对数据库协议的负载均衡等,但应用最为广泛的,还是基于HTTP和TCP协议负载均衡,这也是由于实际应用环境决定的:HTTP协议是现在应用最为广泛的应用层协议,也是基于“页面”的老一代互联网的基础,得到了极为广泛的应用,可以说,HTTP协议就是互联网技术最重要的协议。而TCP协议作为传输层的基础协议,可以直接兼容应用层的各种协议。在实际的应用场景中,对于web服务,直接使用HTTP负载均衡,而对于需要长连接的,或者其他非HTTP协议的服务,如mysql,redis等,则统一使用TCP负载均衡。
常见的负载均衡服务有Apache,LVS,Nginx,Haproxy等:
-
按照类型看,Apache,Nginx属于七层负载均衡,LVS属于四层负载均衡,Haproxy同时支持四层和七层负载均衡。
-
按照功能看,LVS,Haproxy是专门的负载均衡服务器,Apache和Nginx除了作为负载均衡服务器外,还可以作为独立的web服务器,直接提供web服务。
负载均衡服务在生产环境中的应用
在一个系统中,负载均衡服务往往是运行在系统最前面的应用,起着承载系统流量,请求转发,负载均衡的作用,下图是公司中常见的两种负载均衡服务的形式:
LVS作为入口的模式
在这种模式下,流量通过外层的LVS做四层负载均衡,然后经过nginx进行七层负载均衡,再转发给后端服务,后端可以根据需要直接接应用服务器或者在继续对接负载均衡服务,具体架构如下图所示:
上图是现在杭研大部分负载均衡服务的应用形式,即通过LVS集群的DR模式将流量分发到公用的Nginx集群,然后对接给后端用户。
场景分析
这种工作模式是针对一般的web应用设计的,LVS的单臂模式可以处理大量流量,而工作与后端的Nginx集群,可以通过限流等方式来防止DDos攻击,而通过共享IP,可以减少对外网IP资源的使用,而Nginx 的热加载功能可以在不更改LVS配置的情况下添加后端的用户服务器。
Haproxy作为入口的模式
这种模式是通过Haproxy进行四层负载均衡,后面对接web服务器或者其他负载均衡服务,架构如下图所示:
场景分析
这种场景主要是针对两种情况:
-
一种是当有大流量上传需求的时候(如网易相册),由于Nginx在处理Post请求的时候会写磁盘,当有大量上传请求的时候可能会造成磁盘写满从而请求失败的情况,因此在处理有大并发,大流量上传的时候,采用的是使用Haproxy集群,工作在七层负载均衡默认,用来处理用户的上传请求。
-
第二种是直接使用四层负载均衡,由于LVS的DR模式有网络的限制(必须在同一个二层),而且需要修改应用服务器的内容(绑定VIP,设定返回路由,关闭部分ARP响应)。而实际用户的服务器大部分不满足这两个条件,因此需要采用无侵入(基于FULL NAT模式),且无网络要求(基于四层协议)的Haproxy集群来满足这一需求。但是由于Haproxy的负载能力不如LVS(单进程模型,工作在用户模式,双向流量),因此会根据需要搭建多个Hapoxy集群。
-
在上面两个不同情况下,Haproxy工作的模式不同。在第一种情况,Haproxy工作在七层负载均衡模式下,负责HTTP请求转发。而第二种模式,Haproxy工作在四层负载均衡模式,相当于流量转发的左右,一般用来处理不需要获取原始IP的情况或者流量不是很大的情况。
总结
本文主要介绍了负载均衡服务的基础知识和公司中负载均衡服务的应用情况,在下一篇文章中,会对常用的负载均衡服务器:LVS,Haproxy,Nginx,Apache进行介绍。
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 “网易有钱”sketch使用分享