全部產品
Search
文件中心

:ALIYUN::ESS::ScalingGroup

更新時間:Oct 25, 2024

ALIYUN::ESS::ScalingGroup類型用於建立伸縮組。伸縮組是具有相同應用情境的ECS執行個體的集合,建立成功後不會立即生效,需要使用ALIYUN::ESS::ScalingGroupEnable啟用伸縮組,才能觸發伸縮活動,執行伸縮規則。

文法

{
  "Type": "ALIYUN::ESS::ScalingGroup",
  "Properties": {
    "MultiAZPolicy": String,
    "DesiredCapacity": Integer,
    "NotificationConfigurations": List,
    "ProtectedInstances": List,
    "LaunchTemplateId": String,
    "LaunchTemplateVersion": String,
    "ScalingGroupName": String,
    "VSwitchIds": List,
    "DefaultCooldown": Integer,
    "MinSize": Integer,
    "GroupDeletionProtection": Boolean,
    "MaxSize": Integer,
    "InstanceId": String,
    "VSwitchId": String,
    "LoadBalancerIds": List,
    "StandbyInstances": List,
    "RemovalPolicys": List,
    "HealthCheckType": String,
    "DBInstanceIds": List,
    "Tags": List,
    "OnDemandPercentageAboveBaseCapacity": Integer,
    "CompensateWithOnDemand": Boolean,
    "ContainerGroupId": String,
    "ScalingPolicy": String,
    "SpotInstanceRemedy": Boolean,
    "SpotInstancePools": Integer,
    "OnDemandBaseCapacity": Integer,
    "GroupType": String,
    "LaunchTemplateOverrides": List,
    "AllocationStrategy": String,
    "AzBalance": Boolean,
    "MaxInstanceLifetime": Integer,
    "CustomPolicyARN": String,
    "SpotAllocationStrategy": String,
    "ServerGroups": List,
    "ResourceGroupId": String
  }
}

屬性

屬性名稱

類型

必須

允許更新

描述

約束

MinSize

Integer

伸縮組內ECS執行個體個數的最小值。

取值範圍:0~1000。

當伸縮組內ECS執行個體數小於MinSize時,Auto Scaling會自動建立ECS執行個體。

MaxSize

Integer

伸縮組內ECS執行個體個數的最大值。

取值範圍:0~1000。

當伸縮組內ECS執行個體數大於MaxSize時,Auto Scaling會自動移出ECS執行個體。

ScalingGroupName

String

伸縮組的顯示名稱。

長度為2~64個字元。以數字、英文字母或漢字開頭,可包含英文字母、漢字、數字、底線(_)、短劃線(-)和半形句號(.)。

同一帳號同一地區內名稱唯一。

預設值:ScalingGroupId。

LaunchTemplateId

String

執行個體啟動模板ID,用於指定伸縮組從執行個體啟動模板擷取啟動配置資訊。

LaunchTemplateVersion

String

ECS執行個體啟動模板的版本。

取值:

  • 固定的模板版本號碼。

  • Default:始終使用模板預設版本。

  • Latest:始終使用模板最新版本。

RemovalPolicys

List

ECS執行個體移出伸縮組的策略。

取值:

  • OldestInstance(預設值):移出最早加入伸縮組的ECS執行個體。

  • NewestInstance:移出最新加入伸縮組的ECS執行個體。

  • OldestScalingConfiguration(預設值):移出最早伸縮配置建立的ECS執行個體。

VSwitchId

String

交換器ID。

LoadBalancerIds

List

Server Load Balancer執行個體的ID。

取值可以是由多台Server Load Balancer執行個體ID組成一個JSON數組,最多支援5個ID,ID之間用半形逗號(,)隔開。

DefaultCooldown

Integer

一次伸縮活動(添加或移出ECS執行個體)結束後的一段冷卻時間。

取值範圍:0~86,400。

單位:秒。

預設值:300 。

冷卻時間內,該伸縮組不執行其它的伸縮活動,僅針對CloudMonitor警示任務觸發的伸縮活動有效。

DBInstanceIds

List

雲資料庫RDS版執行個體的ID。

取值可以是由多台RDS執行個體ID組成一個JSON數組,最多支援8個ID,ID之間用半形逗號(,)隔開。

VSwitchIds

List

多個交換器ID。

最多可指定5個交換器ID。當指定VSwitchIds時,將忽略VSwitchId的值。交換器的優先順序按照指定順序依次減小。 當優先順序較高的虛擬交換器所在可用性區域無法建立ECS執行個體時,自動選擇下一優先順序的虛擬交換器建立ECS執行個體。

MultiAZPolicy

String

多可用性區域伸縮組ECS執行個體擴縮容策略。

