想实现高可用?先搞定负载均衡原理

在互联网大行其道的今天,跟着买卖的迅猛增进,手艺上我们经常要面临高并发,大流量。

[原文来自:www.ii77.com]


图片来自 Pexels [原文来自:www.ii77.com]


为了实现高可用,高机能我们采用了好多的手艺手段,负载平衡就是个中之一。作为外部流量与内部应用的“接引者”,它占有了主要的地位。


我们是否认识整个负载平衡手艺?它的分类?它的道理?它的特点?今天让我们一路来座谈负载平衡吧。


负载平衡的分类


谈到负载平衡,人人都邑想到 Nginx,平日我们会用它做应用办事的负载平衡。


一样它的并发量在 5W 摆布,若是并发量再高就需要做 Nginx 的集群了。但 Nginx 之上还有一层负载平衡器,是它把收集恳求转发给 Nginx 的,同时还会肩负收集链路,防火墙等工作。


它就是“硬件负载平衡器”,一样安装在外部收集与内网办事器之间。对照风行的有 NetScaler,F5RadwareArray 等产物。

硬件负载平衡器在外网和内网之间


相对于“硬件负载平衡器”来说,对内网办事器进行负载平衡就属于“软件负载平衡器”。例如:LVS,HAProxy,Nginx。


硬件负载平衡工作在“接入层”,首要义务是多链路负载平衡,防火墙负载平衡,办事器负载平衡。


软件负载平衡工作在“代理层”,首要义务是反向代理,缓存,数据验证等等。

硬件负载平衡和软件负载平衡工作在分歧的层


硬件负载平衡在接入层获得收集恳求,然后转交给软件负载平衡,用同样的体式处理返回的恳求。

接入层,代理层,应办事器示意图


我们知道了负载平衡分为“硬件负载平衡”和“软件负载平衡”,那么来一一看看他们是若何工作的吧。


硬件负载平衡


既然前面提到了负载平衡器的分类,那么我们就来聊聊他们的特点。硬件负载平衡手艺只专注收集判断,不考虑买卖系统与应用使用的情形。


看上去它对处理收集恳求是非常专业的,但有趣的是,若是应用办事显现了流量瓶颈,而“接入层”的硬件负载平衡没有发现非常,照样让流量持续进入到应用办事器,并没有阻止,就会造成应用办事器流量过大。


所以,为了包管高可用,能够在“接入层”和“代理层”同时考虑限流的问题。


作为硬件负载平衡器,常在大企业使用。下面我们以 F5 公司的“F5 BIG-IP”产物为底本给人人介绍(下面简称 F5)


实际上它是一个集成的终局方案,对于研发的同窗来说,首要懂得其道理。


硬件负载平衡器三大功能


上面谈到硬件负载平衡器的感化和特点,它具备哪三大功能?实现道理又是如何的?


①多链路负载平衡

要害买卖都需要放置和设置多条 ISP(收集办事供给商)接入链路来包管收集办事的靠得住性。


若是某个 ISP 住手办事或许办事非常了,那么能够行使另一个 ISP 替代办事,提高了收集的可用性。


分歧的 ISP 有分歧自治域,是以需要考虑两种情形:

  • INBOUND

  • OUTBOUND


INBOUND,来自收集的恳求信息。F5 离别绑定两个 ISP 办事商的公网地址,解析来自两个 ISP 办事商的 DNS 解析恳求。


F5 能够凭据办事器状况和响应情形对 DNS 进行发送,也能够经由多条链路离别竖立 DNS 保持。


OUTBOUND,返回给恳求者的应答信息。F5 能够将流量分派到分歧的收集接口,并做源地址的 NAT(收集地址转换),即经由 IP 地址转换为源恳求地址。


也能够用接口地址主动映射,包管数据包返回时可以被泉源准确领受。

多路负载的体式增加了收集接入层的靠得住性


②防火墙负载平衡

针对大量收集恳求的情形,单一防火墙的能力就有限了,并且防火墙自己要求数据同进同出,为认识决多防火墙负载平衡的问题,F5 提出了防火墙负载平衡的“防火墙三明治"方案。


防火墙会对用户会话的双向数据流进行监控,从而确定命据的正当性。若是接纳多台防火墙进行负载平衡,有或者会造成统一个用户会话的双向数据在多台防火墙上都进行处理。


而单个防火墙上看不到完成用户会话的信息,就会认为数据不法是以甩掉数据。


