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時,彈性伸縮會自動創建ECS實例。 |
MaxSize | Integer | 是 | 是 | 伸縮組內ECS實例個數的最大值。 | 取值范圍:0~1000。 當伸縮組內ECS實例數大于MaxSize時,彈性伸縮會自動移出ECS實例。 |
ScalingGroupName | String | 否 | 是 | 伸縮組的顯示名稱。 | 長度為2~64個字符。以數字、英文字母或漢字開頭,可包含英文字母、漢字、數字、下劃線(_)、短劃線(-)和半角句號(.)。 同一賬號同一地域內名稱唯一。 默認值:ScalingGroupId。 |
LaunchTemplateId | String | 否 | 是 | 實例啟動模板ID,用于指定伸縮組從實例啟動模板獲取啟動配置信息。 | 無 |
LaunchTemplateVersion | String | 否 | 是 | ECS實例啟動模板的版本。 | 取值:
|
RemovalPolicys | List | 否 | 是 | ECS實例移出伸縮組的策略。 | 取值:
|
VSwitchId | String | 否 | 是 | 交換機ID。 | 無 |
LoadBalancerIds | List | 否 | 是 | 負載均衡實例的ID。 | 取值可以是由多臺負載均衡實例ID組成一個JSON數組,最多支持5個ID,ID之間用半角逗號(,)隔開。 |
DefaultCooldown | Integer | 否 | 是 | 一次伸縮活動(添加或移出ECS實例)結束后的一段冷卻時間。 | 取值范圍:0~86,400。 單位:秒。 默認值:300 。 冷卻時間內,該伸縮組不執行其它的伸縮活動,僅針對云監控報警任務觸發的伸縮活動有效。 |
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 | 是 | 否 | 生命周期掛鉤通知對象標識符,支持輕量消息隊列(原 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: {}