

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

# 目標追蹤擴展政策
<a name="AutoScaling-Scaling-Policies-Target"></a>

使用目標追蹤擴展政策，您可以選取指標及設定目標值。ElastiCache for Valkey 和 Redis OSS Auto Scaling 會建立和管理 CloudWatch 警示，以觸發擴展政策，並根據指標和目標值計算擴展調整。規模調整政策會視需要新增或移除複本，讓指標保持在等於或接近指定目標值。除了讓指標保持在接近目標值之外，目標追蹤規模調整政策也會配合指標中，因為負載模式波動所造成的波動調整，並將機群容量中的快速波動降到最低。

例如，想想看當規模調整政策使用預先定義的平均 `ElastiCachePrimaryEngineCPUUtilization` 指標搭配所設定目標值時的情況。此政策可以讓 CPU 使用率維持在等於或接近指定的目標值。

## 預先定義的指標
<a name="AutoScaling-Scaling-Criteria-predfined-metrics"></a>

預先定義的指標是參照指定 CloudWatch 指標之特定名稱、維度和統計資料 (`average`) 的結構。Auto Scaling 政策會為您的叢集定義下列其中一項預先定義的指標：


****  

| 預先定義的指標名稱 | CloudWatch 指標名稱 | CloudWatch 指標維度 | 不合格執行個體類型  | 
| --- | --- | --- | --- | 
| ElastiCachePrimaryEngineCPUUtilization |  `EngineCPUUtilization`  |  ReplicationGroupId, Role = Primary  | 無 | 
| ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage |  `DatabaseCapacityUsageCountedForEvictPercentage`  |  Valkey 或 Redis OSS 複寫群組指標  | 無 | 
| ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage |  `DatabaseMemoryUsageCountedForEvictPercentage`  |  Valkey 或 Redis OSS 複寫群組指標  | R6gd | 

無法使用資料層級執行個體類型 `ElastiCacheDatabaseMemoryUsageCountedForEvictPercentage`，因為這些執行個體類型會將資料儲存在記憶體和 SSD 中。資料層級執行個體的預期使用案例是擁有 100% 的記憶體使用量，並視需要填滿 SSD。

## 碎片的 Auto Scaling 條件
<a name="AutoScaling-Scaling-Criteria"></a>

當服務偵測到預先定義指標等於或大於目標設定，便會自動增加碎片容量。ElastiCache for Valkey 和 Redis OSS 會將叢集碎片擴展為等於兩個數字中較大者的計數：與目標的百分比變化和目前碎片的 20%。對於縮減，除非整體指標值低於已定義目標的 75%，否則 ElastiCache 不會自動縮減。

以下提供水平擴展的範例，如果你有 50 個碎片，
+ 如果您的目標違規 30%，ElastiCache 會向外擴展 30%，導致每個叢集產生 65 個碎片。
+ 如果您的目標違規 10%，ElastiCache 預設會向外擴展 最低 20%，因此每個叢集會產生 60 個碎片。

對於縮減範例，如果您已選取目標值 60%，ElastiCache 不會自動縮減，直到指標小於或等於 45% （低於目標 60% 的 25%)。

## Auto Scaling 考量事項
<a name="AutoScaling-Scaling-Considerations"></a>

請謹記以下幾點考量：
+ 目標追蹤擴展政策假設在指定的指標超過目標值時，應執行向外擴展。您無法使用目標追蹤擴展政策在指定的指標低於目標值時執行向外擴展。ElastiCache for Valkey 和 Redis OSS 會將碎片擴展為叢集中現有碎片目標的至少 20% 偏差。
+ 所指定指標的資料不足時，目標追蹤擴展政策不會執行擴展。政策不會執行縮減，因為縮減不會將資料不足解釋為低使用率。
+ 您可能會看到目標值與實際指標資料點之間有些差距。這是因為當 ElastiCache Auto Scaling 決定要新增或移除多少容量時，一律會四捨五入或捨棄，以保守的方式運作。這樣可防止新增不足的容量，或移除過多的容量。
+ 為了確保應用程式可用性，服務可以根據指標依比例快速水平擴展，但需以更保守的方式縮減規模。
+ 您可以為 ElastiCache for Valkey 和 Redis OSS 叢集設定多個目標追蹤擴展政策，前提是每個叢集都使用不同的指標。ElastiCache Auto Scaling 的目的是一律優先考慮可用性，因此其行為會根據目標追蹤政策是否已準備好向外擴展或向內擴展而有所不同。如果任何目標追蹤政策已準備好向外擴展，它就會將服務向外擴展，但只有在所有目標追蹤政策 (已啟用向內擴展部分) 都已準備好要向內擴展時才會向內擴展。
+ 請勿編輯或刪除 ElastiCache Auto Scaling 針對目標追蹤擴展政策管理的 CloudWatch 警示。當您刪除擴展政策時，ElastiCache Auto Scaling 會自動刪除警示。
+ ElastiCache Auto Scaling 不會阻止您手動修改叢集碎片。這些手動調整不會影響附加至調整規模政策的任何現有 CloudWatch 警示，但會影響可能觸發這些 CloudWatch 警示的指標。
+ 這些由 Auto Scaling 管理的 CloudWatch 警示，是根據叢集中所有碎片的 AVG 指標所定義的。因此，使用熱碎片可能會導致以下任一情況：
  + 由於幾個熱碎片上的負載觸發了 CloudWatch 警示，因此在沒有需要時進行擴展
  + 由於跨影響警示的所有碎片之彙總 AVG 沒有超出限制，因此在需要時不進行擴展。
+ 每個叢集節點的 ElastiCache 預設限制仍然適用。因此，當選擇使用 Auto Scaling 且您希望節點數上限超過預設配額時，請至 [AWS 服務配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)請求增加配額，並選擇配額類型 **Nodes per cluster per instance type (每執行個體類型每叢集的節點數)**。
+ 確保 VPC 中有足夠的 ENI (彈性網路介面) 可用，進行水平擴展時會需要用到。如需詳細資訊，請參閱[彈性網路介面](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_ElasticNetworkInterfaces.html)。
+ 如果 EC2 沒有足夠的可用容量，ElastiCache Auto Scaling 將無法擴展，而且會在容量可用時延遲。
+ 在縮減期間，ElastiCache for Redis OSS Auto Scaling 不會移除項目大小大於序列化後 256 MB 的槽碎片。
+ 進行規模縮減期間，如果產生的碎片組態上的可用記憶體不足，就不會移除碎片。