我计划在多可用区(AZ = 可用区)网络中构建一个自动扩展组 (ASG)。假设我们运行了一些诊断程序,发现正常负载至少需要 8 个实例,高峰时间需要 24 个实例。
我很困惑这 8 个实例(或 24 个实例)是跨 AZ 运行还是在一个 AZ 中运行。此外,如果我必须强制 ASG 在 AZ 中每个实例拥有 8 个实例,我该怎么做?
我计划在多可用区(AZ = 可用区)网络中构建一个自动扩展组 (ASG)。假设我们运行了一些诊断程序,发现正常负载至少需要 8 个实例,高峰时间需要 24 个实例。
我很困惑这 8 个实例(或 24 个实例)是跨 AZ 运行还是在一个 AZ 中运行。此外,如果我必须强制 ASG 在 AZ 中每个实例拥有 8 个实例,我该怎么做?
创建 Auto Scaling 组时,您指定应在其中启动实例的可用区。
Auto Scaling 旨在保持每个 AZ 中的实例数量平衡。例如,当启动一个新实例时,它将在 Auto Scaling 组中实例数量最少的 AZ 中启动(如果它们相等,则为随机 AZ)。终止实例时,它将选择 Auto Scaling 组中实例最多的 AZ 中的一个实例(如果它们相等,则选择一个随机 AZ)。
因此,为确保每个 AZ 中有 8 个实例,Auto Scaling 组的实例计数需要等于已配置 AZ 数量的 8 倍。
如果您希望确保 8 个实例始终在运行,并且 Auto Scaling 组使用 3 个 AZ,那么一个 AZ 发生故障的可能性很小。如果发生这种情况,Auto Scaling 将在剩余 AZ 中启动更多实例。如果您的应用程序不能等待这些额外的实例失败,那么它需要在 3 个 AZ 中的每一个中有 4 个实例。这样,如果一个 AZ 发生故障,仍然会有两个 AZ,每个 AZ 有 4 个实例,使 8 个实例运行。
所以:
Auto Scaling 保持(平衡)跨多个 AZ 的实例数量均匀。
例如:
您至少设置了 8 个实例。
如果您为 Auto Scaling 设置 2 个 AZ,则每个 AZ 有 4 个实例 (4 + 4 = 8)。
如果您为 Auto Scaling 设置 3 个 AZ,则 2 个 AZ 将有 3 个实例,1 个 AZ 有 2 个实例 (3 + 3 + 2 = 8)。
总共至少有 8 个实例跨多个 AZ 保留以用于正常负载。
您将 24 个实例设置为最大值。
如果您为 Auto Scaling 设置 2 个 AZ,则每个 AZ 有 12 个实例 (12 + 12 = 24)。
如果您为 Auto Scaling 设置 3 个 AZ,则每个 AZ 有 8 个实例(8 + 8 + 8 = 24)。
在高峰期,总共最多保留 24 个实例跨多个可用区。
AWS 也会回答您的问题 -->问:Amazon EC2 Auto Scaling 如何平衡容量?