Reserve capacidade em zonas de disponibilidade específicas com reservas de capacidade - Amazon EC2 Auto Scaling

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Reserve capacidade em zonas de disponibilidade específicas com reservas de capacidade

As reservas de capacidade sob demanda do Amazon EC2 ajudam você a reservar a capacidade computacional em zonas de disponibilidade específicas. Para começar a usar as Reservas de Capacidade, crie a reserva de capacidade na zona de disponibilidade específica. Depois, é possível executar instâncias na capacidade reservada, visualizar a utilização da capacidade em tempo real e aumentar ou diminuir a capacidade conforme necessário.

As Reservas de Capacidade são configuradas como open ou targeted. Se a Reserva de capacidade estiver,open todas as novas instâncias e as instâncias existentes que tiverem atributos correspondentes serão executadas automaticamente na capacidade da Reserva de Capacidade. Se a Reserva de capacidade for targeted, as instâncias deverão usá-la como destino especificamente para executar na capacidade reservada.

Este tópico mostra como criar um grupo do Auto Scaling que executa instâncias sob demanda em Reservas de Capacidade targeted. Isto dá a você maior controle sobre quando usar Reservas de Capacidade específicas.

As etapas básicas são:

  1. Crie Reservas de Capacidade em várias zonas de disponibilidade que tenham o mesmo tipo de instância, plataforma e número de instâncias.

  2. Reservas de capacidade de grupo usando AWS Resource Groups.

  3. Criar um grupo do Auto Scaling com um modelo de execução direcionado ao grupo de recursos, usando as mesmas zonas de disponibilidade das reservas de capacidade.

Etapa 1: criar as Reservas de Capacidade

A primeira etapa é criar uma Reserva de Capacidade em cada zona de disponibilidade em que seu grupo do Auto Scaling será implantado.

nota

Você só pode criar reservas targeted ao criar as Reservas de Capacidade pela primeira vez.

Console
Para criar sua reserva de capacidade
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. Selecione Reservas de Capacidade e Create Reserva de capacidade (Criar Reserva de capacidade).

  3. Na página Criar uma Reserva de capacidade, atente para as seguintes configurações na seção Detalhes da instância. O tipo de instância, a plataforma e a zona de disponibilidade das instâncias iniciadas devem corresponder ao tipo de instância, à plataforma e à zona de disponibilidade especificadas aqui ou a Reserva de capacidade não será aplicada.

    1. Para Tipo de instância, selecione o tipo de instância a ser executada na capacidade reservada.

    2. Para Platforma, selecione o sistema operacional das suas instâncias.

    3. Para Zona de disponibilidade, escolha a primeira zona de disponibilidade na qual você deseja reservar capacidade.

    4. Para Capacidade total, escolha o número de instâncias de que você precisa. Calcule o número total de instâncias necessárias para seu grupo do Auto Scaling dividido pelo número de zonas de disponibilidade que você planeja usar.

  4. Em detalhes de Reserva de Capacidade, para encerramento de Reserva de Capacidade, selecione uma das seguintes opções:

    • Em um horário específico — cancele a reserva de capacidade automaticamente na data e hora especificadas.

    • Manualmente — reserve a capacidade até cancelá-la explicitamente.

  5. Em Elegibilidade da instância, escolha Direcionada: somente instâncias que têm como destino a Reserva de Capacidade.

  6. (Opcional) Para Tags, especifique as tags a serem associadas à Reserva de Capacidade.

  7. Escolha Criar.

  8. Anote o ID da recém-criada Reserva de Capacidade. Você precisa dele para configurar o grupo de Reserva de Capacidade.

Repita este procedimento para cada zona de disponibilidade que você deseja habilitar para seu grupo do Auto Scaling, alterando somente o valor da opção Zona de disponibilidade.

AWS CLI
Para criar suas Reservas de Capacidade

Use o create-capacity-reservationcomando a seguir para criar as reservas de capacidade. Substitua os valores de amostra por,--availability-zone,--instance-type --instance-platform e --instance-count.

aws ec2 create-capacity-reservation \ --availability-zone us-east-1a \ --instance-type c5.xlarge \ --instance-platform Linux/UNIX \ --instance-count 3 \ --instance-match-criteria targeted

Exemplo de ID de reserva de capacidade resultante