所以在每个防火墙的两头要架设四层交流机,能够在作流量分发的同时,维持用户会话的完整性,使统一用户的会话由一个防火墙来处理。而这种场景就需要 F5 负载平衡器协助才能完成转发。


有趣的是,F5 协调上述方案的设置和实现后,会把“交流机”,“防火墙”,“交流机”夹在了一路似乎三明治一般。

防火墙“三明治”


③办事器负载平衡

在硬件负载平衡器挂接多个应用办事器时,需要为这些办事做负载平衡,凭据划定,让恳求发送到办事器上去:

  • 对于办事器的负载平衡的前提是,办事器都供应同样的办事,也就是同样的买卖同时布置在多个办事器上。

  • 对于应用办事器能够在 F5 上设置而且实现负载平衡,F5 能够搜检办事器的健康状况,若是发现故障,将其从负载平衡组中移除。

  • F5 对于外网而言有一个真实的 IP,对于内网的每个办事器都生成一个虚拟 IP,进行负载平衡和治理工作。是以,它可以为大量的基于 TCP/IP 的收集应用供应办事器负载平衡办事。

  • 凭据办事类型分歧界说分歧的办事器群组。

  • 凭据分歧办事端口将流量导向对应的办事器。甚至能够对 VIP 用户的恳求进行特别的处理,把这类恳求导入到高机能的办事器使 VIP 客户获得最好的办事响应。

  • 凭据用户接见内容的分歧将流量导向指定办事器。


优瑕玷总结


聊完了硬件负载平衡器的特点和功能今后,让我们来总结一下它的优瑕玷:
  • 长处:直接保持交流机,处理收集恳求能力强,与系统无关,负载机能强。能够应用于大量举措,适应大接见量、使用简洁。

  • 瑕玷:成本高,设置冗余。即使收集恳求分发到办事器集群,负载平衡举措倒是单点设置;无法有效把握办事器及应使用状况。


软件负载平衡


说完硬件负载平衡,再来谈谈软件负载平衡。软件负载平衡是指在一台或多台办事器的把持系统上安装一个或多个软件来实现负载平衡。


它的长处是基于特定情况,设置简洁,使用天真,成本低廉,能够知足一样的负载平衡需求。

代理层平日起到承上启下的感化,上连“接入层”,下策应用办事器(上游办事器),能够做反向代理,缓存,数据验证,限流。本文会一一为列位介绍。

今朝市面上对照风行的软件负载平衡有 LVS,HAProxy,Ngnix。因为篇幅有限我们经由应用普遍的 Nginx 为切入点,给人人讲解,之后会把上面三类软件进行一个对比。


功能描述和道理剖析


对于法式员来说,接触最多的就是软件负载平衡。不光要知道若何使用,同时也要认识背后的道理,下面列举了其最常用到的 4 大功能。


①反向代理与负载平衡


第一个功能是反向代理与负载平衡,如下图:

客户端是若何把恳求发送到应用办事器的

客户端把恳求发送到应用办事器有如下几个步伐:
  • 客户端恳求 URL 给 DNS。

  • DNS 将 URL 转化成对应的 IP。

  • 经由 IP 找到办事器。

  • 办事器接管到恳求的报文,转交给接入层处理,接入层因为采用了硬件负载平衡器,所以可以扛住大数据量。

  • 接入层把报文再次转交给代理层(并发 5W),代理层的 Nginx 收到报文再凭据反向代理的策略发送给上游办事器(应用办事器)。


负载平衡的算法/策略


实际上负载平衡的算法是好多的,这里以 Nginx 为例,介绍五种算法:
  • Round-Robin轮询算法,默认算法。对上游的办事器进行挨个轮询,这个算法是能够合营 Weight(权重)来实现的。

  • Weight:权重算法,给应用办事器设置 Weight 的值。Weight 默认值为 1,Weight 参数越大被接见的几率越大。能够凭据办事器的设置和资源情形设置 Weight 值,让资源情形乐观的办事器承担更多的接见量。

  • IP-Hash这个算法能够凭据用户 IP 进行负载平衡,统一 IP 的用户端恳求报文是会被统一台上游办事器响应的。也就是让统一客户端的回话(Session)连结一致。

  • Least_conn把恳求转发给保持数较少的后端办事器。轮询算法是把恳求平均的转发给各个后端,使它们的负载大略沟通;然则,有些恳求占用的时间很长,会导致其地点的后端负载较高。这种情形下,Least_conn 这种体式就能够达到更好的负载平衡结果。

  • Hash Key:这个算法是对 Hash 算法的增补,首要是考虑当显现上游办事器增加/删除的情形,恳求无法准确的被统一办事器处理。

    所以对每个恳求都设置 Hash Key,如许就算办事器发生了转变,Key 的值没有变,也能够找到对应的办事器。


