负载平衡常见方式分析

2021-03-06 08:25

包含 CDN(內容交货互联网)和云出示商在内,多站点的大中型互联网技术系统软件能够挑选多种多样方法来平衡进到其互联网的总流量。在本文中,大家将叙述普遍的总流量平衡设计方案,包含技术性和衡量方式。

假如你是初期的云计算技术服务出示商,你可使用1个独立的顾客 web 服务器,为它分派1个 IP 详细地址,并配备1个 DNS(网站域名系统软件)纪录来将它与1个易读的姓名关系起来,以后根据 BGP(界限网关协议书)来散播 IP 详细地址,这是种在互联网间互换路由器信息内容的规范方法。

在冗余的互联网相对路径上派发总流量,在不能用的基本设备周边开展路由器来提升能用性(会致使不对称性路由器等状况),这些从实质上讲其实不是负载平衡

简易的 DNS 负载平衡

伴随着顾客服务总流量的提高,业务流程方期待得到更高的能用性。你加上了另外一个具备公网 IP 详细地址的 web 服务器,并升级了 DNS 纪录来将客户正确引导到这两个 web 服务器(期待略微公平公正1些)。直至某1个 web 服务器出现意外服务器宕机前,这类方式全是可行的。假定你迅速检验到常见故障,能够根据升级 DNS 配备(手动式方法或应用手机软件)来终止引入毁坏的服务器。

遗憾的是,因为 DNS 纪录是有缓存文件的,这些缓存文件纪录将会会在顾客端或 DNS 层级构造中的别的名字服务器中,在它们到期以前,大概有 50% 的恳求依然将会不成功。DNS 纪录的 TTL(time to live,存活時间)一般为几分钟或更长,因而这会对系统组件的能用性导致重特大危害。

更不尽人意的是1些顾客端彻底忽视了 TTL,因此1些恳求将在1段時间内被定项到早已服务器宕机的 web 服务器上。设定十分短的 DNS TTL 也并不是甚么好主张;这代表着 DNS 服务的负载提升,延迟时间提升,由于顾客端迫不得已更为经常地实行 DNS 搜索。假如你的 DNS 服务不能用,那末应用更短的 TTL 浏览服务将更快地退级,由于缓存文件服务 IP 详细地址的顾客端更少。

提升互联网负载平衡

以便处理这个难题,你能够加上1对冗余的 4 层(Layer 4)互联网平衡器,并在同样的虚似 IP(VIP)详细地址出示服务。它们能够是硬件配置机器设备,或像 HAProxy 这样的手机软件平衡器。这代表着 DNS 纪录仅仅指向虚似 IP 而已不做负载平衡。

4 层负载平衡器未来自客户的联接平衡遍布在两个 web 服务器上

4 层平衡器未来自因特网的总流量平衡地正确引导至后端开发服务器。这一般是根据每一个 IP 包的 5 元组的哈希(1个数学课涵数)进行的:源 IP 详细地址和总体目标 IP 详细地址,和端口号再加协议书(如 TCP 或 UDP)。这类方法迅速、高效率(而且依然保持了 TCP 的基础特性),而且不必须平衡器维护保养每一个联接的情况。

4 层平衡器能够开展身心健康查验,并仅仅向那些根据查验的 web 服务器推送总流量。与 DNS 平衡不一样的是,假如1个 web 服务器奔溃,将总流量重定项到另外一个 web 服务器上的延迟时间很小,虽然现有联接将被重设。

4 层平衡器能够做加权均值,解决不一样容量的后端开发,它为运维管理人员出示了强劲的工作能力和灵便性,另外在测算工作能力层面相对性划算。

走向多站点

系统软件再次扩大。即便你的数据信息管理中心出現常见故障,你的顾客也期待能再次维持运行。你会搭建1个新的数据信息管理中心,在其中包括自身的1组后端开发服务和另外一组 4 层平衡器,它们在与以前1样的虚似 IP 上出示服务。DNS 设定不会改变。这两个站点的边沿路由器器都在散播详细地址信息内容,包含服务的虚似 IP。依据终端设备客户和系统软件之间的互联网联接状况,和它们的路由器对策配备,推送到虚似 IP 的恳求能够抵达任1个站点。这被称为 anycast(任播)。大多数数状况下,这类方式都很合理。假如在其中1个站点出現常见故障,你能够终止根据 BGP 散播服务虚似 IP,这样总流量便可以快速迁移到另外一个站点。

