O recurso ALIYUN::ESS::ScalingGroup cria um grupo de dimensionamento, composto por instâncias ECS para o mesmo cenário de aplicação. O grupo só entra em vigor após a ativação com ALIYUN::ESS::ScalingGroupEnable, que dispara atividades e executa regras de dimensionamento.
Sintaxe
{
"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,
"HealthCheckTypes": List,
"ServerGroups": List,
"ResourceGroupId": String
}
}
Propriedades
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualizável |
Descrição |
Restrições |
|
MinSize |
Integer |
Sim |
Sim |
Número mínimo de instâncias ECS no grupo de dimensionamento. |
Valores válidos: 0 a 1000. O Auto Scaling cria instâncias automaticamente quando a quantidade fica abaixo deste valor. |
|
MaxSize |
Integer |
Sim |
Sim |
Número máximo de instâncias ECS no grupo de dimensionamento. |
Valores válidos: 0 a 1000. O Auto Scaling remove instâncias automaticamente quando a quantidade excede este valor. |
|
ScalingGroupName |
String |
Não |
Sim |
Nome de exibição do grupo de dimensionamento. |
O nome deve ter entre 2 e 64 caracteres. Deve começar com um dígito, uma letra ou um caractere chinês. Pode conter letras, caracteres chineses, dígitos, sublinhados (_), hifens (-) e pontos (.). O nome deve ser exclusivo na mesma região e sob a mesma conta Alibaba Cloud. Valor padrão: o ID do grupo de dimensionamento. |
|
LaunchTemplateId |
String |
Não |
Sim |
ID do modelo de execução usado para criar instâncias. |
Nenhuma |
|
LaunchTemplateVersion |
String |
Não |
Sim |
Versão do modelo de execução ECS. |
Valores válidos:
|
|
RemovalPolicys |
List |
Não |
Sim |
Políticas para remover instâncias ECS do grupo de dimensionamento. |
Valores válidos:
|
|
VSwitchId |
String |
Não |
Sim |
ID do vSwitch. |
Nenhuma |
|
LoadBalancerIds |
List |
Não |
Sim |
IDs das instâncias SLB. |
Array JSON com até cinco IDs de instância slb, separados por vírgulas (,). |
|
DefaultCooldown |
Integer |
Não |
Sim |
Tempo de resfriamento após a conclusão de uma atividade de dimensionamento. |
Valores válidos: 0 a 86.400. Unidade: segundos. Valor padrão: 300. Durante o resfriamento, o grupo de dimensionamento rejeita outras atividades de dimensionamento. Aplica-se apenas a atividades disparadas por tarefas baseadas em eventos do CloudMonitor. |
|
DBInstanceIds |
List |
Não |
Sim |
IDs das instâncias ApsaraDB RDS. |
Array JSON com até oito IDs de instância RDS, separados por vírgulas (,). |
|
VSwitchIds |
List |
Não |
Sim |
IDs de múltiplos vSwitches. |
Até cinco IDs de vSwitch. Substitui VSwitchId quando ambos são especificados. Os vSwitches seguem uma ordem de prioridade; se a criação da instância falhar em uma zona de maior prioridade, o próximo vSwitch será utilizado. |
|
MultiAZPolicy |
String |
Não |
Sim |
Política de dimensionamento para instâncias ECS em um grupo de dimensionamento multizona. |
Valores válidos:
|
|
NotificationConfigurations |
List |
Não |
Sim |
Configurações de notificação para eventos e alterações de recursos. |
|
|
ProtectedInstances |
List |
Não |
Sim |
Quantidade de instâncias ECS protegidas no grupo de dimensionamento. |
É possível especificar até 1.000 instâncias. |
|
StandbyInstances |
List |
Não |
Sim |
Quantidade de instâncias ECS em espera no grupo de dimensionamento. |
É possível especificar até 1.000 instâncias. |
|
HealthCheckTypes |
List |
Não |
Sim |
Tipos de verificação de integridade para o grupo de dimensionamento. |
Valores válidos:
|
|
HealthCheckType |
String |
Não |
Sim |
Tipo de verificação de integridade. |
Valores válidos:
|
|
GroupDeletionProtection |
Boolean |
Não |
Sim |
Ativa ou desativa a proteção contra exclusão para o grupo de dimensionamento. |
Valores válidos:
|
|
DesiredCapacity |
Integer |
Não |
Sim |
Número esperado de instâncias ECS no grupo de dimensionamento. O Auto Scaling mantém a contagem de instâncias neste valor. |
O valor deve ser maior ou igual a MinSize e menor ou igual a MaxSize. |
|
InstanceId |
String |
Não |
Não |
ID de uma instância ECS a partir da qual o sistema deriva uma configuração de dimensionamento durante a criação do grupo. |
Nenhuma |
|
Tags |
List |
Não |
Sim |
As tags. |
É possível adicionar até 20 tags. |
|
OnDemandPercentageAboveBaseCapacity |
Integer |
Não |
Sim |
Porcentagem de instâncias on-demand entre as instâncias que excedem a capacidade base. |
Após atingir OnDemandBaseCapacity, esta porcentagem aplica-se às instâncias adicionais além da base. Valores válidos: 0 a 100. |
|
CompensateWithOnDemand |
Boolean |
Não |
Sim |
Indica se devem ser criadas instâncias on-demand para atender à contagem necessária de instâncias ECS. |
Efetivo apenas quando MultiAZPolicy é COST_OPTIMIZED. Crie instâncias on-demand quando instâncias spot estão indisponíveis devido a restrições de preço ou estoque. Valores válidos:
|
|
ContainerGroupId |
String |
Não |
Não |
ID da instância ECI. |
Nenhuma |
|
ScalingPolicy |
String |
Não |
Não |
Modo de recuperação do grupo de dimensionamento. |
Valores válidos:
ScalingPolicy define o modo de recuperação. O comportamento real de remoção é determinado pelo parâmetro RemovePolicy de RemoveInstances. |
|
SpotInstanceRemedy |
Boolean |
Não |
Sim |
Ative instâncias spot suplementares. |
Valores válidos:
|
|
SpotInstancePools |
Integer |
Não |
Sim |
Número de tipos de instância disponíveis. |
O grupo de dimensionamento equilibra instâncias spot entre os tipos de instância de menor custo. Valores válidos: 1 a 10. |
|
OnDemandBaseCapacity |
Integer |
Não |
Sim |
Número mínimo de instâncias on-demand exigido pelo grupo de dimensionamento. |
Valores válidos: 0 a 1000. O sistema prioriza a criação de instâncias on-demand quando a contagem está abaixo deste valor. |
|
GroupType |
String |
Não |
Não |
Tipo de instâncias gerenciadas pelo grupo de dimensionamento. |
Valores válidos:
|
|
LaunchTemplateOverrides |
List |
Não |
Sim |
Substituições de tipo de instância que estendem o modelo de execução. |
Nenhuma |
|
AllocationStrategy |
String |
Não |
Sim |
Política de alocação de capacidade. |
Determina como o grupo de dimensionamento seleciona tipos de instância para atender aos requisitos de capacidade. Aplica-se tanto à capacidade on-demand quanto preemptível. Efetivo apenas quando Valores válidos:
|
|
AzBalance |
Boolean |
Não |
Sim |
Distribui uniformemente a capacidade do grupo de dimensionamento entre várias zonas. |
Efetivo apenas quando Valores válidos:
|
|
MaxInstanceLifetime |
Integer |
Não |
Sim |
Tempo de vida máximo de uma instância no grupo de dimensionamento. |
Unidade: segundos. Valores válidos: 86400 a Valor padrão: null. |
|
CustomPolicyARN |
String |
Não |
Sim |
ARN da função de política de redução de escala personalizada. |
Este parâmetro é efetivo apenas quando a primeira política de remoção em RemovalPolicies está definida como CustomPolicy. |
|
SpotAllocationStrategy |
String |
Não |
Sim |
Política de alocação para capacidade spot. |
Estratégia de distribuição para capacidade spot. Efetivo apenas quando Valores válidos:
|
|
ServerGroups |
List |
Não |
Não |
Configurações de grupo de servidores do Server Load Balancer. |
|
|
ResourceGroupId |
String |
Não |
Sim |
ID do grupo de recursos. |
Nenhuma |
Sintaxe de ServerGroups
"ServerGroups": [
{
"Type": String,
"ServerGroupId": String,
"Weight": Number,
"Port": Number
}
]
Propriedades de ServerGroups
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualizável |
Descrição |
Restrições |
|
Type |
String |
Sim |
Não |
Tipo de grupo de servidores do Server Load Balancer. |
Valores válidos:
|
|
ServerGroupId |
String |
Sim |
Não |
ID do grupo de servidores do Server Load Balancer. |
Nenhuma |
|
Weight |
Number |
Sim |
Não |
Peso da instância ECS ou ECI como servidor backend. |
Valores válidos: 0 a 100. Um peso maior significa que mais solicitações são roteadas para a instância. Um peso 0 significa que a instância não recebe solicitações. |
|
Port |
Number |
Sim |
Não |
Número da porta da instância ECS ou ECI backend. |
Valores válidos: 1 a 65535. |
Sintaxe de NotificationConfigurations
"NotificationConfigurations": [
{
"NotificationArn": String,
"NotificationTypes": List
}
]
Propriedades de NotificationConfigurations
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualizável |
Descrição |
Restrições |
|
NotificationArn |
String |
Sim |
Não |
Destinatário da notificação para ganchos de ciclo de vida. Suporta filas ou tópicos do Simple Message Queue (anteriormente MNS). |
Valores válidos:
|
|
NotificationTypes |
List |
Sim |
Não |
Tipos de notificação para eventos do Auto Scaling e alterações de recursos. |
Nenhuma |
Sintaxe de Tags
"Tags": [
{
"Key": String,
"Value": String
}
]
Propriedades de Tags
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualizável |
Descrição |
Restrições |
|
Key |
String |
Sim |
Não |
Chave da tag. |
A chave deve ter entre 1 e 128 caracteres. Não pode começar com |
|
Value |
String |
Não |
Não |
Valor da tag. |
O valor pode ter entre 0 e 128 caracteres. Não pode começar com |
Sintaxe de LaunchTemplateOverrides
"LaunchTemplateOverrides": [
{
"InstanceType": String,
"WeightedCapacity": Integer,
"SpotPriceLimit": Number
}
]
Propriedades de LaunchTemplateOverrides
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualizável |
Descrição |
Restrições |
|
InstanceType |
String |
Não |
Sim |
Tipo de instância ECS. |
Para dimensionar com base na capacidade do tipo de instância, especifique este parâmetro e Substitui o tipo de instância no modelo de execução. Nota
Este parâmetro é efetivo apenas quando um modelo de execução é especificado pelo parâmetro LaunchTemplateId. |
|
WeightedCapacity |
Integer |
Não |
Sim |
Peso do tipo de instância. |
Para dimensionar com base na capacidade do tipo de instância, especifique Representa a capacidade de uma única instância deste tipo. Um peso maior significa que menos instâncias são necessárias para atender à capacidade esperada. Defina pesos com base em métricas de desempenho, como contagem de vCPU e tamanho de memória. Por exemplo:
Para atender à capacidade esperada, o grupo de dimensionamento aumentará a escala com duas instâncias Valores válidos: 1 a 500. Nota
Durante um aumento de escala, a capacidade do grupo de dimensionamento não pode exceder MaxSize mais o peso máximo de um único tipo de instância. |
|
SpotPriceLimit |
Number |
Não |
Sim |
Preço máximo para uma instância spot. |
Preço máximo para uma instância spot do tipo especificado por Nota
Este parâmetro é efetivo apenas quando um modelo de execução é especificado pelo parâmetro |
Valor de retorno
Fn::GetAtt
ScalingGroupId: O ID do grupo de dimensionamento.
ScalingGroupName: O nome do grupo de dimensionamento.
Arn: O Alibaba Cloud Resource Name (ARN).
Exemplos
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
VSwitch:
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
Type: String
Label:
zh-cn: VSwitch ID
en: VSwitch ID
LaunchTemplateId:
AssociationProperty: ALIYUN::ECS::LaunchTemplate::LaunchTemplateId
Type: String
Resources:
ScalingGroup:
Type: ALIYUN::ESS::ScalingGroup
Properties:
VSwitchId:
Ref: VSwitch
LaunchTemplateId:
Ref: LaunchTemplateId
MaxSize: 3
ScalingGroupName: TestScalingGroup
MinSize: 0
Outputs:
ScalingGroupId:
Description: The ID of the scaling group.
Value:
Fn::GetAtt:
- ScalingGroup
- ScalingGroupId
ScalingGroupName:
Description: The name of the scaling group.
Value:
Fn::GetAtt:
- ScalingGroup
- ScalingGroupName
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"VSwitch": {
"AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
"Type": "String",
"Label": {
"zh-cn": "VSwitch ID",
"en": "VSwitch ID"
}
},
"LaunchTemplateId":{
"AssociationProperty":"ALIYUN::ECS::LaunchTemplate::LaunchTemplateId",
"Type":"String"
}
},
"Resources": {
"ScalingGroup": {
"Type": "ALIYUN::ESS::ScalingGroup",
"Properties": {
"VSwitchId": {
"Ref": "VSwitch"
},
"LaunchTemplateId": {
"Ref": "LaunchTemplateId"
},
"MaxSize": 3,
"ScalingGroupName": "TestScalingGroup",
"MinSize": 0
}
}
},
"Outputs": {
"ScalingGroupId": {
"Description": "The ID of the scaling group.",
"Value": {
"Fn::GetAtt": [
"ScalingGroup",
"ScalingGroupId"
]
}
},
"ScalingGroupName": {
"Description": "The name of the scaling group.",
"Value": {
"Fn::GetAtt": [
"ScalingGroup",
"ScalingGroupName"
]
}
}
}
}
Quando um grupo de dimensionamento tem apenas uma configuração de dimensionamento que depende de outros recursos, defina DependsOn no grupo de dimensionamento para criar a dependência de recurso necessária.
Neste exemplo, ScalingGroup depende de SecurityGroup porque ScalingConfiguration o exige.
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
VSwitchId:
Ref: VSwitchId
Outputs: {}