加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

一文详解 LVS、Nginx 及 HAProxy 事变道理

发布时间:2018-12-20 22:36:40 所属栏目:业界 来源:今日头条
导读:当前大大都的互联网体系都行使了处事器集群技能,集群是将沟通处事陈设在多台处事器上组成一个集群整体对外提供处事,这些集群可所以 Web 应用处事器集群,也可所以数据库处事器集群,还可所以漫衍式缓存处事器集群等等。 在现实应用中,在 Web 处事器集群

LVS 的弱点

  • 软件自己不支持正则表达式处理赏罚,不能做新闻疏散;而此刻很多网站在这方面都有较强的需求,这个是 Nginx、HAProxy+Keepalived 的上风地址。
  • 假如是网站应用较量复杂的话,LVS/DR+Keepalived 实验起来就较量伟大了,相对而言,Nginx/HAProxy+Keepalived就简朴多了。

Nginx

Nginx 是一个强盛的 Web 处事器软件,用于处理赏罚高并发的 HTTP 哀求和作为反向署理处事器做负载平衡。具有高机能、轻量级、内存耗损少,强盛的负载平衡手段等上风。

一文详解 LVS、Nginx 及 HAProxy 事变道理

Nignx 的架构计划

相对付传统基于历程或线程的模子(Apache就回收这种模子)在处理赏罚并发毗连时会为每一个毗连成立一个单独的历程或线程,且在收集可能输入/输出操纵时阻塞。这将导致内存和 CPU 的大量耗损,由于新起一个单独的历程或线程必要筹备新的运行时情形,包罗堆和栈内存的分派,以及新的执行上下文,虽然,这些也会导致多余的 CPU 开销。最终,会因为过多的上下文切换而导致处事器机能变差。

反过来,Nginx 的架构计划是回收模块化的、基于变乱驱动、异步、单线程且非阻塞。

Nginx 大量行使多路复用和变乱关照,Nginx 启动往后,会在体系中以 daemon 的方法在靠山运行,个中包罗一个 master 历程,n(n>=1) 个 worker 历程。全部的历程都是单线程(即只有一个主线程)的,且历程间通讯首要行使共享内存的方法。

个中,master 历程用于吸取来自外界的信号,并给 worker 历程发送信号,同时监控 worker 历程的事变状态。worker 历程则是外部哀求真正的处理赏罚者,每个 worker 哀求彼此独立且划一的竞争来自客户端的哀求。哀求只能在一个 worker 历程中被处理赏罚,且一个 worker 历程只有一个主线程,以是同时只能处理赏罚一个哀求。(道理同 Netty 很像)

一文详解 LVS、Nginx 及 HAProxy 事变道理

Nginx 负载平衡

Nginx 负载平衡首要是对七层收集通讯模子中的第七层应用层上的 http、https 举办支持。

Nginx 是以反向署理的方法举办负载平衡的。反向署理(Reverse Proxy)方法是指以署理处事器来接管 Internet 上的毗连哀求,然后将哀求转发给内部收集上的处事器,并将从处事器上获得的功效返回给 Internet 上哀求毗连的客户端,此时署理处事器对外就示意为一个处事器。

Nginx 实现负载平衡的分派计策有许多,Nginx 的 upstream 今朝支持以下几种方法:

  • 轮询(默认):每个哀求定时刻次序一一分派到差异的后端处事器,假如后端处事器 down 掉,能自动剔除。
  • weight:指定轮询几率,weight 和会见比率成正比,用于后端处事器机能不均的环境。
  • ip_hash:每个哀求按会见 ip 的 hash 功效分派,这样每个访客牢靠会见一个后端处事器,可以办理 session 的题目。
  • fair(第三方):按后端处事器的相应时刻来分派哀求,相应时刻短的优先分派。
  • url_hash(第三方):按会见 url 的 hash 功效来分派哀求,使每个 url 定向到统一个后端处事器,后端处事器为缓存时较量有用。

Nginx 的利益

  • 跨平台:Nginx 可以在大大都 Unix like OS编译运行,并且也有 Windows 的移植版本
  • 设置非常简朴:很是轻易上手。设置气魄威风凛凛跟措施开拓一样,神一样平常的设置
  • 非阻塞、高并发毗连:官方测试可以或许支撑5万并发毗连,在现实出产情形中跑到2~3万并发毗连数
  • 变乱驱动:通讯机制回收 epoll 模子,支持更大的并发毗连
  • Master/Worker 布局:一个 master 历程,天生一个或多个 worker 历程
  • 内存耗损小:处理赏罚大并发的哀求内存耗损很是小。在3万并发毗连下,开启的10个 Nginx 历程才耗损150M 内存(15M*10=150M)
  • 内置的康健搜查成果:假如 Nginx 署理的后端的某台 Web 处事器宕机了,不会影响前端会见
  • 节减带宽:支持 GZIP 压缩,可以添加赏识器当地缓存的 Header 头
  • 不变性高:用于反向署理,宕机的概率微乎其微

Nginx 的弱点

  • Nginx 仅能支 持http、https 和 Email 协议,这样就在合用范畴上面小些,这个是它的弱点
  • 对后端处事器的康健搜查,只支持通过端口来检测,不支持通过 ur l来检测。不支持 Session 的直接保持,但能通过 ip_hash 来办理

HAProxy

HAProxy 支持两种署理模式 TCP(四层)和HTTP(七层),也是支持假造主机的。

HAProxy 的利益可以或许增补 Nginx 的一些弱点,好比支持 Session 的保持,Cookie 的引导;同时支持通过获取指定的 url 来检测后端处事器的状态。

HAProxy 跟 LVS 相同,自己就只是一款负载平衡软件;纯真从服从上来讲 HAProxy 会比 Nginx 有更精彩的负载平衡速率,在并发处理赏罚上也是优于 Nginx 的。

HAProxy 支持 TCP 协议的负载平衡转发,可以对 MySQL 读举办负载平衡,对后端的 MySQL 节点举办检测和负载平衡,各人可以用 LVS+Keepalived 对 MySQL 主从做负载平衡。

HAProxy 负载平衡计策很是多:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地点保持)、RI(哀求URL)、rdp-cookie(按照cookie)。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读