{ "CapacityReservation": { "CapacityReservationId": "cr-1234567890abcdef1", "OwnerId": "123456789012", "CapacityReservationArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "InstanceType": "c5.xlarge", "InstancePlatform": "Linux/UNIX", "AvailabilityZone": "us-east-1a", "Tenancy": "default", "TotalInstanceCount": 3, "AvailableInstanceCount": 3, "EbsOptimized": false, "EphemeralStorage": false, "State": "active", "StartDate": "2023-07-26T21:36:14+00:00", "EndDateType": "unlimited", "InstanceMatchCriteria": "targeted", "CreateDate": "2023-07-26T21:36:14+00:00" } }

Anote o ID da recém-criada Reserva de Capacidade. Você precisa dele para configurar o grupo de Reserva de Capacidade.

Repita este comando para cada zona de disponibilidade que você deseja habilitar para seu grupo do Auto Scaling, alterando somente o valor da opção--availability-zone.

Etapa 2: criar um grupo de Reserva de Capacidade

Ao terminar de criar as reservas de capacidade, você poderá agrupá-las usando o serviço AWS Resource Groups. AWS O Resource Groups oferece suporte a vários tipos diferentes de grupos para diferentes usos. O Amazon EC2 usa um grupo de propósito especial, conhecido como grupo de recursos vinculados a serviços, para atingir um grupo de Reservas de Capacidade. Para interagir com esse grupo de recursos vinculado ao serviço, você pode usar o AWS CLI ou um SDK, mas não o console. Para obter mais informações sobre grupos de recursos vinculados a serviços, consulte Configurações de serviço para grupos de recursos no Guia do Usuário de Grupos de Recruso AWS .

Para criar um grupo de reserva de capacidade usando o AWS CLI

Use o comando create-group para criar um grupo de recursos que pode conter somente Reservas de Capacidade. Neste exemplo, o grupo de recursos é chamado de my-cr-group.

aws resource-groups create-group \ --name my-cr-group \ --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'

O seguinte é um exemplo de resposta.

{ "Group": { "GroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group", "Name": "my-cr-group" }, "GroupConfiguration": { "Configuration": [ { "Type": "AWS::EC2::CapacityReservationPool" }, { "Type": "AWS::ResourceGroups::Generic", "Parameters": [ { "Name": "allowed-resource-types", "Values": [ "AWS::EC2::CapacityReservation" ] } ] } ], "Status": "UPDATE_COMPLETE" } }

Anote o ARN do novo grupo de recursos. Você precisa configurar o modelo de execução para seu grupo do Auto Scaling.

Para associar suas Reservas de Capacidade ao grupo recém-criado usando o AWS CLI

Use o comando group-resources a seguir para associar as Reservas de Capacidade ao grupo de Reserva de Capacidade recém-criado. Para a opção,--resource-arns especifique as Reservas de Capacidade usando seus ARNs. Estruture os ARNs usando a região relevante, seu ID de conta e os IDs de reserva que você anotou anteriormente. Neste exemplo, as reservas com IDs cr-1234567890abcdef1 e cr-54321abcdef567890 serão agrupadas no grupo chamadomy-cr-group.

aws resource-groups group-resources \ --group my-cr-group \ --resource-arns \ arn:aws:ec2:region:account-id:capacity-reservation/cr-1234567890abcdef1 \ arn:aws:ec2:region:account-id:capacity-reservation/cr-54321abcdef567890

O seguinte é um exemplo de resposta.

{ "Succeeded": [ "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" ], "Failed": [], "Pending": [] }

Para obter informações sobre como modificar ou excluir o grupo de recursos, consulte a AWS Referência da API dos Grupos de Recurso.

Etapa 3: criar um modelo de execução

Console
Para criar um modelo de execução
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

  2. No painel de navegação, escolha Instances e, em seguida, Launch Templates.

  3. Escolha Criar modelo de execução. Insira um nome e forneça uma descrição para a versão inicial do modelo de execução.

  4. Em Auto Scaling guidance (Guia do Auto Scaling), marque a caixa de seleção.

  5. Criar o modelo de execução. Selecione um AMI e o tipo de instância que corresponde às Reservas de Capacidade que está planejando usar, e opcionalmente, um par de chaves, um ou mais grupos de segurança e quaisquer volumes do EBS adicionais ou volumes de armazenamento de instâncias para suas instâncias.

  6. Amplie os Detalhes avançados e faça o seguinte:

    1. Em Reserva de Capacidade, escolha Destino por grupo.

    2. Em Reserva de Capacidade - Destino por grupo, escolha o grupo de Reservas de Capacidade que você criou na seção anterior e, em seguida, escolha Salvar.

  7. Escolha Criar modelo de execução.

  8. Na página de confirmação, escolha Create Auto Scaling group (Criar grupo do Auto Scaling).

AWS CLI
Para criar um modelo de execução

Use o create-launch-templatecomando a seguir para criar um modelo de execução que especifica que a Reserva de Capacidade tem como alvo um grupo de recursos específico. Substitua o valor da amostra por --launch-template-name. Substitua c5.xlarge pelo tipo de instância que você usou na Reserva de Capacidade e ami-0123456789EXAMPLE pelo ID da AMI que você deseja usar. Substitua arn:aws:resource-groups:region:account-id:group/my-cr-group pelo o ARN do grupo de recurso que você criou no início da etapa anterior.

aws ec2 create-launch-template \ --launch-template-name my-launch-template \ --launch-template-data \ '{"InstanceType": "c5.xlarge", "ImageId": "ami-0123456789EXAMPLE", "CapacityReservationSpecification": {"CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:region:account-id:group/my-cr-group" } } }'

O seguinte é um exemplo de resposta.

{ "LaunchTemplate": { "LaunchTemplateId": "lt-0dd77bd41dEXAMPLE", "LaunchTemplateName": "my-launch-template", "CreateTime": "2023-07-26T21:42:48+00:00", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

Etapa 4: criar um grupo do Auto Scaling

Console

Crie seu grupo do Auto Scaling como você costuma fazer, mas ao escolher suas sub-redes VPC, escolha uma sub-rede de cada zona de disponibilidade que corresponda às Reservas de Capacidade targeted que você criou. Em seguida, quando seu grupo do Auto Scaling iniciar uma instância sob demanda em uma dessas zonas de disponibilidade, a instância será executada na capacidade reservada para essa zona de disponibilidade. Se o grupo de recursos ficar sem Reservas de Capacidade antes que a capacidade desejada seja atingida, lançaremos qualquer coisa além da capacidade reservada como capacidade normal sob demanda.

Para criar um grupo do Auto Scaling simples
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha Grupos do Auto Scaling no painel de navegação.

  2. Na barra de navegação na parte superior da tela, escolha a mesma Região da AWS que você usou ao criar o modelo de lançamento.

  3. Selecione Criar um grupo do Auto Scaling.

  4. Na página Choose launch template or configuration (Escolher o modelo ou a configuração de execução), em Auto Scaling group name (Nome do grupo do Auto Scaling) insira um nome para o grupo do Auto Scaling.

  5. Em Launch template (Modelo de execução), escolha um modelo de execução existente.

  6. Em Launch template version (Versão do modelo de execução), indique se o grupo do Auto Scaling usará a versão padrão, a mais recente ou uma versão específica do modelo de execução no aumento da escala na horizontal.

  7. Na página Escolha as opções de execução da instância, pule a seção Requisitos do tipo de instância para usar o tipo de instância do EC2 especificado no modelo de execução.

  8. Em Network (Rede), para VPC, escolha uma VPC. O grupo do Auto Scaling deve ser criado na mesma VPC do grupo de segurança especificado no modelo de execução. Se você não especificou um grupo de segurança para seu modelo de execução, você pode selecionar qualquer VPC que tenha sub-redes nas mesmas zonas de disponibilidade que suas Reservas de Capacidade.

  9. Para zonas de disponibilidade e sub-redes, selecione sub-redes de cada zona de disponibilidade que você deseja incluir, com base nas zonas de disponibilidade em que suas Reservas de Capacidade se encontram.

  10. Escolha Next (Próximo) duas vezes.

  11. Na página Configurar tamanho do grupo e políticas de escalabilidade, em Capacidade desejada, insira o número inicial de instâncias a serem executadas. Quando esse número é alterado para um valor fora dos limites de capacidade mínima ou máxima, é necessário atualizar os valores de Minimum capacity (Capacidade mínima) ou Maximum capacity (Capacidade máxima). Para ter mais informações, consulte Definir limites de escalabilidade para seu grupo do Auto Scaling.

  12. Escolha Skip to review (Ir para revisão).

  13. Na página Review (Revisão), escolha Create Auto Scaling group (Criar grupo do Auto Scaling).

AWS CLI
Para criar um grupo do Auto Scaling simples

Use o create-auto-scaling-groupcomando a seguir e especifique o nome e a versão do seu modelo de lançamento como o valor da --launch-template opção. Substitua os valores de amostra por,--auto-scaling-group-name,--min-size --max-size e --vpc-zone-identifier.

Para a opção,--availability-zones especifique as zonas de disponibilidade para as quais você criou reservas de capacidade. Por exemplo, se suas reservas de capacidade especificarem as zonas de disponibilidade us-east-1a e,us-east-1b então você deverá criar seu grupo do Auto Scaling nas mesmas zonas. Em seguida, quando seu grupo do Auto Scaling iniciar uma instância sob demanda em uma dessas zonas de disponibilidade, a instância será executada na capacidade reservada para essa zona de disponibilidade. Se o grupo de recursos ficar sem Reservas de Capacidade antes que a capacidade desejada seja atingida, lançaremos qualquer coisa além da capacidade reservada como capacidade normal sob demanda.

aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-launch-template,Version='1' \ --min-size 6 \ --max-size 6 \ --vpc-zone-identifier "subnet-5f46ec3b,subnet-0ecac448" \ --availability-zones us-east-1a us-east-1b

Para ver um exemplo de implementação, consulte o AWS CloudFormation modelo no seguinte GitHub repositório de AWS exemplos: https://github.com/aws-samples/ aws-auto-scaling-backed - by-on-demand-capacity -reservations/.

Os tópicos relacionados a seguir podem ser úteis à medida que você aprende sobre Reservas de Capacidade.