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執行個體啟動模板的版本。 | 取值:
|
RemovalPolicys | List | 否 | 是 | 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執行個體擴縮容策略。 | 取值:
|
NotificationConfigurations | List | 否 | 是 | 事件及資源變化通知的配置列表。 | 更多資訊,請參見NotificationConfigurations屬性。 |
ProtectedInstances | List | 否 | 是 | 伸縮組內處於保護模式的ECS執行個體個數。 | 最多支援1000個執行個體。 |
StandbyInstances | List | 否 | 是 | 伸縮組內處於備用模式的ECS執行個體個數。 | 最多支援1000個執行個體。 |
HealthCheckType | String | 否 | 是 | 健全狀態檢查類型。 | 取值:
|
GroupDeletionProtection | Boolean | 否 | 是 | 是否開啟伸縮組刪除保護。 | 取值:
|
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執行個體數要求的按量執行個體。 取值:
|
ContainerGroupId | String | 否 | 否 | ECI執行個體ID。 | 無 |
ScalingPolicy | String | 否 | 否 | 指定伸縮組的回收模式。 | 取值:
ScalingPolicy指定伸縮組的回收模式,但執行個體被移出伸縮組時的具體動作,由RemoveInstances的RemovePolicy參數決定。更多資訊,請參見RemoveInstances。 |
SpotInstanceRemedy | Boolean | 否 | 是 | 是否開啟補齊搶佔式執行個體。 | 取值:
|
SpotInstancePools | Integer | 否 | 是 | 指定可用執行個體規格的個數。 | 伸縮組將按成本最低的多個規格均衡建立搶佔式執行個體。 取值範圍:1~10。 |
OnDemandBaseCapacity | Integer | 否 | 是 | 伸縮組所需要按量執行個體個數的最小值。 | 取值範圍:0~1000。 當按量執行個體個數少於該值時,將優先建立按量執行個體。 |
GroupType | String | 否 | 否 | 伸縮組管理的執行個體類型。 | 取值:
|
LaunchTemplateOverrides | List | 否 | 是 | 擴充啟動模板的執行個體規格資訊。 | 無 |
AllocationStrategy | String | 否 | 是 | 容量分配策略。 | 決定了伸縮組如何選擇可用的執行個體規格類型滿足容量。容量分布策略同時對按量和搶佔式容量生效(僅當 取值:
|
AzBalance | Boolean | 否 | 是 | 伸縮組的容量是否在多個可用性區域間均衡分布。 | 僅當 取值:
|
MaxInstanceLifetime | Integer | 否 | 是 | 執行個體在伸縮組中存活的最大時間。 | 單位為秒。 取值範圍:86400~ 預設值:null。 |
CustomPolicyARN | String | 否 | 是 | 自訂縮容策略Function函數ARN。 | 僅當RemovalPolicies配置第一個移除策略為CustomPolicy時生效。 |
SpotAllocationStrategy | String | 否 | 是 | 搶佔式容量分布策略。 | 通過該參數單獨指定搶佔式容量的分布策略(僅當 取值:
|
ServerGroups | List | 否 | 否 | 負載平衡伺服器組的配置。 | 更多資訊,請參見ServerGroups屬性。 |
ResourceGroupId | String | 否 | 是 | 資源群組ID。 | 無 |
ServerGroups文法
"ServerGroups": [
{
"Type": String,
"ServerGroupId": String,
"Weight": Number,
"Port": Number
}
]
ServerGroups屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Type | String | 是 | 否 | 負載平衡伺服器群組類型。 | 取值範圍:
|
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)隊列或主題。 | 取值:
|
NotificationTypes | List | 是 | 否 | ESS事件和資源更改通知類型。 | 無 |
Tags文法
"Tags": [
{
"Key": String,
"Value": String
}
]
Tags屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Key | String | 是 | 否 | 標籤鍵。 | 長度為1~128個字元,不能以 |
Value | String | 否 | 否 | 標籤值。 | 長度為0~128個字元,不能以 |
LaunchTemplateOverrides文法
"LaunchTemplateOverrides": [
{
"InstanceType": String,
"WeightedCapacity": Integer,
"SpotPriceLimit": Number
}
]
LaunchTemplateOverrides屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
InstanceType | String | 否 | 是 | ECS執行個體規格。 | 當您需要伸縮組按照執行個體規格容量進行伸縮時,請同時指定本參數和 本參數用於指定執行個體規格,會覆蓋啟動模板中的執行個體規格。 說明 僅當LaunchTemplateId參數指定了啟動模板時,本參數生效。 |
WeightedCapacity | Integer | 否 | 是 | 規格配置的權重。 | 當您需要伸縮組按照執行個體規格容量進行伸縮時, 先指定 本參數用於指定執行個體規格的權重,即執行個體規格的單台執行個體在伸縮組中表示的容量大小。權重越大,滿足期望容量所需的本執行個體規格的執行個體數量越少。 由於每個執行個體規格的 例如:
為滿足期望容量,伸縮組將為使用者擴容2台 本參數的取值範圍:1~500。 說明 擴容時伸縮組的容量不得超過最大容量(MaxSize)與執行個體規格的最大權重之和。 |
SpotPriceLimit | Number | 否 | 是 | 競價價格上限。 | 本參數用於指定執行個體啟動模板覆蓋規格(即 說明 僅當 |
傳回值
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: {}