Ubuntu

根據記憶體使用率自動擴展 AWS EC2 實例

  • November 20, 2017

我正在根據特定實例消耗的記憶體設置自動縮放。我瀏覽了awsforums上發布的連結。我能夠設置我的指標並使用給定的 bash 腳本和相同的變數。

在弄清楚如何根據這些指標設置自動縮放時,我開始了解google 項目託管站點上的一堆 bash 腳本。我無法設置指標。

我怎麼能走得更遠?

顯示 4 個 Cloudwatch 警報的圖像沒有足夠的數據進行評估

將記憶體指標記錄到 Cloudwatch 後,您只需像設置任何現有指標一樣設置自動縮放。

首先,與所有 AWS 命令​​行工具一樣,您需要設置(導出):

  • AWS_CREDENTIAL_FILE 或
  • 兩者:EC2_PRIVATE_KEY 和 EC2_CERT

接下來,您執行以下三個命令,根據您的需要修改它們(這些只是從命令行執行 - 一次 - 而不是從 cron 執行)。

創建啟動配置: 您至少需要傳遞圖像和實例類型,其他參數是可選的,但可能是個好主意。

as-create-launch-config
       LaunchConfigurationName  --image-id  value  --instance-type  value
      [--block-device-mapping  "key1=value1,key2=value2..." ] [--kernel  value]
      [--key  value ] [--ramdisk  value ] [--group  value[,value...] ]
      [--user-data  value ] [--user-data-file  value ]  [General Options]

例如:

as-create-launch-config config-name --image-id AMI-xxxxxxxx --instance-type m1.small --key keypair-name --group security-group-name

創建自動縮放組: 在這裡我們定義了縮放參數——實例將在哪裡啟動,實例數量的限制,並將組與我們創建的配置相關聯。

as-create-auto-scaling-group
       AutoScalingGroupName  --availability-zones  value[,value...]
       --launch-configuration  value  --max-size  value  --min-size  value
      [--cooldown  value ] [--load-balancers  value[,value...] ]
       [General Options]

例如:

as-create-auto-scaling-group as-group-name --availability-zones us-east-1a --launch-configuration config-name --min-size 1 --max-size 5 --cooldown 300

(您還可以指定一個 –desired-capacity ,它是要開始的實例數,如果它與最小大小不同)

創建要擴展的策略: 在這裡,我們定義觸發警報時將執行的操作,並將策略與特定的自動擴展組相關聯。創建一項擴大規模和一項縮小規模的政策。

as-put-scaling-policy
       PolicyName  --type  value  --auto-scaling-group  value  --adjustment
      value [--cooldown  value ]  [General Options]

此命令輸出將策略與 cloudwatch 警報關聯所需的 ARN - 記下 ARN。每個命令將返回一個不同的 ARN - 即您將有 2 個 ARN - 記住哪個用於哪個策略。

例如:

放大:

as-put-scaling-policy HighMemPolicy --auto-scaling-group as-group-name  --adjustment=1 --type ChangeInCapacity  --cooldown 300

縮小:

as-put-scaling-policy LowMemPolicy --auto-scaling-group as-group-name  --adjustment=-1 --type ChangeInCapacity  --cooldown 300

範例返回:

POLICY-ARN arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/abc-1234-def-567

為每個案例創建一個 Cloudwatch 警報: 我們需要使用我們收集的數據在特定情況下觸發警報,然後讓該警報執行適當的擴展策略。您將需要 2 個警報 - 一個用於上限門檻值,一個用於下限門檻值。

mon-put-metric-alarm
       AlarmName  --comparison-operator  value  --evaluation-periods  value
       --metric-name  value  --namespace  value  --period  value  --statistic
      value  --threshold  value [--actions-enabled  value ] [--alarm-actions
      value[,value...] ] [--alarm-description  value ] [--dimensions
      "key1=value1,key2=value2..." ] [--insufficient-data-actions
      value[,value...] ] [--ok-actions  value[,value...] ] [--unit  value ]
       [General Options]

例如:

上限門檻值:

mon-put-metric-alarm HighMemAlarm  --comparison-operator  GreaterThanThreshold  --evaluation-periods  4 --metric-name  UsedMemoryPercent  --namespace  "AWS/EC2"  --period  60  --statistic Average --threshold  85 --alarm-actions arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/abc-1234-def-567 --dimensions "AutoScalingGroupName=as-group-name"

下限:

mon-put-metric-alarm LowMemAlarm  --comparison-operator  LessThanThreshold --evaluation-periods  4 --metric-name  UsedMemoryPercent --namespace  "AWS/EC2"  --period  60  --statistic Average --threshold  60  --alarm-actions arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/bcd-2345-efg-678 --dimensions "AutoScalingGroupName=as-group-name"

在上面的範例中,我們使用度量標準“UsedMemoryPercent”(來自論壇腳本)並查看“平均超過 60 秒”。對於第一個警報,如果連續 4 個樣本(即 4 分鐘)的平均值超過 85%,我們將觸發警報(並執行操作),對於第二個警報,我們尋找“小於 60%”。

好的參考資料包括:

執行命令--help以查看參數的詳細資訊。

引用自:https://serverfault.com/questions/349208