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

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

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

一、什么是Nginx:

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

二、Nginx功能特点:

1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;

2、Nginx对网络的依赖比较小。

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

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

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

6、Nginx对请求的异步处理可以帮助节点服务器减轻负载。

7、Nginx能支持http和Email。

三、原理

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

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

可以看出,创建的子进程其实在负责所有的工作,处理网络连接、硬盘读写操作、以及上游服务器通信。

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

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

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

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

四、F5的负载均衡功能

其实看到Nginx的原理和功能,是不是觉得已经不需要F5了?当然也不是,F5毕竟是负载均衡的老前辈,一直以来都以功能强大,性能稳定著称,很多功能其实是软负载无法做到的。

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

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

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

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

4、F5 BIG-IP的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。

五、二者对比

F5,硬件

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

缺点:成本高( 3W美金+ 参考:
http://top.zol.com.cn/compositor/517/manu_32315.html),除设备价格高昂,而且配置冗余,很难想象后面服务器做一个集群,但最关键的负载均衡设备却是单点配置,无法有效掌握服务器及应用状态。

硬件负载均衡,一般都不管实际系统与应用的状态,而只是从网络层来判断,所以有时候系统处理能力已经不行了,但网络可能还来得及反应(这种情况非常典型,比如应用服务器后面内存已经占用很多,但还没有彻底不行,如果网络传输量不大就未必在网络层能反映出来)

Nginx,软负载

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

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

结语

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

六、F5产品选择
F5 Global Traffic Manager(以下简称 F5 GTM),F5 GTM负载均衡器是全球领先的负载均衡技术产品,包括完整的智能DNS功能,可充分利用GTM各种算法,LTM、GTM的协同实现包括链路可用性探测、链路性能探测、Server性能探测,静动态算法均可使用,从而可充分合理的分配每条链路、数据中心的使用,为用户对数据中心的访问提供最优的体验 ,提升应用的可靠性和可用性。

F5 LTM。站点内的负载均衡使用SLB实现,本方案中SLB使用F5 LTM部署,支持http/https、FTP、Diameter、SMPP、SIP协议等大量应用层协议的负载均衡健康检测。SLB对外提供的业务接口(包括IP地址和端口),接收来自客户端的业务请求。

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,

咱们下期见!学习更多JAVA知识与技巧,关注与私信博主(666)

有软件负载均衡,也有硬件负载均衡,选择哪个?相关推荐

  1. DNS 负载均衡、硬件负载均衡和软件负载均衡

    当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能. 高性能集群的复杂性主要体现在需要增加一个任务分配器,以及为任务选择一个合适的负载均衡器.负载均衡不只是为了计算单元的 ...

  2. 软件负载均衡和硬件负载均衡的选择

    有软件负载均衡,也有硬件负载均衡,选择哪个? 数据流量过大的网络中,单一设备一般是无法承担的,需要多台设备进行数据分流,而负载均衡器就是起到把数据分流到多台设备的作用. 负载均衡也分了不少技术,用以满 ...

  3. 软/硬件负载均衡产品 你知多少?

    随着人们对网络的需求越发强烈,不同行业,不同类别的网站越来越多.以Web为核心的业务平台,对于网站的稳定性来说有着比较高的要求.伴随着核心业务的扩展,访问量和数据流的增加,单纯的网络架构有时候就显得捉 ...

  4. linux负载均衡(什么是负载均衡)

    linux负载均衡(什么是负载均衡) 一.总结 一句话总结: 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用 ...

  5. coturn的负载均衡特性_高性能负载均衡

    单服务器无论如何优化,无论采用多好的硬件,总会有一个性能天花板,当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能. 高性能集群的本质很简单,通过增加更多的服务器来提升系 ...

  6. 使用负载均衡技术建设高负载的网络站点(经典文章)

    Internet的快速增长使多媒体网络服务器,特别是Web服务器,面对的访问者数量快速增加,网络服务器需要具备提供大量并发访问服务的能力.例如Yahoo每天会收到数百万次的访问请求,因此对于提供大负载 ...

  7. 利用集群技术实现Web服务器的负载均衡 集群和负载均衡的概念

    集群和负载均衡的概念 集群(Cluster) 所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信.应用程序可以通过网络共享内存进行消息传送,实现分布式计算 ...

  8. 客户端负载均衡与服务端负载均衡

    原文:https://segmentfault.com/a/1190000011081111 通过Nginx负载均衡服务器发送到不同的上游服务器去处理,这种负载均衡就是一种典型的服务端负载均衡,那么客 ...

  9. 负载均衡集群 [ 1 ] ---集群的认识,四层负载,七层负载 ,LVS 实现四层负载均衡

    文章目录 负载均衡集群 1.集群是什么? 2.负载均衡集群技术 3.负载均衡集群技术的实现 4.负载均衡分类 5.四层负载均衡(基于IP+端口的负载均衡) 6.七层的负载均衡(基于虚拟的URL或主机I ...

最新文章

  1. 算法导论之排序和顺序统计学
  2. pycharm short-cut
  3. Python字符串笔录
  4. mysql 8.0 一条insert语句的具体执行流程分析(二)
  5. 分布式集群架构场景解决方案学习笔记
  6. haproxy对redis进行负载均衡
  7. Jeecg-Uniapp 移动框架开发环境搭建—— APP解决方案
  8. 信息学奥赛一本通C++语言——1045:收集瓶盖赢大奖
  9. 18110 Koishi's travel, Satori's travel
  10. 微信团队分享:微信支付代码重构以及软件架构上的思考
  11. DJI Onboard-SDK-ROS-4.0.1 在妙算2-G上编译运行
  12. 威联通TS-453Bmini NAS加装内存,轻松玩转虚拟机安装win10系统
  13. android img 解包打包工具,Android系统system.img解包和重新打包
  14. 卡耐基梅隆大学计算机熬夜,美国25所著名大学学生平均作息时间表 原来留学生的日子也不好过!...
  15. QGIS-创建QGIS项目
  16. [安卓]安装低版本微信
  17. JavaScript(1)——基础语法部分(CSDN)
  18. Camera2 openCamera 流程分析
  19. 35岁失业了,我该何去何从怎么选择?
  20. mysql 安装 知乎_知乎问答3-MySQL安装详解

热门文章

  1. 企业人才战略2.0 相信技术人的力量
  2. 第2章 蓝牙降噪耳机测试维度
  3. 一文看懂 LSTM(Long Short-Term Memory)
  4. linux 编译安装TRMPdump(libRTMP)
  5. Javascript特效:点名册(随机点名)
  6. mysql中创建数据表
  7. 以下是一些常用的上位机开发工具:
  8. 读书笔记-袁腾飞讲高效学习法
  9. C++ Primer Plus 自学第六章结尾编程9题
  10. bms中soh计算方式_原创丨BMS算法中关于健康状态(SOH)的模型设计