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á.
Iniciar instâncias com Reservas de Capacidade Sob Demanda (ODCR)
Com as Reservas de capacidade sob demanda (ODCRs), você pode ter uma reserva de capacidade para instâncias do Amazon EC2 do cluster em uma Zona de Disponibilidade específica. Dessa forma, você pode criar e gerenciar Reservas de Capacidade independentemente dos descontos de faturamento oferecidos por Savings Plans
Você pode configurar a ODCR open
ou targeted
. A ODCR Aberta abrange todas as instâncias que correspondem aos recursos da ODCR. Esses atributos são tipo de instância, plataforma e zona de disponibilidade. Você deve definir explicitamente a ODCR Direcionada na configuração do cluster. Para determinar se uma ODCR é open
ou targeted
, execute o comando describe-capacity-reservation
do Amazon EC2 da AWS CLI.
Você também pode criar uma ODCR em um grupo de posicionamento de cluster é chamado de cluster placement group on-demand capacity reservation (CPG ODCR).
Várias ODCRs podem ser agrupados em um grupo de recursos. Isso pode ser definido no arquivo de configuração do cluster. Para obter mais informações sobre grupos de recursos, consulte O que são grupos de recursos? no Guia do usuário de Grupos de Recursos e Tags.
Usando o ODCR com o AWS ParallelCluster
O AWS ParallelCluster é compatível com ODCR aberta. Quando você usa um ODCR aberto, não precisa especificar nada no AWS ParallelCluster. As instâncias são selecionadas automaticamente para o cluster. É possível especificar um grupo de posicionamento existente ou deixar que o AWS ParallelCluster crie um novo para você.
ODCR na configuração do cluster
A partir da versão 3.3.0 da AWS ParallelCluster, você pode definir as ODCRs no arquivo de configuração do cluster, sem precisar especificar substituições de instâncias de execução do Amazon EC2.
Comece criando reservas de capacidade e grupos de recursos usando os métodos descritos na documentação vinculada para cada um. Você deve usar os métodos AWS CLI para criar grupos de reserva de capacidade. Se você usar o AWS Management Console, só poderá criar grupos de recursos baseados em tags ou em pilhas. Os grupos de recursos baseados em tags e baseados em pilhas não são compatíveis com o AWS ParallelCluster ou a AWS CLI ao executar instâncias com reservas de capacidade.
Depois que as reservas de capacidade e os grupos de recursos forem criados, especifique-os em SlurmQueues / CapacityReservationTarget ou SlurmQueues / ComputeResources / CapacityReservationTarget, conforme mostrado no exemplo de configuração de cluster a seguir. Substitua os valores
destacados em vermelho pelos valores válidos.
Image: Os:
os
HeadNode: InstanceType:head_node_instance
Networking: SubnetId:public_subnet_id
Ssh: KeyName:key_name
Scheduling: Scheduler:scheduler
SlurmQueues: - Name: queue1 Networking: SubnetIds: -private_subnet_id
ComputeResources: - Name: cr1 Instances: - InstanceType:instance
MaxCount:max_queue_size
MinCount:max_queue_size
Efa: Enabled: true CapacityReservationTarget: CapacityReservationResourceGroupArn:capacity_reservation_arn
Atenção
-
A partir do AWS ParallelCluster versão 3.3.0, não recomendamos esse método. Esta seção permanece como referência para implementações usando versões anteriores.
-
Esse método não é compatível com a alocação de vários tipos de instâncias com o Slurm.
Compatibilidade para ODCRs targeted
adicionado no AWS ParallelCluster versão 3.1.1. Nessa versão foi introduzido um mecanismo que substitui os parâmetros RunInstances
do EC2 e transmite informações sobre a reserva a ser usada para cada recurso de computação configurado no AWS ParallelCluster. Esse mecanismo é compatível com ODCR targeted
. No entanto, ao usar ODCR targeted
, você deve especificar a configuração de substituição de run-instances
. As ODCRs Direcionadas devem ser definidas explicitamente no comando run-instances
do Amazon EC2 da AWS CLI. Para determinar se uma ODCR é open
ou targeted
, execute o comando describe-capacity-reservation
do Amazon EC2 da AWS CLI.
Várias ODCRs podem ser agrupados em um grupo de recursos. Isso pode ser usado na substituição de instâncias de execução para atingir vários ODCRs ao mesmo tempo.
Se você estiver usando um ODCR targeted
, poderá especificar um grupo de posicionamento. No entanto, você também precisa especificar uma configuração de substituição do run-instances
.
Suponha que o AWS tenha criado um ODCR targeted
para você ou que você tenha um conjunto específico de instâncias reservadas. Então, você não pode especificar um grupo de posicionamento. As regras configuradas por AWS podem entrar em conflito com a configuração do grupo de posicionamento. Portanto, se for necessário um grupo de posicionamento para seu aplicativo, use um CPG ODCR. Em ambos os casos, você também deve especificar a configuração de substituição run-instances
.
Se você estiver usando um CPG ODCR, deverá especificar a configuração de substituição run-instances
e especificar o mesmo grupo de posicionamento na configuração do cluster.
Usar instâncias reservadas com o AWS ParallelCluster
As instâncias reservadas são diferentes das reservas de capacidade (ODCR). Há dois tipos de instâncias reservadas. Uma Instância reservada Regional não reserva capacidade. Uma Instância reservada por zona reserva capacidade na zona de disponibilidade especificada.
Se você tiver instâncias reservadas regionais, não há reserva de capacidade e você pode obter erros de capacidade insuficientes. Se você tem instâncias reservadas por zona, você tem reserva de capacidade, mas não há parâmetros de API run-instances
que você possa usar para especificá-las.
As instâncias reservadas são compatíveis com qualquer versão do AWS ParallelCluster. Você não precisa especificar nada no AWS ParallelCluster, e as instâncias serão selecionadas automaticamente.
Ao usar instâncias reservadas por zona, você pode evitar possíveis erros de capacidade insuficiente omitindo a especificação do grupo de posicionamento na configuração do cluster.
Atenção
-
A partir do AWS ParallelCluster versão 3.3.0, não recomendamos esse método. Esta seção permanece como referência para implementações usando versões anteriores.
-
Esse método não é compatível com a alocação de vários tipos de instâncias com o Slurm.
Você pode substituir os parâmetros RunInstances
do Amazon EC2 para cada recurso de computação configurado em uma fila de cluster. Para fazer isso, crie o arquivo /opt/slurm/etc/pcluster/run_instances_overrides.json
no nó principal do cluster com o seguinte conteúdo de trecho de código:
-
${queue_name}
é o nome da fila à qual você deseja aplicar substituições. -
${compute_resource_name}
é o recurso de computação ao qual você deseja aplicar substituições. -
${overrides}
é um objeto JSON arbitrário que contém uma lista de substituiçõesRunInstances
a serem usadas na combinação específica de fila e tipo de instância. A sintaxe das substituições precisa seguir as mesmas especificações documentadas em uma chamada run_instancesboto3.
{ "${queue_name}": { "${compute_resource_name}": { ${overrides} }, ... }, ... }
Por exemplo, o JSON a seguir configura o grupo ODCR group_arn
para ser usado em instâncias p4d.24xlarge
configuradas em my-queue
e my-compute-resource
.
{
"my-queue"
: {"my-compute-resource"
: { "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationResourceGroupArn":"group_arn"
} } } } }
Depois que esse arquivo JSON é gerado, os daemons AWS ParallelCluster responsáveis pelo dimensionamento do cluster usam automaticamente a configuração de substituição para as execuções de instâncias. Para confirmar se os parâmetros especificados estão sendo usados para provisionamento de instâncias, consulte os seguintes arquivos de log:
-
/var/log/parallelcluster/clustermgtd
(para capacidade estática) -
/var/log/parallelcluster/slurm_resume.log
(para capacidade dinâmica)
Se os parâmetros estiverem corretos, você encontrará uma entrada de log que contém o seguinte:
Found RunInstances parameters override. Launching instances with: <parameters_list>
Atenção
-
A partir do AWS ParallelCluster versão 3.3.0, não recomendamos esse método. Esta seção permanece como referência para implementações usando versões anteriores.
-
Esse método não é compatível com Alocação a vários tipos de instância com o Slurm.
-
Crie um grupo de recursos, para agrupar a capacidade.
$
aws resource-groups create-group --name
EC2CRGroup
\ --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'nota
Um grupo de recursos não oferece suporte a recursos compartilhados por outras contas.
Se o ODCR de destino for compartilhado por outra conta, você não precisará criar um grupo de recursos. Use
CapacityReservationId
em vez de um grupo de recursos na etapa 3.#!/bin/bash set -e # Override run_instance attributes cat > /opt/slurm/etc/pcluster/run_instances_overrides.json << EOF { "my-queue": { "my-compute-resource": { "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationId": "cr-abcdef01234567890" } } } } } EOF
Adicione reservas de capacidade ao grupo de recursos. Toda vez que você criar um novo ODCR, adicione-o à Reserva de Grupo. Substitua
pelo ID da sua conta,ACCOUNT_ID
pelo seu ID de reserva de capacidade ePLACEHOLDER_CAPACITY_RESERVATION
pelo seu ID da Região da AWS (por exemplo, us-east-1).REGION_ID
$
aws resource-groups group-resources --region
REGION_ID
--groupEC2CRGroup
\ --resource-arns arn:aws:ec2:REGION_ID
:ACCOUNT_ID
:capacity-reservation/PLACEHOLDER_CAPACITY_RESERVATION
Crie um documento de política no computador local. Substitua
pelo ID da sua conta eACCOUNT_ID
pelo seu ID da Região da AWS (por exemplo, us-east-1).REGION_ID
cat > policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Sid": "RunInstancesInCapacityReservation", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
REGION_ID
:ACCOUNT_ID
:capacity-reservation/*", "arn:aws:resource-groups:REGION_ID
:ACCOUNT_ID
:group/*" ] } ] } EOF -
Crie a política do IAM em sua Conta da AWS usando o arquivo json que você criou.
$
aws iam create-policy --policy-name
RunInstancesCapacityReservation
--policy-document file://policy.json -
Crie o seguinte script de pós-instalação localmente na instância e o nomeie como
postinstall.sh
.Substitua
pelo seu ID da Conta da AWS eACCOUNT_ID
pelo seu ID da Região da AWS (por exemplo, us-east-1).REGION_ID
#!/bin/bash set -e # Override run_instance attributes cat > /opt/slurm/etc/pcluster/run_instances_overrides.json << EOF { "my-queue": { "my-compute-resource": { "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:
REGION_ID
:ACCOUNT_ID
:group/EC2CRGroup
" } } } } } EOFFaça upload do arquivo para um bucket do Amazon S3. Substitua
amzn-s3-demo-bucket
pelo nome específico do bucket S3.$
aws s3 mb s3://
amzn-s3-demo-bucket
aws s3 cp postinstall.sh s3://amzn-s3-demo-bucket
/postinstall.sh -
Crie a configuração do cluster local, substituindo os espaços reservados com valores próprios.
Region:
REGION_ID
Image: Os: alinux2 HeadNode: InstanceType: c5.2xlarge Ssh: KeyName:YOUR_SSH_KEY
Iam: S3Access: - BucketName:amzn-s3-demo-bucket
AdditionalIamPolicies: - Policy: arn:aws:iam::ACCOUNT_ID
:policy/RunInstancesCapacityReservation ## This post-install script is executed after the node is configured. ## It is used to install scripts at boot time and specific configurations ## In the script below we are overriding the calls to RunInstance to force ## the provisioning of our my-queue partition to go through ## the On-Demand Capacity Reservation CustomActions: OnNodeConfigured: Script: s3://amzn-s3-demo-bucket
/postinstall.sh Networking: SubnetId:YOUR_PUBLIC_SUBNET_IN_TARGET_AZ
Scheduling: Scheduler: slurm SlurmQueues: - Name: my-queue ComputeResources: - MinCount: 0 MaxCount: 100 InstanceType: p4d.24xlarge Name:my-compute-resource
Efa: Enabled: true Networking: ## PlacementGroup: ## Enabled: true ## Keep PG disabled if using targeted ODCR SubnetIds: -YOUR_PRIVATE_SUBNET_IN_TARGET_AZ
-
Crie um cluster.
Use o seguinte comando para criar o cluster: Substitua
pelo nome do arquivo de configuração,cluster-config.yaml
pelo nome do seu cluster ecluster-dl
REGION_ID
pelo ID da região (por exemplo, us-east-1).$
pcluster create-cluster --cluster-configuration
cluster-config.yaml
--cluster-namecluster-dl
--regionREGION_ID
Depois que o cluster é criado, o script de pós-instalação é executado no nó principal. O script cria o arquivo
run_instances_overrides.json
e substitui as chamadas enviadas aRunInstances
para forçar o provisionamento da partição a passar pela reserva de capacidade sob demanda.Os daemons AWS ParallelCluster responsáveis pelo dimensionamento do cluster usam automaticamente essa configuração para novas instâncias que são iniciadas. Para confirmar se os parâmetros especificados estão sendo usados para provisionamento de instâncias, consulte os seguintes arquivos de log:
-
/var/log/parallelcluster/clustermgtd
(para capacidade estática - MinCount> 0
) -
/var/log/parallelcluster/slurm_resume.log
(para capacidade dinâmica)
Se os parâmetros estiverem corretos, você encontrará uma entrada de log que contém o seguinte:
Found RunInstances parameters override. Launching instances with: <parameters_list>
-
Atualizando substituições RunInstances
Você pode atualizar a configuração JSON gerada a qualquer momento sem interromper a frota de computação. Depois que as alterações forem aplicadas, todas as novas instâncias serão iniciadas com a configuração atualizada. Se você precisar aplicar a configuração atualizada aos nós em execução, recicle os nós forçando o encerramento da instância e aguarde até AWS ParallelCluster fazer a substituição desses nós. Você pode fazer isso encerrando a instância no console do Amazon EC2 ou da AWS CLI, ou configurando os nós do Slurm em um estado DOWN
ou DRAIN
.
Use o comando a seguir para definir o nó Slurm para DOWN
ou DRAIN
.
$
scontrol update nodename=
my-queue-dy-my-compute-resource-1
state=down reason=your_reason
scontrol update nodename=my-queue-dy-my-compute-resource-1
state=drain reason=your_reason