雲計算

使用vCpu度量您的伸縮組

內容

  • 使用vCpu對伸縮組進行容量加權
  • 單位權重的價格
  • 伸縮組擴縮容行為
  • 注意事項
  • 示例

使用vCpu對伸縮組進行容量加權

彈性伸縮允許您為伸縮組中的實例規格設置不同的容量權重,使得不同實例規格的單個實例在伸縮組中表示不同的容量。目前,您可以通過以下兩種方式設置伸縮組實例權重:

  1. 若您使用伸縮配置作為配置來源,您可以為伸縮配置中各實例規格指定容量權重;
  2. 若您使用啟動模板作為配置來源,您可以通過彈性伸縮提供的啟動模板覆蓋參數,擴展啟動模板以支持多實例規格,並在啟動模板覆蓋參數中指定各實例規格的容量權重。

通過以實例規格的vCpu個數對實例規格進行容量加權,伸縮組將以vCpu為容量單位,伸縮組容量大小,將直接反映伸縮組內vCpu個數。下面通過一個具體示例為您展示如何設置vCpu容量。

假設您運行著一個計算敏感型應用,該應用需要至少4 vCPU, 8GiB以滿足最小運行需求。為了提高伸縮組創建實例的成功率,您選擇了多個滿足條件的實例規格:

實例規格 核數 內存
ecs.c5.xlarge 4 8
ecs.c5.2xlarge 8 16
ecs.c5.3xlarge 16 32

設置實例權重時,您可以根據需要選擇合適的容量單位,例如,以實例個數,vCpu個數,內存個數等作為容量單位。此處,我們將單個vCpu作為伸縮組容量單位。由此,計算出各實例規格的權重:

  • ecs.c5.xlarge = 4 容量單位
  • ecs.c5.2xlarge = 8 容量單位
  • ecs.c5.3xlarge = 16 容量單位

此時,若應用實際需要40c80g,即40倍的容量單位大小,伸縮組的期望容量大小應當為40,伸縮組在擴縮容的過程中,也將以容量單位為最小粒度進行。

彈性伸縮強烈建議您按照以下方式設置實例權重:

  • 使用與實例規格相關的性能指標設置實例權重,例如,cpu核數(vCPUs),內存個數(GiBs)。您可以以單個vCpu,1GiB內存或某個最小規格作為伸縮組容量單位,此時伸縮組的MaxSize,MinSize,DesiredCapacity是相對該容量單位計算的;
  • 儘量不要為不同規格設置差距過大的權重。例如,較小規格的權重設置為1,較大規格的權重設置為200。如果權重之間的差距過大,將對伸縮組的總體成本產生負面影響;
  • 設置合適的權重大小,儘量保證伸縮組內當前容量至少是2到3倍的最大權重值;

單位權重的價格

對於競價實例,您在伸縮配置/啟動模板中設置的競價實例最高價應當為單個實例每小時價格。該價格應當高於伸縮組中任意實例規格的每小時價格,當競價實例當前價格低於您的最高出價,並且具有可用容量時,彈性伸縮將為您創建競價實例。

對於採用成本優化擴展策略的伸縮組,在擴容過程中,當設置實例權重,伸縮組將根據每單位權重每小時價格確定最低價實例規格/可用區配置。下表為您展示了每單位權重每小時價格的計算方式:

實例規格 每小時價格 權重 每單位權重每小時價格
ecs.c5.large 0.18 2 0.090
ecs.c5.xlarge 0.34 4 0.085
ecs.c5.2xlarge 0.64 8 0.080

伸縮組擴縮容行為

  • 伸縮活動允許超量擴容。超量擴容是指單次伸縮活動實際擴容量超出該活動期望擴容量。例如,您設置ecs.c5.2xlarge的權重為2,ecs.c5.12xlarge的權重為12,若伸縮活動期望擴容5個容量單位,彈性伸縮可能為您創建1個ecs.c5.12xlarge類型實例,比您期望擴容量多7個容量單位;
  • 伸縮組當前容量允許超過DesiredCapacity/MaxSize。伸縮組中當前容量允許超過DesiredCapacity,MaxSize,例如,MaxSize為5,伸縮組中可能包含一個ecs.c5.12xlarge實例,其權重為12,此時伸縮組容量超過 MaxSize 7個容量單位;
  • 彈性伸縮擴縮容過程中,優先根據伸縮組擴展策略進行容量分配,而不是避免容量超出期望。例如,您期望擴容4個容量單位,若擴展策略確定該次擴容應當選擇ecs.c5.12xlarge類型,即使可能超出期望容量,彈性伸縮仍將為您生產1個ecs.c5.12xlarge實例,而不是2個ecs.c5.2xlarge實例;
  • 伸縮活動超出期望擴容量的容量或伸縮組當前容量超過DesiredCapacity/MaxSize的容量,必須小於最大權重值。例如:若伸縮組MaxSize為5,上例中,最大權重為12,則伸縮組中容量一定小於17(5+12)。

注意事項

  • 當您為伸縮組設置實例權重時,必須同時設置伸縮組中所有實例已使用的實例規格的權重;
  • 當您修改已存在實例權重時,彈性伸縮將根據新的權重信息重新計算伸縮組當前容量,可能觸發新的擴縮容活動;
  • 即使您刪除伸縮配置中某實例規格,伸縮組將依然記錄該規格最新權重值。

示例

此處以使用啟動模板作為配置來源的伸縮組為例,為您展示了通過啟動模板覆蓋參數擴展啟動模板支持伸縮組多實例規格,並同時設置伸縮組實例權重,以vCpu個數作為伸縮組容量單位。

// set up launch template overrides
LaunchTemplateOverride launchTemplateOverride1 = new LaunchTemplateOverride();
launchTemplateOverride1.setInstanceType("ecs.c5.large");
launchTemplateOverride1.setWeightedCapacity(2);
LaunchTemplateOverride launchTemplateOverride2 = new LaunchTemplateOverride();
launchTemplateOverride2.setInstanceType("ecs.c5.xlarge");
launchTemplateOverride2.setWeightedCapacity(4);
List<CreateScalingGroupRequest.LaunchTemplateOverride> launchTemplateOverrides = Lists.newArrayList(launchTemplateOverride1,launchTemplateOverride2);
// create scaling group
CreateScalingGroupRequest request = new CreateScalingGroupRequest();
request.setMinSize(0);
request.setMaxSize(100);
request.setScalingGroupName("example");
request.setLaunchTemplateId(launchTemplateId);
request.setLaunchTemplateVersion("Default");
request.setLaunchTemplateOverrides(launchTemplateOverrides);
return client.getAcsResponse(request).getScalingGroupId();

Leave a Reply

Your email address will not be published. Required fields are marked *