取值:

  • PRIORITY:根據您定義的虛擬交換器擴縮容。當優先順序較高的虛擬交換器所在可用性區域無法建立ECS執行個體時,自動使用下一優先順序的虛擬交換器建立ECS執行個體。

  • BALANCE:在伸縮組指定的多可用性區域之間均勻分配ECS執行個體。

  • COST_OPTIMIZED:按vCPU單價從低到高進行嘗試建立。當伸縮配置設定了搶佔式計費方式的多執行個體規格時,優先建立對應搶佔式計費執行個體。當搶佔式計費執行個體由於庫存等原因無法建立時,自動嘗試以隨用隨付的方式建立。

NotificationConfigurations

List

事件及資源變化通知的配置列表。

更多資訊,請參見NotificationConfigurations屬性

ProtectedInstances

List

伸縮組內處於保護模式的ECS執行個體個數。

最多支援1000個執行個體。

StandbyInstances

List

伸縮組內處於備用模式的ECS執行個體個數。

最多支援1000個執行個體。

HealthCheckType

String

健全狀態檢查類型。

取值:

  • ECS

  • NONE

GroupDeletionProtection

Boolean

是否開啟伸縮組刪除保護。

取值:

  • true:開啟伸縮組刪除保護,此時不能刪除該伸縮組。

  • false(預設值):關閉伸縮組刪除保護。

DesiredCapacity

Integer

伸縮組內ECS執行個體的期望數量,伸縮組會自動將ECS執行個體數量維持在期望執行個體數。

取值大於等於MinSize,小於等於MaxSize。

InstanceId

String

ECS執行個體的ID。建立伸縮組時,將從指定的執行個體擷取所需的配置資訊,並自動建立伸縮配置。

Tags

List

標籤。

最多支援添加20個標籤。

更多資訊,請參見Tags屬性

OnDemandPercentageAboveBaseCapacity

Integer

超出的執行個體中按量執行個體應占的比例。

伸縮組滿足最小按量執行個體數(OnDemandBaseCapacity)要求後,超出的執行個體中按量執行個體應占的比例。

取值範圍:0~100。

CompensateWithOnDemand

Boolean

是否允許自動嘗試建立滿足ECS執行個體數要求的按量執行個體。

當MultiAZPolicy取值為COST_OPTIMIZED時,如果因價格、庫存等原因無法建立足夠的搶佔式執行個體,是否允許自動嘗試建立滿足ECS執行個體數要求的按量執行個體。

取值:

  • true(預設值):允許。

  • false:不允許。

ContainerGroupId

String

ECI執行個體ID。

ScalingPolicy

String

指定伸縮組的回收模式。

取值:

  • recycle:停機模式。

  • release:釋放模式。

ScalingPolicy指定伸縮組的回收模式,但執行個體被移出伸縮組時的具體動作,由RemoveInstances的RemovePolicy參數決定。更多資訊,請參見RemoveInstances

SpotInstanceRemedy

Boolean

是否開啟補齊搶佔式執行個體。

取值:

  • true:開啟補齊搶佔式執行個體。

    開啟後,當收到搶佔式執行個體將被回收的系統訊息時,伸縮組將嘗試建立新的執行個體,替換掉將被回收的搶佔式執行個體。

  • false:未開啟補齊搶佔式執行個體。

SpotInstancePools

Integer

指定可用執行個體規格的個數。

伸縮組將按成本最低的多個規格均衡建立搶佔式執行個體。

取值範圍:1~10。

OnDemandBaseCapacity

Integer

伸縮組所需要按量執行個體個數的最小值。

取值範圍:0~1000。

當按量執行個體個數少於該值時,將優先建立按量執行個體。

GroupType

String

伸縮組管理的執行個體類型。

取值:

  • ECS(預設值):伸縮組內管理的伸縮為ECS執行個體。

  • ECI:伸縮組內管理的伸縮為ECI執行個體。

LaunchTemplateOverrides

List

擴充啟動模板的執行個體規格資訊。

AllocationStrategy

String

容量分配策略。

決定了伸縮組如何選擇可用的執行個體規格類型滿足容量。容量分布策略同時對按量和搶佔式容量生效(僅當MultiAZPolicy參數取值為COMPOSABLE策略時生效)。

取值:

  • priority(預設值):按照配置的執行個體規格順序建立執行個體。

  • lowestPrice:按照執行個體規格單位vCpu價格從低到高建立執行個體。

AzBalance

Boolean

伸縮組的容量是否在多個可用性區域間均衡分布。

僅當MultiAZPolicy參數取值為COMPOSABLE策略時生效。

取值:

  • true:伸縮組的容量在多個可用性區域間均衡分布。

  • false(預設值):伸縮組的容量不在多個可用性區域間均衡分布。

MaxInstanceLifetime

Integer

執行個體在伸縮組中存活的最大時間。

