返回介绍

14.1 高性能负载均衡架构设计原则

发布于 2025-04-21 21:33:26 字数 3682 浏览 0 评论 0 收藏

对于一个负载均衡集群系统来说,高性能体现在高可用性、可扩展性、可视可控性和安全性这几个方面,每个方面要实现的功能如下:

- 高可用性:这是衡量一个应用系统最基础的标准,在生产环境中使用的负载均衡集群系统都要求有很强的实时性和可靠性,必须保证服务 24 小时不间断运行,而由于软件、硬件、网络、人为等各种原因,单一的服务运行环境很难达到这种要求,此时就需要有一个高可用的软件来保证负载均衡系统持续不间断地服务。高可用软件最大的一个优点是能保证负载均衡系统的高可用性,在负载均衡服务出现故障时,高可用软件可以自动将服务从故障节点切换到另一个备用节点,从而提供不间断性服务,保证了业务的持续运行。

- 可扩展性:随着业务量的加大,现有的集群服务实体不能满足需求时,可以向此集群中动态地加入一个或多个服务节点,从而满足应用的需要,增强集群的整体性能,这就是集群的可扩展性。

- 可视可控性:集群的服务状态、服务节点运行状态都应该能在一个统一的监控平台下实时监控,并且当集群服务或服务节点出现故障时,能够通过电话、短信、邮件等方式第一时间通知运维人员。

- 安全性:集群的整个运行架构应该是合理并安全的。安全防护包括两个层面,第一个层面就是服务器健康检查功能,负载均衡器要能够精确探测后端服务器的健康状态,在后端服务器处理能力达到饱和前可以自动屏蔽新来的连接请求,以免后端服务器可能在瞬间接受超过服务器吞吐能力的数据流而直接导致系统崩溃,从而达到安全检测的目的。第二个层面是负载均衡器上要有相应的安全机制,例如端口屏蔽、ARP 响应屏蔽等策略,以保证负载均衡器不受外界的攻击。

高性能的负载均衡系统建立在现有网络结构之上,它提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高了网络的灵活性和可用性。

14.1.1 HAProxy 常见方案与拓扑

HAProxy 是一个自由软件,任何人都可以免费获取并使用,而且 Linux 也是一个开源操作系统,这二者的组合大大节约了企业的应用成本;同时 HAProxy 具有高稳定性和高可靠性,在高并发和高吞吐量情况下,具有高负荷处理能力;当某个服务节点出现故障时,并不影响整个系统服务的正常运行。这些优点使 HAProxy 已经广泛应用在企业、教育行业以及很多知名网站。

目前业界常用的 HAProxy 构建方案如图 14-1 所示。

图 14-1 单节点的 HAProxy 负载均衡集群应用方案

在这个负载均衡集群架构中,每个模块实现功能如下:

- Load Balancer 层:位于整个集群系统的最前端,由一台 HAProxy Server 组成。HAProxy 软件就安装在 HAProxy Server 上,而 HAProxy Server 的主要作用类似于一个代理路由器,它把用户的请求分发给 Backend Node 层的后端服务器(Backend Node)。同时,在 HAProxy Server 上还要配置对 Backend Node 进行状态监控的设置,通过对 Backend Node 服务的健康状况监控,以确保在 Backend Node 不可用时可以把它从整个集群中剔除,在恢复时重新加入。

- Backend Node 层:由一组实际运行应用服务的机器组成。Backend Node 可以是 Web 服务器、Mail 服务器、FTP 服务器、DNS 服务器、视频服务器中的一个或多个,每个 Backend Node 之间通过高速的 LAN 或分布在各地的 WAN 相连接。在实际的应用中,HAProxy Server 也可以同时兼任 Backend Node 的角色。

细心的读者可能已经发现了,在此架构中存在一个致命的缺点,从图 14-1 可以清楚地看出,所有的用户请求都经过 HAProxy Server 将任务分发到各个服务器节点,那么,当只有一台 HAProxy Server 时,将会出现单点故障点,一旦这个 HAProxy Server 出现故障,整个 HAProxy 系统将陷入瘫痪状态。

虽然 HAProxy Server 具有高负荷工作的能力,但是对于一个健壮的集群系统来说,单点故障是绝对不允许的。要避免这种单点故障,最实用、最简单的办法就是对 HAProxy Server 进行高可用集群,常见的方案就是为 HAProxy Server 做一个双机热备:在正常状态下主 HAProxy Server 工作,备用 HAPproxy Server 监控主 HAProxy Server 的状态,当主 HAProxy Server 出现异常或者故障时,备用 HAProxy Server 马上接过主 HAProxy Server 的工作,负责对用户请求进行分发处理,这样就避免了一台 HAProxy Server 的单点故障问题,保证了负载均衡端持续地提供服务。

经过改进后的 HAProxy 负载均衡集群应用方案如图 14-2 所示。

图 14-2 高可用的 HAProxy 负载均衡集群应用方案

从图 14-2 可以看出,整个架构仍然分为三层,在 HA Load Balancer 层,主、备两台 HAProxy Server 构成双机热备系统,双机之间通过心跳线连接。在正常状态下主 HAProxy Server 使用虚拟 IP 接收用户请求,并根据设定好的策略和算法将请求分发给各个服务节点,备用 HAProxy Server 负责监控主 HAProxy Server 的运行状态,当主 HAProxy Server 发生异常或出现故障时,备用 HAProxy Server 负责接管主 HAProxy Server 的虚拟 IP 和服务并继续接收用户请求和分发处理。通过这种相互监控策略,任意一方主机故障对方都能够将 IP 和服务接管,保证了 Load Balancer 层业务请求的不间断运行。

14.1.2 高可用集群软件的选择

为保证 HAProxy Server 不出现单点故障,就需要通过高可用软件来实现,目前开源的高可用软件有很多,常用的有 Heartbeat 与 Keepalived。下面简单介绍下这两个软件的区别与联系。

Heartbeat 是 Linux-HA 项目中的一个组件,也是目前开源 HA 项目中最成功的一个例子,它提供了所有 HA 软件需要的基本功能,比如心跳检测和资源接管,监测集群中的系统服务,在群集的节点间转移共享 IP 地址的所有者等。自 1999 年开始到现在,Heartbeat 在行业内得到了广泛应用,也发行了很多的版本,目前的稳定版本为 heartbeat3.0.5,可以从 Linux-HA 的官方网站 www.linux-ha.org 下载所需的版本。

Keepalived 在前面的章节已经做过详细介绍,它一方面具有服务器运行检测功能,另一方面也具有 HA Cluster 功能,目前很多高可用系统都是通过 Keepalived 来实现的。

综合来说,Heartbeat 是一个专业的 HA 软件,最新版 Heartbeat 功能十分强大,它完全是按照商业的高可用软件思路来设计和开发的,但是 Heartbeat 的安装、配置相对比较复杂,这也增加了维护成本。相对于 Heartbeat,Keepalived 就显得简单多了,它是一个轻量级的高可用集群软件,安装、配置十分简单,并且具有很高的稳定性和可靠性,但是它的功能不如 Heartbeat 强大。对于需求简单的高可用环境,采用 Keepalived 是一个不错的选择,而对于复杂的高可用环境来说,采用 Heartbeat 是最合适的。

在构建高可用的负载均衡集群环境中,只需要高可用软件的故障检测和切换功能,因此,采用 Keepalived 是个很好的选择。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。