本文出自 “抚琴煮酒” 博客,出处http://andrewyu.blog.51cto.com/1604432/697466

 

现在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术:
一种是通过硬件来进行进行,常见的硬件有比较昂贵的NetScaler、F5、Radware和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于LVS/HAProxy、Nginx的基于Linux的开源免费的负载均衡软件策略,这些都是通过软件级别来实现,所以费用非常低廉,所以我个也比较推荐大家采用第二种方案来实施自己网站的负载均衡需求。

近期朋友刘鑫(紫雨荷雪)的项目成功上线了,PV达到了亿级/日的访问量,最前端用的是HAProxy+Keepalived双机作的负载均衡器/反向代理,整个网站非常稳定;这让我更坚定了以前跟老男孩前辈聊的关于网站架构比较合理设计的架构方案:即Nginx/HAProxy+Keepalived作Web最前端的负载均衡器,后端的MySQL数据库架构采用一主多从,读写分离的方式,采用LVS+Keepalived的方式。

在这里我也有一点要跟大家申明下:很多朋友担心软件级别的负载均衡在高并发流量冲击下的稳定情况,事实是我们通过成功上线的许多网站发现,它们的稳定性也是非常好的,宕机的可能性微乎其微,所以我现在做的项目,基本上没考虑服务级别的高可用了。相信大家对这些软件级别的负载均衡软件都已经有了很深的的认识,下面我就它们的特点和适用场合分别说明下。

LVS:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability),感谢章文嵩博士为我们提供如此强大实用的开源软件。
LVS的特点是:
1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;
3、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived;
4、无流量,保证了均衡器IO的性能不会收到大流量的影响;
5、应用范围比较广,可以对所有应用做负载均衡;
6、软件本身不支持正则处理,不能做动静分离,这个就比较遗憾了;其实现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
7、如果是网站应用比较庞大的话,实施LVS/DR+Keepalived起来就比较复杂了,特别后面有Windows Server应用的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。

Nginx的特点是:
1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是许多朋友喜欢它的原因之一;
2、Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势所在;
3、Nginx安装和配置比较简单,测试起来比较方便;
4、也可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
5、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测;
6、Nginx仅能支持http和Email,这样就在适用范围上面小很多,这个它的弱势;
7、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的web架构,大有和以前最流行的LAMP架构分庭抗争之势,在高流量的环境中也有很好的效果。
8、Nginx现在作为Web反向加速缓存越来越成熟了,很多朋友都已在生产环境下投入生产了,而且反映效果不错,速度比传统的Squid服务器更快,有兴趣的朋友可以考虑用其作为反向代理加速器。

HAProxy的特点是:
1、HAProxy是支持虚拟主机的,以前有朋友说这个不支持虚拟主机,我这里特此更正一下。
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3、支持url检测后端的服务器出问题的检测会有很好的帮助。
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS,所以我向大家推荐LVS+Keepalived。
6、HAProxy的算法现在也越来越多了,具体有如下8种:
①roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
②static-rr,表示根据权重,建议关注;
③leastconn,表示最少连接者先处理,建议关注;
④source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注;
⑤ri,表示根据请求的URI;
⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name;
⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

转载于:https://www.cnblogs.com/davidwang456/p/3415082.html

软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比相关推荐

  1. 软件级负载均衡器(LVS/HAProxy/LVS)的特点简介和对比

    现在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术: 一种是通过硬件来进行进行,常见的硬件有比较昂贵的NetScaler.F5.Radware和Array等商用的 ...

  2. 【系统架构】三大主流软件负载均衡器(LVS、Nginx、HAproxy) 与商业SLB比较

    主流软件负载均衡概要: 1.LVS: 1. 抗负载能力强,性能高,能达到F5的60%,对内存和CPU资源消耗比较低     2. 工作在网络4层,通过VRRP协议(仅作代理之用),具体的流量是由lin ...

  3. 架构之软件负载均衡LVS、Nginx、Haproxy、Keepalived

    目前市面上最常见的负载均衡技术方案主要有三种: 基于DNS负载均衡, DNS负载均衡主要适用于的场景是多地集群的方式,也就是可能北京有一个数据中心,在其中部署了一整套的集群提供服务,在上海有一个数据中 ...

  4. LVS/HAProxy/Nginx负载均衡对比

    2019独角兽企业重金招聘Python工程师标准>>> 现在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术: 一种是通过硬件来进行进行,常见的硬 ...

  5. 三大主流软件负载均衡器(LVS、Nginx、HAproxy) 与商业SLB比较

    https://blog.csdn.net/xia296/article/details/87969837

  6. keepalived热备 keepalived+LVS Haproxy

    keepalived热备 keepalived概述 调度器出现单点故障,如何解决? keepalived实现了高可用集群 keepalived最初是为了LVS设计的,专门监控个服务器节点的状态 kee ...

  7. F5/LVS/Nginx/HAProxy硬软件级网络负载均衡介绍

    F5/LVS/Nginx/HAProxy硬软件级网络负载均衡介绍 1 硬件级的负载均衡 常见的商用硬件负载均衡器:NetScaler.F5.Radware.Array 优点: 1)专业团队维护,能够直 ...

  8. 三大主流软件负载均衡器对比(LVS VS Nginx VS Haproxy)

    2019独角兽企业重金招聘Python工程师标准>>> LVS: 1.抗负载能力强.抗负载能力强.性能高,能达到F5硬件的60%:对内存和cpu资源消耗比较低 2.工作在网络4层,通 ...

  9. Nginx/LVS/HAProxy 负载均衡软件的优缺点详解

    Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术,具体的应用需求还得具体分析. 如果是中小型的Web应用,比 ...

最新文章

  1. java实现线程间通信的四种方式
  2. python中的类及self详解_Python类class参数self原理解析
  3. hdu3695(AC自动机)
  4. 桩筏有限元中的弹性板计算_永清县打桩机租赁钢板桩租赁怎么联系?
  5. 基于代价函数小波脊相位的MFSK信号符号速率估计MATLAB仿真及代码(2020.12.14更新)
  6. 前端学习(2829):block标签的使用
  7. svm回归matlab工具箱很慢,PSO优化SVM参数进行回归预测,结果很不理想
  8. 互斥对象与关键代码段的比较
  9. Selenium API-鼠标与键盘事件
  10. Centos 5.6 安装subversion总结
  11. xmemcached的time out
  12. OpenCV关于隐马尔科夫模型的结构和函数
  13. 评价微型计算机有哪些主要性能指标,计算机性能指标有哪些
  14. Node图片识别文字
  15. 23MySQL 是怎么保证数据不丢的
  16. shapely图形合并
  17. Linux Realtek RTL8723BE驱动掉线重连不上问题解决
  18. VS2019不能安装的WIN10更新问题
  19. python excel xlwngs 受保护的视图解除方法
  20. Affiliate实战记录之一:CPI、CPA、CPM...名词解释

热门文章

  1. FFMpeg的基本用法
  2. SharedPointer
  3. python合并路径_python url合并与分离
  4. 文本打开方式和二进制打开方式的区别是什么?
  5. c++ 交换变量实践
  6. tf.broadcast_to
  7. 泊松方程与拉普拉斯方程数值解
  8. 116. Leetcode 1143. 最长公共子序列 (动态规划-子序列问题)
  9. 数据挖掘流程(二):数据预处理
  10. max函数的平滑(log-sum-exp trick)