單位為秒。

取值範圍:86400~Integer.maxValue

預設值:null。

CustomPolicyARN

String

自訂縮容策略Function函數ARN。

僅當RemovalPolicies配置第一個移除策略為CustomPolicy時生效。

SpotAllocationStrategy

String

搶佔式容量分布策略。

通過該參數單獨指定搶佔式容量的分布策略(僅當MultiAZPolicy參數取值為COMPOSABLE策略時生效)。

取值:

  • priority(預設值):按照配置的執行個體規格順序建立執行個體。

  • lowestPrice:按照執行個體規格單位vCpu價格從低到高建立執行個體 。

ServerGroups

List

負載平衡伺服器組的配置。

更多資訊,請參見ServerGroups屬性

ResourceGroupId

String

資源群組ID。

ServerGroups文法

"ServerGroups": [
  {
    "Type": String,
    "ServerGroupId": String,
    "Weight": Number,
    "Port": Number
  }
]  

ServerGroups屬性

屬性名稱

類型

必須

允許更新

描述

約束

Type

String

負載平衡伺服器群組類型。

取值範圍:

  • ALB:應用型負載平衡 ALB(Application Load Balancer)。

  • NLB:網路型負載平衡 NLB(Network Load Balancer)。

ServerGroupId

String

負載平衡伺服器組ID。

Weight

Number

ECS執行個體或ECI執行個體作為後端伺服器的權重。

取值範圍:0~100。

權重越高,ECS執行個體或ECI執行個體將被分配到越多的訪問請求。如果權重為 0,則ECS執行個體或ECI執行個體不會收到訪問請求。

Port

Number

ECS執行個體或 ECI執行個體使用的連接埠號碼。

取值範圍:1~65535。

NotificationConfigurations文法

"NotificationConfigurations": [
  {
    "NotificationArn": String,
    "NotificationTypes": List
  }
]  

NotificationConfigurations屬性

屬性名稱

類型

必須

允許更新

描述

約束

NotificationArn

String

生命週期掛鈎通知物件識別碼,支援Simple Message Queue (formerly MNS)隊列或主題。

取值:

  • SMQ隊列:acs:ess:{region}:{account-id}:queue/{queuename}

  • SMQ主題:acs:ess:{region}:{account-id}:topic/{topicname}

NotificationTypes

List

ESS事件和資源更改通知類型。

Tags文法

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]  

Tags屬性

屬性名稱

類型

必須

允許更新

描述

約束

Key

String

標籤鍵。

長度為1~128個字元,不能以aliyunacs:開頭,不能包含http://或者https://

Value

String

標籤值。

長度為0~128個字元,不能以aliyunacs:開頭,不能包含http://或者https://

LaunchTemplateOverrides文法

"LaunchTemplateOverrides": [
  {
    "InstanceType": String,
    "WeightedCapacity": Integer,
    "SpotPriceLimit": Number
  }
]  

LaunchTemplateOverrides屬性

屬性名稱

類型

必須

允許更新

描述

約束

InstanceType

String

ECS執行個體規格。

當您需要伸縮組按照執行個體規格容量進行伸縮時,請同時指定本參數和LaunchTemplateOverrides.WeightedCapacity

本參數用於指定執行個體規格,會覆蓋啟動模板中的執行個體規格。

說明

僅當LaunchTemplateId參數指定了啟動模板時,本參數生效。

WeightedCapacity

Integer

規格配置的權重。

當您需要伸縮組按照執行個體規格容量進行伸縮時, 先指定LaunchTemplateOverrides.InstanceType後,再指定本參數。

本參數用於指定執行個體規格的權重,即執行個體規格的單台執行個體在伸縮組中表示的容量大小。權重越大,滿足期望容量所需的本執行個體規格的執行個體數量越少。

由於每個執行個體規格的vCPU個數、記憶體大小等效能指標會有差異,您可以根據自身需求,給不同的執行個體規格配置不同的權重。

例如:

  • 當前容量:0。

  • 期望容量:6。

  • ecs.c5.xlarge規格容量:4。

為滿足期望容量,伸縮組將為使用者擴容2台ecs.c5.xlarge執行個體。

本參數的取值範圍:1~500。

說明

擴容時伸縮組的容量不得超過最大容量(MaxSize)與執行個體規格的最大權重之和。

SpotPriceLimit

Number

競價價格上限。

本參數用於指定執行個體啟動模板覆蓋規格(即LaunchTemplateOverrides.InstanceType)的競價價格上限。

說明

僅當LaunchTemplateId參數指定了啟動模板時,該參數才生效。

傳回值

Fn::GetAtt

  • ScalingGroupId:伸縮組的ID。

  • ScalingGroupName:伸縮組名稱。