应用 anycast(任播)从好几个站点出示服务

这个设定有几个难题。最不尽人意的是,你没法操纵总流量的走向或限定推送到某个特殊站点的总流量。一般,决策路由器的互联网协议书和配备应当将客户路由器到近期的站点,但是就互联网延迟时间而言,你并沒有显著的方式来完成这个总体目标。

在多站点系统软件中操纵入站恳求

以便保持平稳性,你必须操纵每一个站点的总流量,你能够为每一个站点分派不一样的虚似 IP,并应用 DNS 的简易循环系统或加权 循环系统 来平衡总流量。

从好几个站点出示服务:每一个站点应用1个主虚似 IP,2级站点备份数据,应用自然地理认知 DNS

如今造成了两个新的难题。

最先,应用 DNS 平衡代表着你有缓存文件纪录,这不太可用于那些必须快速重定项总流量的情景。

第2,每当客户做1次新的 DNS 查寻,虚似 IP 会将客户联接到1个任意的站点,而不1定是离客户近期的那1个。假如你的服务站点遍布普遍,依据客户和服务站点之间的互联网延迟时间,各个客户认知到的系统软件回应特性会有较大起伏。

让每一个站点持续散播虚似 IP,并为全部别的站点(和任何有难题的站点的虚似 IP)出示服务,你能够根据这类方法处理第1个难题。1些互联网技能(例如从备份数据中散播不那末独特的路由器信息内容)能够保证虚似 IP 对应的主站要是是能用的,那末它就是首选。这是根据 BGP 进行的,因而在升级 BGP 后的1到两分钟内,大家应当会看到总流量的挪动。

除让间距客户近期的身心健康站点为其出示服务之外,并沒有1个更为雅致的挑选。许多大中型互联网技术服务尝试应用 DNS 来向不一样部位的客户回到不一样的結果,并在1定水平上获得了取得成功。但是这类方式一直有点 繁杂和非常容易错误,由于因特网的寻址方式计划方案其实不是按自然地理部位机构的,详细地址块能够更改部位(比如,当企业再次机构其互联网时),许多终端设备客户依然能够根据缓存文件名字服务器得到服务。

提升 7 层负载平衡

伴随着時间的推移,你的顾客刚开始对1些更为高級的特点提出规定。

尽管 4 层负载平衡器能够高效率地在好几个 web 服务器之间分派负载,但这类分派是只在源 IP 详细地址和总体目标 IP 详细地址、协议书和端口号勤奋行的。4 层平衡器对恳求的內容1没有知,因此也没法完成许多高級特点。相对性而言,7 层(L7)负载平衡器了解恳求的构造和內容,能够做得更多。

在 7 层平衡器中能够完成的1些特点包含缓存文件、限流、不正确引入和成本比较敏感的负载平衡(一部分恳求必须更多的服务端解决時间)。

它们还能够根据恳求的特性(比如 HTTP cookies)开展平衡、停止 SSL 联接,并协助抵挡运用层回绝服务(DoS)进攻。7 层平衡器成本费较高,不容易扩容——它们为解决恳求做了更多的测算,并且每一个主题活动恳求都会耗费1些系统软件資源。在1个或好几个 7 层平衡器池前运作 4 层平衡器能够协助处理拓展难题。

写在最终

负载平衡是1个繁杂的困难。除本文叙述的对策以外,也有不一样的 负载平衡优化算法、用于完成负载平衡器的高能用技术性、顾客端负载平衡技术性和近期盛行的服务网格。

伴随着云计算技术的发展趋势,关键的负载平衡方式也在持续演进,大中型 web 服务也将再次改善负载平衡所能出示的操纵和灵便性。

作者 | Laura Nolan,Murali Suriar      译者 | Key 先森



扫描二维码分享到微信

在线咨询
联系电话

020-66889888