②动态负载平衡

一样上游办事器都采用微办事的架构,那么负载平衡会把数据报发给哪个办事呢?若是办事显现了问题若何通知负载平衡器呢?有新的办事..怎么办呢?

动态负载平衡流程

微办事首先会..到“办事..发现”中心(Consul,Eureka)..中心包含微办事的信息,Nginx 会按期从这里拉取办事信息(Lua)


获取微办事信息今后,Nginx 收到数据报的时候,就能够从..中心获取的办事地址,把信息传递给办事了。

③限流

限流的工作能够在接入层用硬件负载平衡器来完成,也能够在代理层来完成。

限流实际上就是限制流入恳求的数量,其算法不少,有令牌桶算法,漏桶算法,保持数限制等等。这里我们就介绍三个常用的。一样经由 Nignx+Lua 来实现。

保持数限流:经由 ngx_http_limit_conn_module 模块实现。设置最大的保持数以及共享内存的区域巨细,恳求的时候判断是否跨越了最大保持数。


若是跨越最大保持数就被限流,不然针对保持数就 +1,恳求竣事今后会将保持数 -1。

漏桶算法:经由 ngx_http_limit_req_module 模块实现。一个固定容量的桶,数据报按照固定的速度流出。


数据报能够按照随意的速度流入桶中,若是数据报的容量跨越了桶的容量,再流入的数据报将会被丢弃。

按照这个划定,需要设置限流的区域以及桶的容量,以及是否延迟。

漏桶策略

令牌桶算法,桶的巨细是固定的,以固定的速度往桶里丢令牌。桶满了后,后背添加的令牌无法添加。

数据报到来时从桶中取令牌,若是桶中有令牌,凭借令牌处理恳求,处理完毕令牌销毁;数据报到来时发现桶中没令牌,该恳求将被拒绝。

恳求在发往令牌桶之前需要经由过滤/分类器,能够对报文进行分类,例如:某类报文能够直接发往应用办事器,某类报文需要经由令牌桶获取令牌今后才能发。


又例如:VIP 就能够直接把恳求发往办事器,用不着经由令牌桶。

令牌桶示意


④缓存

Nginx 内陆缓存机制

接入层发送恳求,若是可以在 Nginx 内陆缓存射中,直接返回缓存数据,若是没有射中回源到应用办事器。

缓存更新办事器准时更新 Nginx 内陆缓存信息。这些需要考虑数据的一致性,何时更新以及何时失效等情形。

Nginx 缓存能够大大提高恳求响应时间,能够把不经常更改的信息,例如:用户信息,提前放入缓存中,每次恳求就不消再去恳求应用办事器了。一旦用户信息更新,能够按照必然时钟频率写入缓存中。

此外,一样 HTTPHEAD 中都带有一些信息更新的信息。Nginx 也能够经由 expires,etag,if-modified-since 来实现浏览器缓存的掌握。


其他的几个功能如下:

  • 客户端超时重试

  • DNS 超时重试

  • 代理超时重试

  • 失败重试

  • 心跳检测

  • 设置上有办事器


风行的软件负载平衡器


今朝对照风行的有 LVS,Nginx 和 HAProxy,逐个看看他们的特点。


LVS


LVS(Linux Virtual Server) 是使用 Linux 内核集群实现的一个高机能、高可用的负载平衡办事器,它具有很好的可伸缩性(Scalability)、靠得住性(Reliability)和可治理性(Manageability)。

LVS 特点是:
  • 仅作分发之用,即把恳求直接分发给应用办事器,是以没有流量的发生,对资源的消费低。

  • 设置简洁,可以设置的项目少。

  • 工作在第四层(传输层),支撑 TCP/UDP,对应用的支撑普遍。


HAProxy


HAProxy 实现了一种事件驱动, 单一历程模型,此模型支撑非常大的并发保持数。

多历程或多线程模型受内存限制 、系统调剂器限制以及无处不在的锁限制,很少能处理数千并发保持。

HAProxy 特点是:
  • 支撑虚拟主机。

  • 支撑 Session 连结,Cookie 指导。

  • 经由指定的 URL 来检测应用办事器的状况。

  • 支撑 TCP/HTTP 和谈转发。


Nginx


