本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Auto Scaling Valkey 和 Redis OSS叢集
必要條件
ElastiCache Auto Scaling 僅限於下列項目:
-
執行 Valkey 7.2 以上版本或執行 Redis 6.0 以上版本的 Valkey 或 Redis OSS(啟用叢集模式) OSS 叢集
-
執行 Valkey 7.2 以上版本或執行 Redis 7.0.7 OSS 以上版本的資料分層 (啟用叢集模式) 叢集
-
執行個體大小 - 大型、XLarge、2XLarge
-
執行個體類型系列 - R7g、R6g、R6gd、R5、M7g、M6g、M5、C7gn
-
全域資料存放區、Outpost 或本機區域中執行的叢集 ElastiCache 不支援在 Auto Scaling。
使用 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 for Valkey 和 Redis OSS支援下列維度的擴展:
-
碎片 - 自動新增/移除叢集中的碎片,類似於手動線上重新分片。在這種情況下, ElastiCache自動擴展會觸發代表您擴展。
-
複本 – add/remove replicas in the cluster similar to manual Increase/Decrease replica operations. ElastiCache auto scaling for Valkey and Redis OSS adds/removes 在叢集中的所有碎片中統一地自動複寫。
ElastiCache for Valkey 和 Redis OSS支援下列類型的自動擴展政策:
-
目標追蹤擴展政策 - 根據特定指標的目標值,增加或減少服務執行的碎片/複本數。這與您運用電熱器維持家中溫度的方式很類似。您只需選取溫度,電熱器會自行執行其餘操作。
-
為您的應用程式排程擴展。 – ElastiCache 針對 Valkey 和 Redis OSS自動擴展,可以增加或減少服務根據日期和時間執行的碎片/複本數量。
下列步驟摘要說明 ElastiCache 適用於 Valkey 和 Redis 的OSS自動擴展程序,如上圖所示:
-
您可以為複寫群組建立 ElastiCache 自動擴展政策。
-
ElastiCache 自動擴展會代表您建立一對 CloudWatch 警示。每對指標皆代表指標的上限與下限。當叢集的實際使用率偏離您的目標使用率持續一段時間時,就會觸發這些 CloudWatch 警示。您可以在主控台中檢視警示。
-
如果設定的指標值超過您的目標使用率 (或低於目標) 達特定時間長度, CloudWatch 會觸發 警示來叫用自動擴展以評估您的擴展政策。
-
ElastiCache 自動擴展會發出修改請求來調整叢集容量。
-
ElastiCache 會處理修改請求,動態增加 (或減少) 叢集碎片/複本容量,使其接近您的目標使用率。
若要了解 ElastiCache Auto Scaling 的運作方式,假設您有名為 的叢集UsersCluster
。透過監控 的 CloudWatch 指標UsersCluster
,您可以判斷當流量處於其峰值時,叢集所需的最大碎片,以及當流量處於其最低點時所需的最小碎片。您也可以決定UsersCluster
叢集CPU使用率的目標值。 ElastiCache 自動擴展會使用其目標追蹤演算法,以確保 的佈建碎片會視需要UsersCluster
進行調整,讓使用率保持在目標值或接近目標值。
注意
擴展可能需要很長的時間,且需要額外的叢集資源,碎片才能重新平衡。 ElastiCache Auto Scaling 只有在實際工作負載持續升高 (或降低) 數分鐘時,才會修改資源設定。自動擴展目標追蹤演算法會長期嘗試將目標使用率保持在您選擇的值或接近所選值。
IAM Auto Scaling 所需的許可
ElastiCache for Valkey 和 Redis OSS Auto Scaling 是結合 ElastiCache CloudWatch和 Application Auto Scaling 所實現的APIs。叢集會建立並更新 ElastiCache,警示會建立 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 前,我們建議以下事項:
-
僅使用一個追蹤指標 – 識別叢集是否具有 CPU或資料密集型工作負載,並使用對應的預先定義指標來定義擴展政策。
-
引擎 CPU:
ElastiCachePrimaryEngineCPUUtilization
(碎片維度) 或ElastiCacheReplicaEngineCPUUtilization
(複本維度) -
資料庫使用量:
ElastiCacheDatabaseCapacityUsageCountedForEvictPercentage
此擴展政策在叢集上將 maxmemory-policy 設為 noeviction 時效果最佳。
我們建議您避免叢集上每個維度的多個政策。 ElastiCache 對於 Valkey 和 Redis OSS Auto 擴展,如果任何目標追蹤政策已準備好進行擴展,則將擴展可擴展的目標,但只有在所有目標追蹤政策 (啟用縮減部分) 都準備好擴展時,才會擴展。如果多個政策指示可擴展的目標在同一時間進行水平擴展或縮減,則會根據針對水平擴展和縮減提供最大容量的政策進行擴展。
-
-
用於目標追蹤的自訂指標 – 使用自訂指標進行目標追蹤時需小心謹慎,因為 Auto Scaling 最適合用於根據為策略所選指標的根據為策略所選指標的變更,依比例擴展/縮減規模。如果這些指標未與用於政策建立的擴展操作比例地變化,則可能會導致持續的橫向擴展或縮減操作,這可能會影響可用性或成本。
對於資料分層叢集 (r6gd 系列執行個體類型),請避免使用記憶體指標進行擴展。
-
排程規模調整 - 如果您發現工作負載具確定性 (會在特定時間達到高/低負載),建議您使用排程規模調整功能,根據需求設定目標容量。目標追蹤可在需要更多資源時橫向擴展,並在需要較少資源時縮減,最適合用於讓非確定性工作負載和叢集以所需的目標指標運作。
-
停用縮減 – 在目標追蹤上自動擴展最適合具有逐步振increase/decrease of workloads as spikes/dip in metrics can trigger consecutive scale-out/in盪的叢集。若要避免這種振盪,可以從停用縮減功能開始,您之後可以隨時根據需求手動縮減。
-
測試您的應用程式 – 建議您使用叢集Min/Max workloads to determine absolute Min,Max shards/replicas所需的預估值測試應用程式,同時建立 Scaling 政策以避免可用性問題。自動調整規模可以橫向擴展至為目標設定的最大值,也可縮減至最小值。
-
定義目標值 – 您可以分析叢集使用率在四週期間內的對應 CloudWatch 指標,以判斷目標值閾值。如果您仍不確定要選擇哪個值,建議從支援的最小預先定義指標值開始。
-
AutoScaling on Target Tracking 最適合工作負載分佈在碎片/複本維度的叢集。不均勻分配可能會導致:
-
因工作負載而不需要擴展 spike/dip on a few hot shards/replicas。
-
即使具有熱碎片/複本,但由於整體平均接近目標,因此有需要時不進行縮放。
-
注意
向外擴展叢集時, ElastiCache 會自動將其中一個現有節點 (隨機選取) 中載入的函數複寫至新的節點。如果您的叢集有 Valkey 或 Redis OSS 7.0 或更新版本,且您的應用程式使用 函數
註冊至 後 AutoScaling,請注意下列事項:
-
支援自動調整規模的組態具有限制,因此建議您不要變更已針對自動調整規模註冊之複寫群組的組態。範例如下:
-
手動將執行個體類型修改為不支援的類型。
-
為複寫群組與全域資料存放區建立關聯。
-
變更
ReservedMemoryPercent
參數。 -
在建立政策期間手動設定的increasing/decreasing shards/replicas beyond the Min/Max容量。
-