ALIYUN::SAE::ApplicationScalingRule類型用于創建應用彈性伸縮策略。
語法
{
"Type": "ALIYUN::SAE::ApplicationScalingRule",
"Properties": {
"AppId": String,
"ScalingRuleName": String,
"ScalingRuleType": String,
"MinReadyInstances": Integer,
"MinReadyInstanceRatio": Integer,
"ScalingRuleMetric": Map,
"ScalingRuleTimer": Map,
"ScalingRuleEnable": Boolean
}
}
屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
AppId | String | 是 | 否 | 應用 ID。 | 無 |
ScalingRuleName | String | 是 | 否 | 自定義的彈性伸縮策略名。 | 應用內,策略名稱不可重復,必須以小寫字母開頭,僅可包含小寫字母、數字及短劃線(-),不超過 32 個字符。 |
ScalingRuleType | String | 是 | 否 | 彈性伸縮策略類型。 | 取值:
說明 如果選擇定時彈性,ScalingRuleTimer 字段為必填項。 如果選擇監控指標彈性,ScalingRuleMetric 字段為必填項。 如果選擇混合彈性,ScalingRuleMetric 字段為必填項,ScalingRuleTimer 字段和 ScalingRuleMetric 字段也可以按需同時填寫。 |
MinReadyInstances | Integer | 否 | 否 | 最小存活實例數。 | 取值說明如下:
說明 每次滾動部署最小存活的實例數建議≥1,保證業務不中斷。 |
MinReadyInstanceRatio | Integer | 否 | 否 | 最小存活實例數百分比。 | 取值說明如下:
說明 當MinReadyInstance和MinReadyInstanceRatio同時傳遞時,且MinReadyInstanceRatio的取值非**-1**時,以MinReadyInstanceRatio參數為準。假設MinReadyInstances取值為5,MinReadyInstanceRatio取值為50,則會用50來計算最小存活實例數。 |
ScalingRuleMetric | Map | 否 | 是 | 監控指標彈性策略的配置。 | 當您選擇監控指標彈性策略設置時,該參數必選。 參數說明如下:
說明 您可以選擇設置一個或多個監控指標。當設置多個監控指標時,只要任何一個指標大于或者等于目標值,則應用進行擴容,擴容后實例數不高于應用最大實例數;如果所有指標均小于目標值,則應用進行縮容,縮容后實例數不低于應用最小實例數。 |
ScalingRuleTimer | Map | 否 | 是 | 定時彈性策略的配置。 | 當您選擇定時彈性策略或使用 SDK 設置時,該參數必選。 參數說明如下:
說明 每次滾動部署最小存活的實例數建議大于等于1,保證業務不中斷。如果設置為0,應用在升級過程中將會中斷業務。 |
ScalingRuleEnable | Boolean | 否 | 否 | 是否啟用彈性伸縮策略。 | 取值說明如下:
|
ScalingRuleMetric語法
"ScalingRuleMetric": {
"Metrics": List,
"MinReplicas": Integer,
"MaxReplicas": Integer,
"ScaleDownRules": Map,
"ScaleUpRules": Map
}
ScalingRuleMetric屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Metrics | List | 是 | 否 | 監控指標彈性伸縮列表。 | 無 |
MinReplicas | Integer | 是 | 否 | 最小實例數。 | 無 |
MaxReplicas | Integer | 是 | 否 | 最大實例數。 | 無 |
ScaleDownRules | Map | 否 | 否 | 應用縮容規則。 | 無 |
ScaleUpRules | Map | 否 | 否 | 應用擴容規則。 | 無 |
Metrics語法
"Metrics": [
{
"SlbId": String,
"MetricType": String,
"Vport": String,
"SlbLogstore": String,
"SlbProject": String,
"MetricTargetAverageUtilization": Integer
}
]
Metrics屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
MetricType | String | 是 | 否 | 監控指標觸發條件。 | 取值說明如下:
|
MetricTargetAverageUtilization | Integer | 是 | 否 | 監控指標的目標值。 |
|
SlbId | String | 否 | 否 | SLB 實例 ID。 | 無 |
SlbLogstore | String | 否 | 否 | 日志服務 Logstore。 | 無 |
SlbProject | String | 否 | 否 | 日志服務 Project。 | 無 |
Vport | String | 否 | 否 | SLB 監聽端口,支持 HTTP 協議和 HTTPS 協議。 | 無 |
ScaleDownRules語法
"ScaleDownRules": {
"Step": String,
"StabilizationWindowSeconds": Integer,
"Disabled": Boolean
}
ScaleDownRules屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Step | String | 是 | 否 | 彈性擴容或縮容步長。 | 單位時間內最多擴容或縮容的實例數。 |
Disabled | Boolean | 否 | 否 | 是否禁止縮容。 | 開啟后將永遠不會縮容該應用的實例,能有效防止在流量高峰期縮容造成業務風險。 取值:
|
StabilizationWindowSeconds | Integer | 否 | 否 | 擴容或縮容的冷卻時間。 | 取值范圍[0, 3600],單位為秒。默認為 0 秒。 |
ScaleUpRules語法
"ScaleUpRules": {
"Step": String,
"StabilizationWindowSeconds": Integer,
"Disabled": Boolean
}
ScaleUpRules屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Step | String | 是 | 否 | 彈性擴容步長。 | 單位時間內最多擴容或縮容的實例數。 |
Disabled | Boolean | 否 | 否 | 是否禁止擴容。 | 開啟后將永遠不會擴容該應用的實例,能有效防止在流量高峰期擴容造成業務風險。 |
StabilizationWindowSeconds | Integer | 否 | 否 | 擴容或縮容的冷卻時間。 | 取值范圍[0, 3600],單位為秒。默認為 0 秒。 |
ScalingRuleTimer語法
"ScalingRuleTimer": {
"Schedules": List,
"Period": String,
"EndDate": String,
"BeginDate": String
}
ScalingRuleTimer屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Period | String | 是 | 否 | 執行定時彈性伸縮策略的周期。 | 取值說明如下:
|
Schedules | List | 是 | 否 | 單天內觸發時間點。 | 無。 |
BeginDate | String | 否 | 否 | 定時彈性伸縮策略的短期起始日期。 |
|
EndDate | String | 否 | 否 | 定時彈性伸縮策略的短期結束日期。 |
|
Schedules語法
"Schedules": [
{
"TargetReplicas": Integer,
"AtTime": String
}
]
Schedules屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
AtTime | String | 是 | 否 | 觸發時間點。 | 無 |
TargetReplicas | Integer | 是 | 否 | 該參數可以指定應用的實例數,也可以是每次部署最小存活的實例數。 | 取值范圍[1,50]。 |
返回值
Fn::GetAtt
ScalingRuleName:自定義的彈性伸縮策略名。
示例
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
ScalingRuleName:
Type: String
Description:
en: The name of the auto scaling policy. The name must start with a lowercase letter, and can contain lowercase letters, digits, and hyphens (-).The name must be 1 to 32 characters in length.
AllowedPattern: ^[a-z][a-z0-9-]{0,31}$
Required: true
AppId:
Type: String
Description:
en: The ID of the application.
Required: true
ScalingRuleType:
Type: String
Description:
en: 'The type of the auto scaling policy. Valid values: timer: Timed scaling. metric: Custom metric scaling.mix: mix scaling'
AllowedValues:
- timing
- metric
- mix
Required: true
Resources:
ApplicationScalingRule:
Type: ALIYUN::SAE::ApplicationScalingRule
Properties:
ScalingRuleName:
Ref: ScalingRuleName
AppId:
Ref: AppId
ScalingRuleType:
Ref: ScalingRuleType
Outputs:
ScalingRuleName:
Description: The name of the scaling rule.
Value:
Fn::GetAtt:
- ApplicationScalingRule
- ScalingRuleName
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"ScalingRuleName": {
"Type": "String",
"Description": {
"en": "The name of the auto scaling policy. The name must start with a lowercase letter, and can contain lowercase letters, digits, and hyphens (-).The name must be 1 to 32 characters in length."
},
"AllowedPattern": "^[a-z][a-z0-9-]{0,31}$",
"Required": true
},
"AppId": {
"Type": "String",
"Description": {
"en": "The ID of the application."
},
"Required": true
},
"ScalingRuleType": {
"Type": "String",
"Description": {
"en": "The type of the auto scaling policy. Valid values: timer: Timed scaling. metric: Custom metric scaling.mix: mix scaling"
},
"AllowedValues": [
"timing",
"metric",
"mix"
],
"Required": true
}
},
"Resources": {
"ApplicationScalingRule": {
"Type": "ALIYUN::SAE::ApplicationScalingRule",
"Properties": {
"ScalingRuleName": {
"Ref": "ScalingRuleName"
},
"AppId": {
"Ref": "AppId"
},
"ScalingRuleType": {
"Ref": "ScalingRuleType"
}
}
}
},
"Outputs": {
"ScalingRuleName": {
"Description": "The name of the scaling rule.",
"Value": {
"Fn::GetAtt": [
"ApplicationScalingRule",
"ScalingRuleName"
]
}
}
}
}