Nginx 是一款轻量级的 Web 办事器/反向代理办事器及电子邮件(IMAP/POP3)代理办事器,并在一个 BSD-like 和谈下刊行。

Nginx 特点是:
  • 工作在收集的 4/7 层,对 HTTP 应用做负载平衡策略,如:域名、目录构造。

  • 对收集的不乱性依靠小,能够区分内网和外网的接见。

  • 安装和设置相对简洁。

  • 能承受很高负载且不乱,处理的流量依靠于按照 Nginx 办事器的设置。

  • 能够检测办事器的问题,能够对办事器返回的信息进行处理和过滤,避免让无法工作的办事器响应恳求。

  • 对恳求能够进行异步处理。

  • 支撑 HTTP、HTTPS 和 EMAIL。


收集负载平衡的手艺选型


既然上面临软/硬件负载平衡有了总体的认识,那么按照“手艺办事买卖”的原则,在买卖成长的分歧阶段,若何使用这两类负载平衡手艺呢?


成长阶段


企业买卖从 0 到 1,从无到有,数据量和接见量都不大。Nginx 或 HAProxy 进行单点的负载平衡就已经充沛了。

这阶段方才采用多台应用办事器、数据库,需要必然的负载平衡做撑持。因为买卖量不大,所以没有专业的维护团队来维护,也没有大规模的网站布置的需求。

是以 Nginx 或 HAproxy 是第一选择,因为其上手快, 设置轻易,在七层之上行使 HTTP 和谈就能知足要求了。


扩张阶段


跟着买卖量增大,用户接见和生意量也在慢慢增加,这时单点的 Nginx 或 HAProxy 已经无法知足之前的需求了。


使用 LVS 或许硬件负载平衡(F5/Array)就是架构师需要考虑的问题了,Nginx 此时就作为 LVS 或许硬件负载平衡(F5/Array)的节点来处理。


软件负载平衡+硬件负载平衡的架构设置在这个阶段就需要考虑了,也是对架构设计者的挑战。

成熟阶段


跟着公司买卖扩张达到巅峰,之前的收集办事已经升级成主流办事产物,需要考虑在开源产物长进行买卖定制,所以开源的 LVS,已经成为首选。其在深度定制之后依旧会和硬件负载平衡器合营完成买卖办事。

总结


今天内容对照多,总结下来,三句话:
  • 硬件和软件负载平衡,离别工作在“接入层”和“代理层”。
  • 一个专注于收集,负责多链路,防火墙以及办事器的负载平衡,例如:F5 BIG-IP。
  • 另一个倾向于买卖,首要功能是反向代理,动态代理,缓存,限流,例如:LVS,Nginx,HAProxy。

作者:崔皓

简介:十六年斥地和架构经验,曾担当过惠普武汉交付中心手艺专家,需求剖析师,项目司理,后在创业公司担当手艺/产物司理。擅长进修,乐于分享。今朝专注于手艺架构与研发治理。

编纂:陶家龙、孙淑娟

征稿:有投稿、追求报道意向手艺人请联络 editor@51cto.com

出色文章介绍:

面试不再慌!跟着老司机吃透Spring Cloud
大白话解读“中台”,我收藏后读了3遍
每秒万万级实时数据处理系统是若何设计的?

热门文章

  1. 桂林旅游:董事兼副总裁訚林被开除党籍2024-05-14
  2. 圣元环保:子公司投资11.66亿元建设化学药品(食品)原料及食品、药品健康产业项目2024-05-14
  3. 阿里巴巴:截至3月底,2024财年营收为9411.7亿元,同比增8%2024-05-14
  4. 阿里巴巴财报公布后美股盘前跌超3%2024-05-14
  5. 阿里巴巴:截至2024年3月31日员工总数为204891人2024-05-14
  6. 阿里巴巴:董事会已批准2024财年派发股息40亿美元2024-05-14
  7. 时代出版:拟向国联证券出售民生证券7347.53万股股份,并以此认购国联证券新增发行的A股2024-05-14
  8. 晶科能源:向德国最大光伏项目交付超110万块Tiger Neo组件2024-05-14
  9. 索菲亚:子公司拟出售民生证券2.93亿股股份,并以此认购国联证券新增发行的A股2024-05-14
  10. 专家解读 | 深入打好净土保卫战的新阶段2024-05-14
  11. A股今日22只个股获主力资金净流入超1亿元,汤姆猫净流入7.3亿元2024-05-14
  12. 交通银行:刘珺辞去公司副董事长、执行董事、行长等职务2024-05-14
  13. 赛力斯:问界新M5将于5月15日开启交付2024-05-14
  14. 科大讯飞在新加坡设立区域总部2024-05-14
  15. 中国医药:董事长李亚东、副董事长汪晓辞职2024-05-14
  16. 北向资金今日净卖出66.7亿元,立讯精密净买入额居首2024-05-14
  17. 2天1板思维列控:目前生产经营活动正常2024-05-14
  18. 南向资金今日净卖出1.15亿港元,中国银行逆势获净买入7亿港元2024-05-14
  19. 中国铁建:近期中标重大项目合计611.54亿元2024-05-14
  20. 泰坦智华科技:公司的上市地位5月17日起予以取消2024-05-14
