AWS 的自动扩展架构

下图说明了以 DNS 作为流量分配服务器的自动缩放功能的体系结构。

AWS-autoscale-architecture-NLB

下图说明了以 NLB 作为流量分配器的自动缩放功能的体系结构。

AWS-autoscale-architecture-NLB

NetScaler 控制台

NetScaler 控制台是一个基于 Web 的解决方案,用于管理所有部署在本地或云端的 NetScaler 部署。您可以使用此云解决方案从单一、统一和集中的基于云的控制台管理、监视和故障排除整个全球应用程序交付基础结构。NetScaler 控制台提供在 NetScaler 部署中快速设置、部署和管理应用交付所需的所有功能,并可对应用运行状况、性能和安全进行丰富的分析。

Autoscale 组是在 NetScaler 控制台中创建的,NetScaler VPX 实例是从 NetScaler 控制台配置的。然后,通过样书在 NetScaler 控制台中部署该应用程序。

流量分销商(NLB 或 DNS/Route53)

NLB 或 DNS/route53 用于在 AutoScale 组中的所有节点之间分配流量。有关详细信息,请参阅 AutoScale 流量分布模式。

NetScaler 控制台与流量分配器通信,以更新应用前端的负载平衡虚拟服务器的应用域和 IP 地址。

NetScaler 控制台 Autoscale 组

自动缩放组是一组 NetScaler 实例,它们将应用程序作为单个实体进行负载平衡,并根据配置的阈值参数值触发自动缩放。

NetScaler 群集

NetScaler 群集是一组 NetScaler VPX 实例,每个实例称为节点。客户端流量分布在节点之间,以提供高可用性、高吞吐量和可扩展性。

注意

  • 自动扩缩决策是在群集级别做出的,而不是在节点级别做出的。
  • 独立群集托管在不同的可用区中,因此对某些共享状态功能的支持受到限制。

    持久性会话(例如源 IP 持久性以及除基于 Cookie 的持久性之外的其他会话)不能在群集之间共享。但是,负载平衡方法等所有无状态功能在多个可用区域中按预期工作。

AWS 自动扩展组

AWS 自动扩展组是 EC2 实例的集合,这些实例具有相似特征,并且为了实例扩展和管理的目的被视为逻辑分组。

AWS 可用区

AWS 可用区是区域内的一个孤立位置。每个区域由多个可用区组成。每个可用区域属于一个区域。

流量分配模式

当您将应用程序部署迁移到云端时,自动扩展将成为基础设施的一部分。当应用程序使用自动缩放向外扩展或扩展时,必须将这些更改传播到客户端。使用基于 DNS 或基于 NLB 的自动缩放来实现此传播。

基于 NLB 的自动缩放

在基于 NLB 的部署模式下,群集节点的分发层是 AWS 网络负载平衡器。

在基于 NLB 的自动扩展中,每个可用区仅提供一个静态 IP 地址。这是添加到 route53 的公有 IP 地址,后端 IP 地址可以是私有的。使用此公有 IP 地址时,在自动扩展期间配置的任何新 NetScaler 实例都会使用私有 IP 地址运行,不需要额外的公有 IP 地址。

您可以使用基于 NLB 的自动缩放来管理 TCP 和 UDP 流量。

基于 DNS 的自动扩展

在基于 DNS 的自动缩放中,DNS 充当 NetScaler 群集节点的分发层。通过更新与应用程序对应的域名,将扩展更改传播到客户端。目前,DNS 提供商是 AWS Route53。

注意

在基于 DNS 的自动缩放中,每个 NetScaler 实例都需要一个公有 IP 地址。

自动缩放的工作原理

以下流程图说明了自动缩放工作流程。

Autoscale-workflow

NetScaler 控制台以一分钟的时间间隔从 Autoscale 配置的群集收集统计信息(CPU 使用率、内存使用率、吞吐量)。

将根据配置阈值评估统计信息。根据统计数据是超过最大阈值还是低于最小阈值,分别触发向外扩展或向外扩展。

  • 如果触发了横向扩展:

    • 已置备新节点。
    • 节点连接到群集,配置从群集同步到新节点。
    • 这些节点在 NetScaler 控制台中注册。
    • 在 DNS/NLB 中更新新的节点 IP 地址。

部署应用程序时, IPset 将在每个可用区域的群集上创建,域和实例 IP 地址将在 DNS/NLB 中注册。

  • 如果触发了缩放:
    • 将删除标识为删除的节点的 IP 地址。
    • 这些节点与群集分离,取消配置,然后从 NetScaler 控制台中取消注册。

删除应用程序后,域和实例 IP 地址将从 DNS/NLB 中取消注册并删除 IPset

示例

假设您已在具有以下配置的单个可用性区域中创建名为 asg_arn 的 Autoscale 组。

  • 阈值参数 — 内存使用情况
  • 最低限额:40
  • 最大限额:85
  • 观看时间 — 3 分钟
  • 冷却时间 — 10 分钟
  • 排水管连接超时 — 10 分钟
  • TTL 超时 — 60 秒

创建 AutoScale 组后,将从该组中收集统计信息。AutoScale 策略还会评估是否有任何 AutoScale 事件正在进行中,如果自动伸缩正在进行中,则在收集统计信息之前等待该事件完成。

Autoscale-example

事件顺序:

  • T1 和 T2:内存使用超过最大阈值限制。
  • T3-内存使用量低于最大阈值限制。
  • T6、T5、T4:内存使用量已连续超过三个监视时长的最大阈值限制。

    • 触发向外扩展。
    • Provisioning 节点。
    • 冷却时间有效。
  • T7 — T16:由于冷却期生效,将跳过该可用区从 T7 到 T16 的 AutoScale 评估。

  • T18、T19、T20-内存使用量已连续超过三个手表持续时间的最低阈值限制。
    • 触发缩放。
    • 排水连接超时已生效。
    • IP 地址已从 DNS/NLB 中删除。
  • T21 — T30:由于排水连接超时生效,将跳过此可用区从 T21 到 T30 的自动缩放评估。

  • T31
    • 对于基于 DNS 的自动缩放,TTL 有效。
    • 对于基于 NLB 的自动扩缩,会取消预置实例。
  • T32
    • 对于基于 NLB 的自动缩放,开始评估统计数据。
    • 对于基于 DNS 的自动扩缩,会取消预置实例。
  • T33:对于基于 DNS 的自动缩放,开始评估统计信息。
AWS 的自动扩展架构