Auto Scaling Valkey 和 Redis OSS叢集 - Amazon ElastiCache

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

Auto Scaling Valkey 和 Redis OSS叢集

必要條件

ElastiCache Auto Scaling 僅限於下列項目:

  • 執行 Valkey 7.2 以上版本或執行 Redis OSS引擎 6.0 以上版本的 Valkey 或 Redis OSS(啟用叢集模式) 叢集

  • 執行 Valkey 7.2 以上版本或執行 Redis OSS引擎 7.0.7 以上版本的資料分層 (啟用叢集模式) 叢集

  • 執行個體大小 - 大型、XLarge、2XLarge

  • 執行個體類型系列 - R7g、R6g、R6gd、R5、M7g、M6g、M5、C7gn

  • 在全球資料存放區、Outpost 或本機區域中執行的叢集 ElastiCache 不支援 Auto Scaling in。

使用 Valkey 或 Redis ElastiCache Auto Scaling自動管理容量 OSS

ElastiCache 使用 Valkey 或 Redis 自動擴展OSS是自動增加或減少 ElastiCache 服務中所需碎片或複本的能力。 ElastiCache 利用 Application Auto Scaling 服務提供此功能。如需詳細資訊,請參閱 Application Auto Scaling。若要使用自動擴展,您可以定義並套用擴展政策,該政策使用您指派的 CloudWatch 指標和目標值。 ElastiCache 自動擴展使用政策來增加或減少回應實際工作負載的執行個體數量。

您可以使用 AWS Management Console ,根據預先定義的指標套用擴展政策。predefined metric 是在列舉中定義,如此您就可以在程式碼中依名稱指定指標,或是在 AWS Management Console中使用指標。使用 AWS Management Console時無法選擇自訂指標。或者,您可以使用 AWS CLI 或 Application Auto ScalingAPI,根據預先定義的或自訂指標套用擴展政策。

ElastiCache 搭配 Valkey 或 Redis OSS支援擴展下列維度:

  • 碎片 - 自動新增/移除叢集中的碎片,類似於手動線上重新分片。在此情況下, ElastiCache自動擴展會觸發代表您擴展。

  • 複本 - 自動新增/移除叢集中的複本,類似於手動增加/減少複本作業。 ElastiCache 透過 Valkey 或 Redis OSS自動擴展,在叢集中的所有碎片中均勻地新增/移除複本。

ElastiCache 搭配 Valkey 或 Redis OSS支援下列類型的自動擴展政策:

ElastiCache 使用 Valkey 或 Redis 自動擴展 的影像 OSS

下列步驟摘要說明 ElastiCache 使用 Valkey 或 Redis OSS自動擴展程序的 ,如上圖所示:

  1. 您可以為複寫群組建立 ElastiCache 自動擴展政策。

  2. ElastiCache 使用 Valkey 或 Redis 自動擴展會代表您OSS建立一對 CloudWatch 警示。每對指標皆代表指標的上限與下限。當叢集的實際使用率偏離您的目標使用率持續一段時間時,就會觸發這些 CloudWatch 警示。您可以在主控台中檢視警示。

  3. 如果設定的指標值超過您的目標使用率 (或低於目標) 達特定時間長度, CloudWatch 會觸發 警示來叫用自動擴展來評估擴展政策。

  4. ElastiCache 透過 Valkey 或 Redis OSS自動擴展,發出修改請求來調整叢集容量。

  5. ElastiCache 使用 Valkey 或 Redis OSS處理修改請求,動態增加 (或減少) 叢集碎片/複本容量,以便接近您的目標使用率。

若要了解如何 ElastiCache 使用 Valkey 或 Redis OSS Auto Scaling,假設您有名為 的叢集UsersCluster。透過監控 的 CloudWatch 指標UsersCluster,您可以判斷當流量處於其峰值時,叢集所需的最大碎片,以及當流量處於其最低點時所需的最小碎片。您也可以決定UsersCluster叢集CPU使用的目標值。 ElastiCache 自動擴展使用其目標追蹤演算法,以確保 的佈建碎片會視需要UsersCluster進行調整,以便利用率保持在目標值或接近目標值。

注意

擴展可能需要很長的時間,並且需要額外的叢集資源才能讓碎片重新平衡。 ElastiCache 使用 Valkey 或 Redis OSS Auto Scaling 只有在實際工作負載持續幾分鐘保持升高 (或降低) 時,才能修改資源設定。自動擴展目標追蹤演算法會長期嘗試將目標使用率保持在所選值或接近所選值。

IAM Auto Scaling 所需的許可

ElastiCache 透過 Valkey 或 Redis OSS Auto Scaling,可透過 ElastiCache CloudWatch、 和 Application Auto Scaling 的組合實現APIs。叢集是使用 ElastiCache (Redis OSS) 建立和更新,警示是使用 建立 CloudWatch,擴展政策是使用 Application Auto Scaling 建立。除了建立和更新叢集的標準IAM許可外,存取 ElastiCache Auto Scaling 設定IAM的使用者必須具有支援動態擴展之服務的合適許可。IAM 使用者必須具有使用下列範例政策中所示動作的許可:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:*", "elasticache:DescribeReplicationGroups", "elasticache:ModifyReplicationGroupShardConfiguration", "elasticache:IncreaseReplicaCount", "elasticache:DecreaseReplicaCount", "elasticache:DescribeCacheClusters", "elasticache:DescribeCacheParameters", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarmHistory", "cloudwatch:DescribeAlarms", "cloudwatch:DescribeAlarmsForMetric", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:PutMetricAlarm", "cloudwatch:DisableAlarmActions", "cloudwatch:EnableAlarmActions", "iam:CreateServiceLinkedRole", "sns:CreateTopic", "sns:Subscribe", "sns:Get*", "sns:List*" ], "Resource": "arn:aws:iam::123456789012:role/autoscaling-roles-for-cluster" } ] }