樣本

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VPC:
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
    Type: String
    Label:
      zh-cn: 現有VPC的執行個體ID
      en: Existing VPC Instance ID
  VSwitch:
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    Type: String
    Label:
      zh-cn: 網路交換器ID
      en: VSwitch ID
    AssociationPropertyMetadata:
      VpcId: ${VPC}
  LaunchTemplateId:
    AssociationProperty: ALIYUN::ECS::LaunchTemplate::LaunchTemplateId
    Type: String
Resources:
  ScalingGroup:
    Type: ALIYUN::ESS::ScalingGroup
    Properties:
      VpcId:
        Ref: VPC
      VSwitchId:
        Ref: VSwitch
      LaunchTemplateId:
        Ref: LaunchTemplateId
      MaxSize: 3
      ScalingGroupName: TestScalingGroup
      MinSize: 0
Outputs:
  ScalingGroupId:
    Description: Scaling group Id
    Value:
      Fn::GetAtt:
        - ScalingGroup
        - ScalingGroupId
  ScalingGroupName:
    Description: Scaling group name
    Value:
      Fn::GetAtt:
        - ScalingGroup
        - ScalingGroupName

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "VPC": {
      "AssociationProperty": "ALIYUN::ECS::VPC::VPCId",
      "Type": "String",
      "Label": {
        "zh-cn": "現有VPC的執行個體ID",
        "en": "Existing VPC Instance ID"
      }
    },
    "VSwitch": {
      "AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
      "Type": "String",
      "Label": {
        "zh-cn": "網路交換器ID",
        "en": "VSwitch ID"
      },
      "AssociationPropertyMetadata": {
        "VpcId": "${VPC}"
      }
    },
    "LaunchTemplateId":{
      "AssociationProperty":"ALIYUN::ECS::LaunchTemplate::LaunchTemplateId",
      "Type":"String"
    }
  },
  "Resources": {
    "ScalingGroup": {
      "Type": "ALIYUN::ESS::ScalingGroup",
      "Properties": {
        "VpcId": {
          "Ref": "VPC"
        },
        "VSwitchId": {
          "Ref": "VSwitch"
        },
        "LaunchTemplateId": {
          "Ref": "LaunchTemplateId"
        },
        "MaxSize": 3,
        "ScalingGroupName": "TestScalingGroup",
        "MinSize": 0
      }
    }
  },
  "Outputs": {
    "ScalingGroupId": {
      "Description": "Scaling group Id",
      "Value": {
        "Fn::GetAtt": [
          "ScalingGroup",
          "ScalingGroupId"
        ]
      }
    },
    "ScalingGroupName": {
      "Description": "Scaling group name",
      "Value": {
        "Fn::GetAtt": [
          "ScalingGroup",
          "ScalingGroupName"
        ]
      }
    }
  }
}

當伸縮組中僅定義了一個伸縮組配置,且伸縮組配置中包含依賴的其他資源,您需要在定義資源模板時為伸縮組設定DependsOn屬性,對伸縮組配置依賴的其他資源設定資源依賴關聯。

伸縮組ScalingGroup設定DependsOn依賴關係到安全性群組SecurityGroup,因為伸縮組配置ScalingConfiguration依賴了安全性群組SecurityGroup資源。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcId:
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
    Type: String
  VSwitchId:
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    Type: String
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
Resources:
  ScalingGroupEnable:
    Type: ALIYUN::ESS::ScalingGroupEnable
    Properties:
      ScalingConfigurationId:
        Ref: ScalingConfiguration
      ScalingGroupId:
        Ref: ScalingGroup
      ScalingRuleArisExecuteVersion: 0
  SecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      SecurityGroupName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: VpcId
      SecurityGroupIngress:
        - PortRange: '-1/-1'
          Priority: 1
          SourceCidrIp: 0.0.X.X/0
          IpProtocol: all
          NicType: internet
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.X.X/0
          NicType: internet
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.X.X/0
          NicType: intranet
  ScalingConfiguration:
    Type: ALIYUN::ESS::ScalingConfiguration
    DependsOn: ScalingGroup
    Properties:
      InstanceType: ecs.g6e.large
      ImageId: centos_7_04_64_20G_alibase_201701015.vhd
      SystemDiskCategory: cloud_essd
      SystemDiskSize: 100
      ScalingConfigurationName:
        Ref: ALIYUN::StackName
      ScalingGroupId:
        Ref: ScalingGroup
      SecurityGroupId:
        Ref: SecurityGroup
  ScalingGroup:
    Type: ALIYUN::ESS::ScalingGroup
    DependsOn: SecurityGroup
    Properties:
      MaxSize: 3
      MinSize: 0
      DefaultCooldown: 15
      VpcId:
        Ref: VpcId
      VSwitchId:
        Ref: VSwitchId
Outputs: {}