【转】浅谈Nginx负载均衡与F5的区别

前言web

笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5做为处理外界请求的第一道“墙”,将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则经过反向代理指向内网服务。算法

 

 

李源1.png

其实Nginx和F5这二者都可用做网站负载均衡,那两者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别。缓存

目前不少网站或应用在设计之初都会为高并发的数据请求作负载均衡,不差钱的土豪用户通常会直接买F5硬件设备做为其负载均衡器,缘由不用多说,其功能强大,不只包含负载均衡还包括应用交换、会话交换、状态监控、智能网络地址转换、通用持续性、响应错误处理、IPv6网关、高级路由、智能端口镜像、SSL加速、智能HTTP压缩、TCP优化、第7层速率整形、内容缓冲、内容转换、链接加速、高速缓存、Cookie加密、选择性内容加密、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护、防火墙过滤等功能,是否是很强大?固然价格也是让人很“心动”。而一些预算并不高,正在初期发展的网站来讲,Nginx这种软负载也能很好的知足其数据分流的需求,下面咱们先来看看Nginx是如何知足咱们的负载均衡需求的:服务器

1、什么是Nginx:网络

Nginx:高性能的 HTTP和反向代理服务器,同时支持做为IMAP/POP3/SMTP代理服务器。目前被不少网站应用为其HTTP软负载均衡器。高效的性能、良好的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗正逐渐被大型互联网公司所青睐。例如腾讯、淘宝、新浪等大型门户及商业网站都采用Nginx进行HTTP网站的数据分流。架构

2、Nginx功能特色:并发

一、工做在网络的7层之上,能够针对http应用作一些分流的策略,好比针对域名、目录结构;负载均衡

二、Nginx对网络的依赖比较小;异步

三、Nginx安装和配置比较简单,测试起来比较方便;高并发

四、能够承担高的负载压力且稳定,通常能支撑超过1万次的并发;

五、Nginx能够经过端口检测到服务器内部的故障,好比根据服务器处理网页返回的状态码、超时等等,而且会把返回错误的请求从新提交到另外一个节点,不过其中缺点就是不支持url来检测;

六、Nginx对请求的异步处理能够帮助节点服务器减轻负载;

七、Nginx能支持http和Email;

3、原理

Nginx采用的是反向代理技术,代理服务器来接受internet上的链接请求,而后将请求转发给内部网络上的服务器,并将从服务器上获得的结果返回给internet上请求链接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把未来自internet上的链接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

具体是怎么运行的呢?其实当Nginx启动后,其工做进程是由配置文件对其进行初始化的,主进程处理配置文件中的读取、端口绑定等特权操做,以后建立一小组子进程,由这些子进程进行请求的处理,同时缓存加载器加载硬盘中缓存到内存中,接着退出,保证资源开销始终保持着较低的状态。

能够看出,建立的子进程其实在负责全部的工做,处理网络链接、硬盘读写操做、以及上游服务器通讯。

如图所示:masert process是其主线程,worker process 顾名思义,“我是具体干活的啦”,笔者截图的进程仍是比较少的,由于这是本身的服务器,没有太多服务,实际业务中有可能会出现几十个worker process,仍是挺壮观的。

22.png

Nginx推荐的配置是,一个工做进程对应一个CPU内核,确保硬件资源的有效利用。

一旦NGINX服务起来,仅有工做进程在忙,每一个工做进程采用非阻塞地方式处理多个链接,下降上下文切换的次数。

每一个工做进程都是单线程且独立运行,负责获取新链接并进行处理。进程之间经过共享内存进行通讯,诸如缓存数据,会话持续化数据(ession persistence data),以及其余共享资源。

4、F5的负载均衡功能

其实看到Nginx的原理和功能,是否是以为已经不须要F5了?固然也不是,F5毕竟是负载均衡的老前辈,一直以来都以功能强大,性能稳定著称,不少功能实际上是软负载没法作到的。

F5 BIG-IP用做HTTP负载均衡器的主要功能:

一、F5 BIG-IP提供12种灵活的算法将全部流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器。

二、F5 BIG-IP能够确认应用程序可否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务中止、死机等故障,F5会检查出来并将该服务器标识为宕机,从而不将用户的访问请求传送到该台发生故障的服务器上。这样,只要其它的服务器正常,用户的访问就不会受到影响。宕机一旦修复,F5 BIG-IP就会自动查证应用保证对客户的请求做出正确响应并恢复向该服务器传送。

三、F5 BIG-IP具备动态Session的会话保持功能,笔者也是在网站中使用的F5将用户IP与Session经过F5进行的绑定,使其Session保持一致。

四、F5 BIG-IP的iRules功能能够作HTTP内容过滤,根据不一样的域名、URL,将访问请求传送到不一样的服务器。

5、两者对比

F5,硬件

优势:可以直接经过智能交换机实现,处理能力更强,并且与系统无关,负载性能强,更适用于一大堆设备、大访问量、简单应用。

缺点:成本高,除设备价格高昂,并且配置冗余,很难想象后面服务器作一个集群,但最关键的负载均衡设备倒是单点配置,没法有效掌握服务器及应用状态。

硬件负载均衡,通常都无论实际系统与应用的状态,而只是从网络层来判断,因此有时候系统处理能力已经不行了,但网络可能还来得及反应(这种状况很是典型,好比应用服务器后面内存已经占用不少,但尚未完全不行,若是网络传输量不大就未必在网络层能反映出来)

Nginx,软负载

优势:基于系统与应用的负载均衡,可以更好地根据系统与应用的情况来分配负载。这对于复杂应用是很重要的,性价比高,实际上若是几台服务器,用F5之类的硬件产品显得有些浪费,而用软件就要合算得多,由于服务器同时还能够跑应用、作集群等。

缺点:负载能力受服务器自己性能的影响,性能越好,负载能力越大。

结语

其实仍是如笔者最初说到的,若是不差钱,彻底能够直接上F5,同时配以Nginx做为负载均衡及web容器,处理大数据量的用户并发彻底没问题,若是预算不够,其实Nginx目前也能知足大多数用户需求了,固然也不能迷信负载均衡,对咱们IT工做者来讲的话,程序、SQL等涉及数据处理的业务逻辑的地方,不管是架构仍是代码亦或是模型的合理性,其重要性永远是要高于中间件的,这点想必是每位ITer的共鸣。

相关文章
相关标签/搜索