Linux集群之美
上QQ阅读APP看书,第一时间看更新

1.7 软件级负载均衡器的特点介绍与对比

现在网络负载均衡的使用状态是,根据网站规模的变化来使用不同的技术。

LVS、HAProxy、Nginx这些负载均衡器都是基于Linux的开源免费的负载均衡器,都是通过软件来实现的,所以费用非常低廉,但功能异常强大,所以推荐大家采用这种方案来实施自己网站的负载均衡需求。

可能有读者会担心软件级别的负载均衡在高并发流量冲击下的稳定情况,事实是我们通过成功上线高流量网站和系统案例发现,软件级别负载均衡的稳定性也是非常好的,宕机的可能性微乎其微,下面就它们的特点和适用场合分别说明。

LVS的特点是:

·抗负载能力强,工作在网络4层之上,仅作为分发之用,DR模式没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强。

·配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的概率。

·工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。

·无流量,保证了均衡器I/O的性能不会受到大流量的影响。

·应用范围比较广,可以对所有应用做负载均衡。

·软件本身工作在L4,所以是不支持正则处理的,当然也不能做动静分离了。

·现在多用于容器集群系统中的负载均衡,比如Kubernetes和Apache Mesos,也可用于集群内流量的负载均衡。

Nginx的特点是:

·工作在网络的7层之上,可以针对HTTP应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是大家喜欢它的原因之一。

·Nginx对网络的依赖非常小,理论上能正确执行ping命令就能进行负载功能,这也是它的优势所在。

·Nginx安装和配置比较简单,测试起来比较方便。

·可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量。

·Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等进行检测,并且会把返回错误的请求重新提交到另一个节点,不过其中的缺点就是不支持URL来检测。

·Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的Web架构,大有和以前最流行的LAMP架构分庭抗争之势,在高流量的环境中也有很好的效果。

·Nginx现在作为Web反向加速缓存越来越成熟了,不少读者已将其投入生产环境中,而且反映效果不错,速度比传统的Squid服务器更快,有兴趣的读者可以考虑用其作为反向代理加速器。

·目前Nginx更重要的用途就是结合Lua用于高并发的Web应用场景。

HAProxy的特点是:

·抗负载能力强,兼备4层和7层负载均衡的作用,可以代替LVS,4层负载均衡用于分发流量。

·HAProxy是支持虚拟主机的。

·能够弥补Nginx的一些缺点,比如Session的保持、cookie的引导等。

·支持URL检测后端出问题的服务器。

·它跟LVS一样,仅仅是一款负载均衡软件。单纯从效率上来讲HAProxy比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。

·HAProxy现在是Apache Mesos的重要组件,主要用于负载均衡(L4和L7代理均支持)。