本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
根據 Amazon SQS 設定擴展
本節說明如何根據 Amazon SQS 設定擴展規模。
步驟 1:建立 CloudWatch 自訂量度
自訂指標是您定義使用指標名稱和命名空間定義的。自訂指標命名空間無法以 AWS/
為開頭。有關發佈自訂指標的詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的發佈自訂指標主題。
請遵循此程序,先從您的 AWS 帳戶讀取資訊來建立自訂指標。然後,如先前小節所建議,計算每個執行個體的待處理項目指標。最後,以 CloudWatch 1 分鐘的粒度發佈此數字。我們強烈建議在可能的情況下使用 1 分鐘粒度擴展指標,確保能夠更快地回應系統負載中的變更。
建立 CloudWatch 自訂量度 (AWS CLI)
-
使用 SQS get-queue-attributes命令取得佇列中等待的訊息數目 (
ApproximateNumberOfMessages
)。aws sqs get-queue-attributes --queue-url
https://sqs.region.amazonaws.com/123456789/MyQueue
\ --attribute-names ApproximateNumberOfMessages -
使用指describe-auto-scaling-groups令取得群組的執行容量,即生命
InService
週期狀態中的執行個體數目。此命令傳回的 Auto Scaling 群組的執行個體及其生命週期狀態。aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names
my-asg
-
透過將可從群組擷取的大約訊息數除以機群的執行容量,來計算每個執行個體的待處理項目。
-
建立每分鐘執行一次的指令碼,以擷取每個執行個體值的待處理項目,並將其發佈至 CloudWatch 自訂指標。發佈 Auto Scaling 時,需要指定指標的名稱、命名空間、單位、值以及零個或多個維度。維度由維度名稱和維度值組成。
若要發佈自訂量度,請將預留位置值以
斜體
取代為偏好的量度名稱、量度值、命名空間 (只要不是以 "AWS
「開頭) 和維度 (選用)」,然後執行下列put-metric-data命令。aws cloudwatch put-metric-data --metric-name
MyBacklogPerInstance
--namespaceMyNamespace
\ --unit None --value20
--dimensionsMyOptionalMetricDimensionName=MyOptionalMetricDimensionValue
在您的應用程式發出所需的指標之後,資料就會傳送至 CloudWatch。該指標在控制 CloudWatch 台中可見。您可以通過登錄 AWS Management Console 並導航到 CloudWatch 頁面來訪問它。然後,導覽至指標頁面或是使用搜尋方塊進行搜尋以檢視指標。如需檢視指標的相關資訊,請參閱 Amazon CloudWatch 使用者指南中的檢視可用指標。
步驟 2:建立目標追蹤擴展政策
您建立的指標現在可以新增至目標追蹤擴展政策。
建立目標追蹤擴展政策 (AWS CLI)
-
針對主目錄中名為
config.json
的 JSON 檔案的擴展政策和自訂指標規範,使用以下cat
命令來儲存其目標值。將每個使用者輸入預留位置
替換為自己的資訊。對於TargetValue
,計算每個執行個體的可接受待處理項目指標,然後在這裡輸入。要計算這個數值,需要決定一般延遲值,然後以處理訊息所花的平均時間將其除之,如之前章節所述。如果您沒有為在步驟 1 中建立的指標指定任何維度,請勿在自訂指標規範中包含任何維度。
$ cat ~/config.json { "TargetValue":
100
, "CustomizedMetricSpecification":{ "MetricName":"MyBacklogPerInstance
", "Namespace":"MyNamespace
", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName
", "Value":"MyOptionalMetricDimensionValue
" } ], "Statistic":"Average", "Unit":"None" } } -
使用命put-scaling-policy令以及您在上一個步驟中建立的
config.json
檔案來建立資源調度政策。aws autoscaling put-scaling-policy --policy-name
sqs100-target-tracking-scaling-policy
\ --auto-scaling-group-namemy-asg
--policy-type TargetTrackingScaling \ --target-tracking-configurationfile://~/config.json
這會建立兩個警示:一個用於擴增,而另一個用於縮減。它還會傳回註冊的政策的 Amazon 資源名稱 (ARN),當指標閾值違反時 CloudWatch,該政策 CloudWatch 會使用此名稱呼叫擴展。
步驟 3:測試您的擴展政策
設定完成後,確認您的擴展政策可正常運作。您可以利用提高 SQS 佇列中的訊息數量來測試該政策,然後驗證 Auto Scaling 群組是否有啟動一個額外的 EC2 執行個體。您也可以利用減低 SQS 佇列中的訊息數量來測試縮減政策,然後驗證 Auto Scaling 群組是否有終止一個 EC2 執行個體。
測試擴增函數
-
請遵循建立 Amazon SQS 標準佇列和傳送訊息或建立 Amazon SQS FIFO 佇列,然後傳送訊息以將訊息新增至佇列中的步驟進行操作。請確定您已調升佇列中的訊息數量,因此每個執行個體的待處理項目指標才會達到目標值。
這變更可能需要幾分鐘的時間來呼叫警示。
-
使用指describe-auto-scaling-groups令驗證群組是否已啟動執行個體。
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name
my-asg
在函數中測試刻度
-
依照接收和刪除訊息 (主控台) 中的步驟,刪除佇列中的訊息。請確定您已調降佇列中的訊息數量,因此每個執行個體的待處理項目指標才會低於目標值。
這變更可能需要幾分鐘的時間來呼叫警示。
-
使用指describe-auto-scaling-groups令驗證群組是否已終止執行個體。
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name
my-asg