服務連結角色

ElastiCache 使用 Valkey 或 Redis OSS自動擴展服務的 也需要描述叢集和 CloudWatch 警示的許可,以及代表您修改 ElastiCache 目標容量的許可。如果您為叢集啟用 Auto Scaling,它會建立名為 的服務連結角色AWSServiceRoleForApplicationAutoScaling_ElastiCacheRG。此服務連結角色會授予 ElastiCache 自動擴展許可,以描述政策的警示、監控機群的目前容量,以及修改機群的容量。服務連結角色是 ElastiCache 自動擴展的預設角色。如需詳細資訊,請參閱 Application Auto Scaling 使用者指南中的 ElastiCache (Redis OSS) 自動擴展的服務連結角色

Auto Scaling 最佳實務

註冊 Auto Scaling 前,我們建議以下事項:

  1. 僅使用一個追蹤指標 – 識別叢集是否具有 CPU或資料密集型工作負載,並使用對應的預先定義指標來定義擴展政策。

    • 引擎 CPU: ElastiCachePrimaryEngineCPUUtilization (碎片維度) 或 ElastiCacheReplicaEngineCPUUtilization(複本維度)

    • 資料庫使用量:ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage 此擴展政策在叢集上將 maxmemory-policy 設為 noeviction 時效果最佳。

    我們建議您避免叢集上每個維度的多個政策。如果任何目標追蹤政策已準備好進行擴展, ElastiCache 則透過 Valkey 或 Redis OSS Auto 擴展將擴展可擴展的目標,但只有在所有目標追蹤政策 (啟用擴展部分) 都準備好擴展時,才會擴展。如果多個政策指示可擴展的目標在同一時間進行水平擴展或縮減,則會根據針對水平擴展和縮減提供最大容量的政策進行擴展。

  2. 用於目標追蹤的自訂指標 – 使用自訂指標進行目標追蹤時需小心謹慎,因為 Auto Scaling 最適合用於根據為策略所選指標的根據為策略所選指標的變更,依比例擴展/縮減規模。如果這些指標未與用於政策建立的擴展操作比例地變化,則可能會導致持續的橫向擴展或縮減操作,這可能會影響可用性或成本。

    對於資料分層叢集 (r6gd 系列執行個體類型),請避免使用記憶體指標進行擴展。

  3. 排程規模調整 - 如果您發現工作負載具確定性 (會在特定時間達到高/低負載),建議您使用排程規模調整功能,根據需求設定目標容量。目標追蹤可在需要更多資源時橫向擴展,並在需要較少資源時縮減,最適合用於讓非確定性工作負載和叢集以所需的目標指標運作。

  4. 停用縮減 - 針對目標追蹤自動調整規模的功能最適合用於工作負載逐漸增加/減少的叢集,因為指標的峰值/低谷可能會觸發連續的橫向擴展/縮減振盪。若要避免這種振盪,可以從停用縮減功能開始,您之後可以隨時根據需求手動縮減。

  5. 測試您的應用程式 - 建議您使用預估的最小/最大工作負載來測試應用程式,以確定叢集所需的絕對碎片/複本數下限與上限,同時建立規模調整政策以避免可用性問題。自動調整規模可以橫向擴展至為目標設定的最大值,也可縮減至最小值。

  6. 定義目標值 – 您可以分析叢集使用率在四週期間內的對應 CloudWatch 指標,以判斷目標值閾值。如果您仍不確定要選擇哪個值,建議從支援的最小預先定義指標值開始。

  7. AutoScaling 在目標追蹤上,最適合工作負載分佈在碎片/複本維度的叢集。不均勻分配可能會導致:

    • 由於幾個熱碎片/複本上出現工作負載峰值/低谷,因此在沒有需要時進行擴展。

    • 即使具有熱碎片/複本,但由於整體平均接近目標,因此有需要時不進行縮放。

注意

擴展叢集時, ElastiCache 會自動將其中一個現有節點 (隨機選取) 中載入的函數複寫至新的節點。如果您的叢集具有 Valkey OSS 或 Redis 7.0 或更新版本,且您的應用程式使用函數 ,建議您先將所有函數載入所有碎片,然後再向外擴展,這樣您的叢集就不會最終在不同的碎片上產生不同的函數。

註冊 之後 AutoScaling,請注意下列事項:

  • 支援自動調整規模的組態具有限制,因此建議您不要變更已針對自動調整規模註冊之複寫群組的組態。範例如下:

    • 手動將執行個體類型修改為不支援的類型。

    • 為複寫群組與全域資料存放區建立關聯。

    • 變更 ReservedMemoryPercent 參數。

    • 手動將碎片/複本增加/減少至超出政策建立期間設定的容量上限/下限。