高可用负载均衡实践

本文主要讨论如何防止负载均衡器成为系统设计中的单点故障,介绍了如何部署高可用主从模式负载均衡器,确保系统的连续性和可用性。原文: How to prevent load balancers from being a single point of failure

关于负载均衡器已经有很多文章,但今天要讨论的不是负载均衡器如何工作,而是如何防止负载均衡器成为单点故障。

负载均衡器是系统设计工具集中的绝佳工具,可帮助系统进行扩展。当我们需要为大流量提供服务时,将不可避免遇到单台服务器内存和计算能力不足以为所有流量提供服务的情况。此时,有以下两种选择:

  • 通过增加处理能力和内存使服务器更强大,但有硬件上限约束。

  • 也可以运行多个服务器实例,每个实例处理部分流量。

简单来说,负载均衡器会接收所有进入的流量,并智能的将流量分配给服务器的多个运行实例。这样只需要增加越来越多的服务器副本,就可以无限扩容。在系统设计术语中,这被称为水平扩容。

虽然负载均衡器可以在应用扩容时规避内存和计算限制,但并不能解决单点故障问题。

从上图可以看到,所有请求都要经过负载均衡器,然后由负载均衡器将请求转发到后端副本。很明显,在这种情况下,负载均衡器本身就是一个单点。如果负载均衡器关闭或由于某种原因无法访问,用户将无法使用应用程序,从而造成业务全面中断。

那么该如何防止出现这种情况,如何防止负载均衡器造成单点故障呢?下面我们将讨论如何解决这一问题。

部署高可用主从负载均衡器

解决这个问题的一个办法是将负载均衡器部署为高可用对,这意味着要部署两个或更多负载均衡器实例,一旦其中某个负载均衡器出现故障,其他负载均衡器就能接替并继续为客户提供服务。

听起来似乎是个合理的解决方案,但马上想到的第一个问题是,客户如何知道需要向哪个负载均衡器实例发出请求?如果负载均衡器的某个实例出现故障,其他负载均衡器如何知道?

我们来解决这些问题。

如何管理本地网络流量

要回答上述问题,必须了解以下有关网络路由的要点,我们需要深入了解流量是如何在网络中路由的。

  • 本地网络内的所有流量都由一台名为"交换机"的设备管理,而不是路由器。

  • 交换机通过主机 MAC 地址向它们发送流量。

  • 每当交换机收到带有目标 IP 地址的 TCP 数据包时,都需要知道相应主机的 MAC 地址,以便将 TCP 数据包正确转发给正确的目标机器。

  • 为了解析目标 IP 地址的 MAC 地址,交换机将使用地址解析协议 (ARP,Address Resolution Protocol),向连接到本地网络的所有机器发送广播,询问它们是否正在为给定的 IP 提供服务。

  • 拥有给定 IP 的主机将回复其 MAC 地址,而其他主机将直接忽略 ARP 请求。

了解了网络路由的工作原理后,让我们回到最初的问题。

第一步是在网络中部署两个负载均衡器,其中一个为主模式,另一个为从模式,这种主从模式在高可用性系统中非常常见。

这两个负载均衡器同意共享同一个虚拟 IP 地址(虚拟 IP 地址分配给软件系统,如负载均衡器,而不是物理设备,因此可以将其视为一个虚构的 IP 地址),并且互相发送心跳(liveness ping)。

每当交换机要将数据包转发到虚拟 IP 地址时,首先向网络上的所有主机发送广播,询问哪些机器的 MAC 地址分配了虚拟 IP 地址。主负载均衡收到广播后,会立即以其 MAC 地址作出回应,这样交换机就知道,今后所有属于虚拟 IP 地址的数据包都应转发给主负载均衡器。从负载均衡器也会收到该广播,但不会用自己的 MAC 地址做出回应,因为它知道自己不是主负载均衡器。

两个负载均衡器不断相互发送心跳(liveness ping)信息。如果主负载均衡器发生故障,从负载均衡器会立即开始为虚拟 IP 地址公布自己的 MAC 地址,从而承担起主负载均衡器的角色。

将 IP 地址解析为 MAC 地址的整个过程是通过地址解析协议(简称 ARP)完成的。

请注意,使用 ARP 将 MAC 地址解析为 IP 地址的过程相当快,因此当主负载均衡器发生故障时,终端用户可能不会看到明显的停机时间。

这就是我们确保负载均衡器不会成为单点故障的方法。请注意,还可以使用其他策略来解决这个问题,例如使用多播,或监控负载均衡器并自动更新 DNS 以指向健康的负载均衡器等。


你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为了方便大家以后能第一时间看到文章,请朋友们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的支持和动力,激励我持续写下去,和大家共同成长进步!

本文由mdnice多平台发布

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容