Microsoft Azure 的自动缩放架构
NetScaler 控制台使用 Azure DNS 或 Azure 负载平衡器 (ALB) 处理客户端流量分配。
使用 Azure DNS 分配流量
下图说明了如何使用 Azure 流量管理器作为流量分配器进行基于 DNS 的自动缩放:
在基于 DNS 的自动缩放中,DNS 充当分布层。Azure 流量管理器是 Microsoft Azure 中基于 DNS 的负载平衡器。流量管理器将客户流量定向到 NetScaler 控制台自动扩展组中可用的相应的 NetScaler 实例。
Azure 流量管理器将 FQDN 解析为 NetScaler 实例的 VIP 地址。
注意:
在基于 DNS 的自动扩展中,NetScaler 控制台 Autoscale 组中的每个 NetScaler 实例都需要一个公有 IP 地址。
NetScaler 控制台在群集级别触发横向扩展或缩小操作。触发向外扩展时,会置备注册的虚拟机并将其添加到群集中。同样,当触发扩展时,节点也会从 NetScaler VPX 群集中删除并取消置备。
使用 Azure 负载平衡器分配流量
下图说明如何使用 Azure 负载平衡器作为流量分配器进行自动缩放:
Azure 负载平衡器是群集节点的分发层。ALB 管理客户端流量并将其分配到 NetScaler VPX 群集。ALB 将客户流量发送到 NetScaler VPX 群集节点,这些群集节点可在 NetScaler 控制台自动扩展组中跨可用区域使用。
注意
公有 IP 地址分配给 Azure 负载平衡器。NetScaler VPX 实例不需要公有 IP 地址。
NetScaler 控制台在群集级别触发横向扩展或缩小操作。触发横向扩展时,将配置已注册的虚拟机并将其添加到群集中。同样,当触发扩展时,节点也会从 NetScaler VPX 群集中删除并取消置备。
NetScaler 控制台 Autoscale 组
自动缩放组是一组 NetScaler 实例,它们将应用程序作为单个实体进行负载平衡,并根据配置的阈值参数值触发自动缩放。
资源组
资源组包含与 NetScaler 自动缩放相关的资源。该资源组可帮助您管理自动扩缩所需的资源。有关更多信息,请参阅 管理资源组。
Azure 后端虚拟机规模集
Azure 虚拟机规模是相同虚拟机实例的集合。虚拟机实例的数量可以增加或减少,具体取决于客户端流量。此集可为您的应用程序提供高可用性。有关更多信息,请参阅 虚拟机规模集。
可用性区域
可用区是 Azure 区域内的隔离位置。每个区域由多个可用区组成。每个可用区域属于一个区域。每个可用区都有一个 NetScaler VPX 群集。有关更多信息,请参阅 Azure 中的可用性区域。
可用性集
可用性集是 NetScaler VPX 群集和应用程序服务器的逻辑分组。可用性集有助于在群集中的多个独立硬件节点上部署 NetScaler 实例。通过可用性设置,可以确保在 Azure 中出现硬件或软件故障时,NetScaler 控制台能够可靠地自动缩放。有关更多信息,请参阅 可用性集。
下图说明了可用性集中的自动扩展:
Azure 基础架构(ALB 或 Azure 流量管理器)将客户端流量发送到可用性集合中的 NetScaler 控制台自动缩放组。NetScaler 控制台在群集级别触发横向扩展或缩小操作。
自动缩放的工作原理
下面的流程图说明了自动缩放工作流:
NetScaler 控制台每分钟从 Autoscale 配置的群集中收集统计信息(CPU、内存和吞吐量)。
将根据配置阈值评估统计信息。根据统计数据,会触发向外扩展或缩小规模。当统计数据超过最大阈值时,将触发向外扩展。当统计数据运行在最低阈值以下时,将触发缩放。
如果触发了横向扩展:
-
已配置新节点。
-
节点附加到群集,并且配置将从群集同步到新节点。
-
该节点已在 NetScaler 控制台中注册。
-
新节点 IP 地址在 Azure 流量管理器中更新。
如果触发了缩放:
-
已确定要移除的节点。
-
停止与选定节点的新连接。
-
等待指定的时间段以使连接耗尽。在 DNS 流量中,它还会等待指定的生存时间 (TTL) 周期。
-
该节点与群集分离,从 NetScaler 控制台取消注册,然后从 Microsoft Azure 取消配置。
注意:部署应用程序
时,会在每个可用区域中的群集上创建一个 IP 集。然后,域和实例 IP 地址将注册到 Azure 流量管理器或 ALB。删除应用程序后,域和实例 IP 地址将从 Azure 流量管理器或 ALB 取消注册。然后,IP 集被删除。
自动缩放方案示例
假设您已在具有以下配置的单个可用性区域中创建名为 asg_arn 的 Autoscale 组。
-
选定的阈值参数 — 内存使用情况。
-
设置为内存的阈值限制:
-
最低限额:40
-
最大限额:85
-
-
观看时间 — 2 分钟。
-
冷却时间 — 10 分钟。
-
取消配置期间的等待时间 — 10 分钟。
-
DNS 生存时间 — 10 秒。
创建 AutoScale 组后,将从该组中收集统计信息。AutoScale 策略还会评估是否有任何 AutoScale 事件正在进行中。如果正在进行自动缩放,请等待该事件完成,然后再收集统计信息。
事件的顺序
-
内存使用量超过 T2的阈值限制。但是,不会触发向外扩展,因为它在指定的手表时间内没有突破。
-
连续突破最大阈值 2 分钟(观看时间)后,将在 T5 触发横向扩展。
-
没有对 T5-T10 之间的漏洞采取任何行动,因为节点配置正在进行中。
-
节点在 T10 配置并添加到群集中。冷却时间已开始。
-
由于冷却时间,未对 T10-T20 之间的违规行为采取任何行动。此时间段确保了 AutoScale 组的实例的有机增长。在触发下一个扩展决策之前,它会等待当前流量稳定并平均出现当前实例集。
-
内存使用率降至 T23的最低阈值限制以下。但是,不会触发缩放,因为它在指定的手表时间内没有突破。
-
连续突破最低阈值 2 分钟(观看时间)后,将在 T26 触发缩放。群集中的节点被标识为取消置备。
-
没有对 T26-T36 之间的漏洞采取任何措施,因为 NetScaler 控制台正在等待耗尽现有连接。对于基于 DNS 的自动缩放,TTL 有效。
注
意对于基于 DNS 的自动扩展,NetScaler 控制台会等待指定的生存时间 (TTL) 周期。然后,在启动节点取消置备之前,它会等待现有连接耗尽。
-
没有对 T37-T39 之间的漏洞采取任何行动,因为正在取消节点配置。
-
节点已在 T40 从群集中移除并取消配置。
在启动节点取消置备之前,与选定节点的所有连接都已耗尽。因此,在节点取消置备后,将跳过冷却时间。