

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自動擴展您的 Amazon ECS 服務
<a name="service-auto-scaling"></a>

*自動擴展*是自動增加或減少 Amazon ECS 服務中所需任務數量的功能。Amazon ECS 利用 Application Auto Scaling 服務來提供此功能。如需詳細資訊，請參閱 [Application Auto Scaling 使用者指南](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html)。

Amazon ECS 會發佈具有您的服務平均 CPU 和記憶體用量的 CloudWatch 指標。如需詳細資訊，請參閱[Amazon ECS 服務使用率指標](service_utilization.md)。您可以使用這些指標和其他 CloudWatch 指標來向外擴展服務 (新增更多任務) 來處理尖峰時段的高需求量，以及將服務向內縮減 (執行較少任務) 以減少低使用率期間的成本。

Amazon ECS Service Auto Scaling 支援下列自動擴展類型：
+ [使用目標指標來擴展 Amazon ECS 服務](service-autoscaling-targettracking.md)–根據特定指標的目標值，增加或減少您服務執行的任務數目。這與您運用電熱器維持家中溫度的方式很類似。您只要選取溫度，電熱器會自行執行其餘操作。
+ [根據 CloudWatch 警示，使用預先定義的增量來擴展 Amazon ECS 服務](service-autoscaling-stepscaling.md)–根據一組依警示違規大小而變動的擴展調整 (稱為步驟調整)，增加或減少您服務執行的任務數目。
+ [使用排程動作擴展 Amazon ECS 服務](service-autoscaling-schedulescaling.md)：根據日期與時間增加或減少服務執行的任務數量。
+ [使用歷史模式以預測性擴展來擴展 Amazon ECS 服務](predictive-auto-scaling.md)：根據歷史負載資料分析增加或減少服務執行的任務數量，以偵測每日或每週流量流程模式。

   

## 考量事項
<a name="auto-scaling-concepts"></a>

使用擴展策略時，考慮下列事項：
+ Amazon ECS 每隔 1 分鐘會將指標傳送至 CloudWatch。在叢集和服務將指標傳送至 CloudWatch 前，指標皆無法使用，而且您也無法建立不存在之指標的 CloudWatch 警示。
+ 擴展政策支援冷卻時間。等待先前擴展活動生效的秒數。
  + 對於向外擴展事件，其目的是連續的規模擴展 (但並非過度)。在 Service Auto Scaling 使用擴展政策成功擴展之後，就會開始計算冷卻時間。除非初始化較大的橫向擴展或冷卻時間結束，否則擴展政策不會再次增加所需的容量。在向外擴展冷卻期間有效時，由起始冷卻的向外擴展活動所增加的容量，將計入下次向外擴展活動所需的容量。
  + 對於向內縮減事件，其用意在於保守縮減以保護應用程式的可用性，所以冷卻時間過後才會開放縮減活動。不過，若在向內縮減冷卻時間另有警示起始了橫向擴展活動，Service Auto Scaling 則會立即橫向擴展目標。在這種情況下，向內擴展冷卻期間隨即停止，且不會完成。
+ 服務排程器隨時會使用所需的計數，但只要您具有服務的有效擴展政策和警示，Service Auto Scaling 就可以變更您手動設定的所需計數。
+ 如果設定的服務所需計數低於其容量值下限，且警示啟動橫向擴充活動，服務自動擴展功能會將所需計數擴展到容量值下限，然後視需要根據與警示相關聯的擴展政策來持續橫向擴充。不過，向內擴展活動不會調整所需的計數，因為它已低於最小容量值。
+ 如果設定的服務所需計數高於其容量值上限，且警示啟動縮減活動，服務自動擴展功能會將所需計數橫向擴充到容量值上限，然後視需要根據與警示相關聯的擴展政策來持續縮減。不過，向外擴展活動不會調整所需的計數，因為它已高於最大容量值。
+ 在擴展活動期間，服務中實際執行的任務計數是 Service Auto Scaling 用作起始點的值，而不是所需的計數。這應為處理容量。這可防止無法滿足的過度且失控的擴展，例如，有可能因容器執行個體資源不足而無法放置其他任務。如果容器執行個體容量稍後可用，則擱置的擴展活動可能會成功，接著在冷卻時間之後進行後續的擴展活動。
+ 若希望您的任務計數在沒有待完成工作時縮減到零，將最小容量設定為 0。使用目標追蹤擴展政策，當實際容量為 0 而指標顯示有工作負載需求時，Service Auto Scaling 會在擴展前等待一個待傳送的資料點。在此情況下，它會向外擴展可能的數量下限做為起始點，然後以實際執行的任務計數為基礎繼續擴展。
+ Application Auto Scaling 會在 Amazon ECS 部署正在進行時關閉縮減程序。不過，除非在部署期間暫停，否則向外擴展程序會繼續發生。此行為不適用於使用外部部署控制器的 Amazon ECS 服務。如需詳細資訊，請參閱[服務自動擴展和部署](#service-auto-scaling-deployments)。
+ 您有多個適用於 Amazon ECS 任務的 Application Auto Scaling 選項。目標追蹤是最容易使用的模式。這樣一來，您僅需要為指標設定目標值，例如 CPU 平均使用率。然後，自動縮放器會自動管理獲得該值所需的任務數量。使用步驟擴展，您可以更快對需求變化做出反應，因為您定義了擴展指標的特定閾值，以及超越閾值時要新增或刪除的任務數量。而且，更重要的是，您可以透過最大限度減少閾值警報違反的時間來對需求變化做出非常快速的反應。

如需有關服務自動擴展最佳實務的詳細資訊，請參閱[最佳化 Amazon ECS 服務自動擴展](capacity-autoscaling-best-practice.md)。

## 服務自動擴展和部署
<a name="service-auto-scaling-deployments"></a>

Application Auto Scaling 會在 Amazon ECS 部署正在進行時關閉縮減程序。不過，除非在部署期間暫停，否則向外擴展程序會繼續發生。此行為不適用於使用外部部署控制器的 Amazon ECS 服務。如果您想要在部署正在進行時暫停向外擴展程序，請執行下列步驟。

1. 呼叫 [describe-scalable-targets](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scalable-targets.html) 命令，指定在 Application Auto Scaling 中與可擴展目標關聯的服務資源 ID (範例：`service/default/sample-webapp`)。記錄輸出。您將在呼叫下一個命令時用到它。

1. 呼叫 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令，指定資源 ID、命名空間和可擴展維度。同時為 `DynamicScalingInSuspended` 和 `DynamicScalingOutSuspended` 指定 `true`。

1. 部署完成後，您可以呼叫 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令以繼續擴展。

如需詳細資訊，請參閱[暫停和繼續擴展 Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-suspend-resume-scaling.html)。