现在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术:

  一种是通过硬件来进行进行,常见的硬件有比较昂贵的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,表示最少连接者先处理,建议关注;

  ④ource,表示根据请求源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://blog.51cto.com/smartest/1340525

haproxy LVS nginx的比较相关推荐

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

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

  2. lvs(四层和七层)、haproxy、nginx性能比较

    文章目录 1.lvs(四层和七层) 七层各层简介: 四层各层简介: OSI七层和TCP/IP四层的区别 2 LVS优缺点 优点 缺点 3 nginx优缺点 优点 缺点 4 haproxy 特点 HAP ...

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

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

  4. LVS Nginx 负载均衡区别

    lvs nginx haproxy 对比 都可以做负载均衡: 工作方式和应用场景各有特点: lvs Linux 虚拟 服务: 1.可以应用支持协议: ftp http dns telnet smtp ...

  5. Java架构师成长直通车:LVS+Nginx实现高可用集群

    LVS+Nginx实现高可用集群 常见服务器 安装 Nginx(CentOS) Nginx 的进程模型 Nginx 事件处理 nginx.conf 核心配置文件 Nginx 的跨域配置和防盗链 负载均 ...

  6. LVS+Nginx实现高可用集群

    LVS+Nginx实现高可用集群 常见服务器 [安装 Nginx(CentOS)](#安装 Nginx(CentOS)) [Nginx 的进程模型](#Nginx 的进程模型) [Nginx 事件处理 ...

  7. Keepalived+LVS+Nginx负载均衡之高可用

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致 ...

  8. Redhat5下haproxy+keepalived+nginx配置笔记

    Redhat5下haproxy+keepalived+nginx配置笔记 ----by knight HA:高可用性 keepalived个人简单理解就是实现一个虚IP在keepalived主从服务器 ...

  9. LVS + Nginx +Tomcat 高可用架构

    1.NGINX 实现负载均衡 2.Keepalived搭建NGINX高可用集群 3.LVS+"NGINX高可用集群"实现高并发 4.LVS双主实现高可用高并发

最新文章

  1. pandas 模块学习
  2. 初中计算机word试题,初中计算机会考word试题WORD11
  3. python绘制函数怎么去掉原点_python – 更改绘图的原点
  4. C语言 | 编译与预处理指令(宏定义完整讲解:#define)
  5. bgi::detail::is_valid用法的测试程序
  6. ubuntu下面解决mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists
  7. asp.net mvc 缓存CaChe使用
  8. 2020云栖大会编程限时抢答赛 - 早中晚3场题解
  9. 虚构合同、虚开发票套取高校配套科研经费,一副教授被公诉!
  10. win10安装oracle12c注意事项,win10系统安装oracle 12c出现ins-30131错误的修复办法
  11. android 阻塞式函数,Android之PC浏览器上传表单格式大文件到手机客户端read函数阻塞问题...
  12. dcmtk在PACS开发中的应用(基础篇) 作者:冷家锋 第三章 工作列表(Work List)(一)...
  13. Kafka Streams简介: 让流处理变得更简单
  14. cassandra学习笔记三
  15. 如何检测VC运行库是否安装
  16. python在linux系统下的编辑编译运行
  17. Docker--一门值得你学习的手艺
  18. “New”一个完美对象,再来好好面向对象
  19. 内存测试(ubuntu)
  20. C# 制作excel图表

热门文章

  1. Spring Boot 2.3.0 发布:支持Java14、打包Docker镜像、优雅关机配置...
  2. 硬核干货:一位码农的架构师封神之路!
  3. GTA 5 + AI = ?
  4. 95后程序员月薪2万背着电脑送外卖,送单途中改Bug
  5. ResNeSt之语义分割,ADE20K全新SoTA 47.6%
  6. 网传BAT等大厂2020校招传统大厂白菜价!
  7. B站学强化学习?港中文周博磊变身up主,中文课程已上线
  8. 知乎讨论:有必要将所有机器学习算法都实现一遍吗?
  9. 30 段极简 Python 代码:这些小技巧你都 Get 了么?
  10. 程序猿才感同身受的10个图!