自媒体 微信号:ii77 扫描二维码关注公众号
爱八卦,爱爆料。

小编推荐

  1. 1 华为发布业界算力最强AI芯片Ascend 910 构建全栈全场景AI解决方案

    8月23日下昼,华为在深圳总部发布了业内算力最强的自研AI芯片——Ascend 910(昇腾910),并公布正式商用。 同时,华为还推出了与之配套的深度进修较量框架MindSpore,周全对标谷歌Te

  2. 2 【聚焦】最强AI对标谷歌、英伟达 华为昇腾910 EUV7+纳米“出鞘”

    10个月前,华为轮值董事长徐直军在华为全联接大会上提出全栈全场景AI解决方案,以及发布了昇腾系列的AI芯片昇腾310(Ascend 310)和昇腾910(Ascend 910),十个月后,昇腾910于今日(2

  3. 3 5G用户,听说你们要被“抢”了!

    5G终端真的来了,在5G派司发放不久后,运营商的5G终端起头面向消费者开放体验,首当其冲的5G终端依然是手机。 固然三大运营商都在尽心尽力争夺2020年5G商用,然则在商用之前,普遍

  4. 4 三大运营商年中业绩盘点

    盘它~ 正在为你播放《运营商年中业绩》 ●▬▬▬ ▬▬▬ ▬▬▬▬ 4 :59 ⇄ ◄ ▌▌ ► ↻ 就在这周,三大运营商陆续发布2019年上半年业绩申报。从整体营收利润来看: 传统通信行业

  5. 5 华为重磅发布:史上算力最强AI芯片正式商用

    点击上方“ 腾讯科技 ”,“星标或置顶公家号” 要害时刻,第一时间送达 起原 /量子位 (ID:QbitAI) 作者/ 乾明 边策 一璞 迎接下载腾讯新闻APP,查察更多科技热点新闻 视频:“昇腾

  6. 6 总是连着蓝牙?当心你的隐私!

    蓝牙手艺不光解决了很多数据传输方面的难题,也因其无线、便捷的特点受到好多智能设备的青睐,蓝牙耳机、蓝牙手环、车载蓝牙……各类设备不足为奇,不外注重了,平安隐患不克

  7. 7 华为史上最强芯片昇腾910面世,算力超Tesla V100一倍,AI框架MindSpore明年开源

    机械之心报道 机械之心编纂部 这是迄今为止华为推出的最强芯片。方才,华为在深圳公布其自研的 AI 练习芯片「昇腾 910」正式上线。与此同时,一同推出的还有华为全场景 AI 较量框

  8. 8 华为算力最强AI芯片商用:2倍于英伟达V100!开源AI框架,对标TensorFlow和PyTorch

    乾明 边策 一璞 发自 凹非寺 量子位 报道 | 公家号 QbitAI 方才,华为业界算力最强的AI芯片正式商用。 而且公布自研AI框架 MindSpore 开源,直接对标业界两大主流框架——谷歌的Tensor Fl

  9. 9 撬动百亿台设备,让物联网“造”起来!

    无论是曾经「山重水复疑无路」、「众里寻他千百度」的千古绝唱,照样现在女同伙直击魂魄的「你究竟在哪?」的发问,事实上,剖开现象看素质,实则都是一则万变不离其宗的「

  10. 10 揭秘闪存技术新进展,东芝存储器CTO将亲临CFMS2019发表演说!

    2019上半年NAND Flash和DRAM芯片价钱跌跌不休,下半年固然行情逆转,但依然被需求疲软、 高 库存、减产络续、商业辩说等不安的气氛充溢着整个财富,同时也给企业带来了伟大的挑战。

本文内容来自网友供稿,如有信息侵犯了您的权益,请联系反馈核实

Copyright 2024.爱妻自媒体,让大家了解更多图文资讯!