Por que meu trabalho do AWS Batch está paralisado no status RUNNABLE?

12 minuto de leitura
0

Meu trabalho do AWS Batch está paralisado no status RUNNABLE.

Breve descrição

O AWS Batch passa um trabalho para o status RUNNABLE quando o trabalho não tem dependências pendentes e pode ser agendado para um host. Os trabalhos RUNNABLE são iniciados assim que recursos suficientes estiverem disponíveis em um dos ambientes de computação mapeados para a fila do trabalho.

Se os recursos necessários para executar um trabalho não estiverem disponíveis, o trabalho poderá permanecer no status RUNNABLE indefinidamente. Para obter mais informações, consulte Jobs stuck in a RUNNABLE status.

Para solucionar problemas de um trabalho do AWS Batch que está paralisado no status RUNNABLE, use o runbook AWSSupport-TroubleshootAWSBatchJob. Em seguida, consulte a seção Saídas para determinar a possível causa do problema e as etapas para corrigi-lo.

Observação: este artigo aborda a solução de problemas do Amazon Elastic Container Service (Amazon ECS) no Amazon Elastic Compute Cloud (Amazon EC2) e do Amazon ECS no AWS Fargate. Para solucionar problemas do AWS Batch no Amazon Elastic Kubernetes Service (Amazon EKS), consulte AWS Batch on Amazon EKS.

Resolução

Use o runbook AWSSupport-TroubleshootAWSBatchJob do SAW

Use os fluxos de trabalho de automação de suporte da AWS (AWS SAW) para automatizar esse processo de solução de problemas. Para usar o runbook AWSSupport-TroubleshootAWSBatchJob, consulte How can I use a SAW runbook to troubleshoot my AWS Batch job stuck in the RUNNABLE status?

Se esse runbook não ajudar você a identificar o problema, consulte as seções a seguir para solucionar manualmente seu trabalho paralisado.

Verifique se seu ambiente computacional tem recursos suficientes para executar seu trabalho

1.    Abra o console do AWS Batch.

2.    Escolha Painel.

3.    No painel Visão geral da fila de trabalhos, na coluna RUNNABLE, escolha o trabalho que está paralisado no status RUNNABLE. A página Detalhes do trabalho é exibida.

4.    Na página Detalhes do trabalho na seção Contêiner, examine os valores de vCPUs, Memória e GPUs. Você precisa desses valores para concluir as etapas 9 a 10.

5.    Na página Filas de trabalhos, selecione uma fila de trabalhos e examine os ambientes de computação associados, pois qualquer ambiente computacional pode executar seu trabalho. Em seguida, repita as etapas 6 a 10 para cada ambiente computacional.

6.    Na página Ambientes computacionais, selecione um ambiente computacional para examinar suas permissões.

7.    Verifique se a coluna Status do ambiente computacional está definida como VÁLIDA. Além disso, verifique se o perfil de serviço associado ao ambiente possui todas as permissões necessárias.

Observação: quando houver erros intermitentes ou transitórios, pode levar alguns minutos para que o Status do ambiente computacional mude de VÁLIDO para INVÁLIDO.

8.    Verifique se a coluna Estado está definida como HABILITADO.

9.    Verifique se o valor de máximo de vCPUs é alto o suficiente para permitir que o AWS Batch aumente o número de vCPUs desejadas para executar trabalhos.

Observação: se você estiver usando um ambiente computacional do AWS Fargate, acesse a seção Verificar as configurações de rede e segurança do ambiente computacional.

10.    Verifique se o valor de vCPUs desejadas é igual ou superior ao número de vCPUs que o trabalho precisa executar.

Se o valor de vCPUs desejadas for 0, verifique a quantidade de recursos de memória e CPU disponíveis para seu tipo de instância do Amazon EC2.

-ou-

Se o valor de vCPU desejadas for maior que 0 ou se o trabalho ainda estiver no status RUNNABLE, conclua as etapas na próxima seção.

Importante: pelo menos um dos tipos de instância do seu ambiente computacional deve ter mais memória do que o especificado pelo trabalho. Além disso, o tipo de instância deve ter recursos de CPU iguais ou superiores aos especificados pelo trabalho. Se pelo menos um tipo de instância não tiver recursos de memória ou CPU suficientes para executar seu trabalho, cancele o trabalho. Execute um novo trabalho que exija menos CPU ou memória. Ou crie um novo ambiente computacional com recursos suficientes para executar o trabalho e, em seguida, atribua o trabalho à fila de trabalhos apropriada.

Verifique se seu ambiente computacional tem instâncias e se as instâncias estão disponíveis para executar seu trabalho

Para o ambiente computacional que você identificou como aquele que deve executar seu trabalho, siga as seguintes etapas:

1.    Abra o console do Amazon ECS.

2.    No painel de navegação, escolha Clusters. Em seguida, escolha o cluster que contém seu trabalho.

Para obter instruções gerais de solução de problemas do ECS, consulte Amazon ECS troubleshooting.

Observação: o nome do cluster começa com o nome do ambiente computacional. Isso é seguido por _Batch_ e um hash aleatório de números e letras.

3.    Escolha a visualização de instâncias do ECS. Em seguida, verifique se as instâncias de contêiner estão disponíveis para executar seu trabalho.

4.    Se o cluster tiver uma instância de contêiner disponível para executar seu trabalho, verifique o status do daemon do Docker. Em seguida, verifique o status do atendente de contêiner do Amazon ECS.

Observação: para obter mais informações, consulte How do I troubleshoot a disconnected Amazon ECS agent?

Se não houver instâncias no cluster do Amazon ECS, verifique se as instâncias podem ser criadas em seu ambiente computacional. Para verificar se suas instâncias podem ser criadas, conclua um dos procedimentos a seguir com base no seu ambiente computacional.

Para verificar se suas instâncias podem ser criadas em um ambiente computacional sob demanda:

1.    Abra o console do Amazon EC2.

2.    No painel de navegação esquerdo, escolha Grupos do Auto Scaling.

3.    Em Filtro, insira o nome do seu ambiente computacional.

Observação: o Amazon EC2 pode criar mais de um grupo do Auto Scaling para o mesmo ambiente computacional.

4.    Para cada grupo do Auto Scaling, escolha a visualização de Histórico de atividades. Em seguida, procure quaisquer problemas de bloqueio.

A coluna Status exibe Sem sucesso se houver algum problema impedindo a inicialização das instâncias.

Por exemplo, se sua conta atingir o número máximo de instâncias, o Amazon EC2 poderá retornar uma mensagem semelhante à seguinte:

Launching a new EC2 instance. Status Reason: Your quota allows for 0 more running instance(s). You requested at least 1. Launching EC2 instance failed.

O evento inclui um carimbo de data e hora em UTC de quando você enviou o trabalho:

At 2018-09-03T05:54:30Z a user request update of AutoScalingGroup constraints to min: 0, max: 1, desired: 1 changing the desired capacity from 0 to 1.
At 2018-09-03T05:54:52Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1.

Observação: o AWS Batch solicita instâncias em seu nome. Se você modificar os grupos do Auto Scaling manualmente, seu ambiente computacional poderá ser invalidado. Para obter mais informações sobre limites de instâncias e como solicitar um aumento de limite, consulte Service Quotas do Amazon EC2 .

5.    Se o grupo do Auto Scaling mostrar somente eventos bem-sucedidos nos eventos recentes, conclua as etapas na seção a seguir.

**Importante:**Certas permissões devem ser definidas para o perfil do AWS Identity and Access Management (IAM) AWSServiceRoleForAutoScaling vinculado ao serviço. O perfil do IAM AWSServiceRoleForAutoScaling deve ter, no mínimo, acesso de usuário à chave do AWS Key Management Service (AWS KMS) gerenciada pelo cliente. Isso é necessário em ambientes com imagens de máquina da Amazon (AMIs) personalizadas, volumes criptografados do Amazon Elastic Block Store (Amazon EBS) e chaves do AWS KMS gerenciadas pelo cliente. Para obter mais informações, consulte as Key policy sections that allow access to the customer managed key.

Para verificar se suas instâncias podem ser criadas em um ambiente computacional spot:

1.    Abra o console do Amazon EC2.

2.    No painel de navegação, escolha Instâncias. Em seguida, escolha Solicitações spot.

3.    No filtro, em Tipo de solicitação, escolha frota.

4.    Em Status, escolha ativo.

5.    Escolha Descrição. Em seguida, examine o valor de Capacidade de destino total para ver se a solicitação da instância spot foi atendida. Se nenhuma instância foi criada, verifique a visualização de Histórico para ver uma mensagem que explica o motivo. Por exemplo, solicitações que não conseguem atingir o preço da oferta retornam uma mensagem semelhante à seguinte:

m4.large, ami-aff65ad2, Linux/UNIX (Amazon VPC), us-east-1a, Spot bid price is less than Spot market price $0.0324

6.    Escolha uma porcentagem de preço apropriada para seu ambiente computacional. Certifique-se de criar um novo ambiente computacional se você alterar o preço da oferta. Para obter mais informações, consulte o Histórico de definição de preço da instância spot.

Observação: o AWS Batch cria solicitações de frota spot em seu nome. Evite modificar as solicitações de frota spot manualmente, caso contrário, seu ambiente computacional poderá ser invalidado.

7.    Se os eventos mais recentes do grupo do Auto Scaling mostrarem somente eventos bem-sucedidos, conclua as etapas da próxima seção.

Verifique o perfil do IAM da instância de contêiner

1.    Abra o console do AWS Batch.

2.    No painel de navegação, escolha Ambientes computacionais. Em seguida, escolha seu ambiente computacional.

3.    Na seção Detalhes do ambiente computacional, copie o nome do Perfil de instância.

4.    Abra o console do IAM.

5.    Na caixa de pesquisa, insira o nome do Perfil de instância. Em seguida, escolha seu perfil de instância a partir dos resultados.

6.    Escolha a visualização de Permissões. Em seguida, confirme se a política gerenciada AmazonEC2ContainerServiceforEC2Role está anexada ao perfil. Se a política estiver anexada, seu perfil de instância estará configurado corretamente e você poderá pular para a etapa 11.

7.    Escolha Anexar políticas.

8.    Na caixa de pesquisa, digite AmazonEC2ContainerServiceforEC2Role.

9.    Para a política AmazonEC2ContainerServiceforEC2Role, marque a caixa de seleção. Em seguida, escolha Anexar política.

10.    Escolha a visualização de Relações de confiança. Em seguida, escolha Editar relação de confiança.

11.    Confirme se a relação de confiança contém a seguinte política:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

12.    Se a relação de confiança corresponder à política do exemplo anterior, escolha Cancelar.

-ou-

Se a relação de confiança não corresponder à política do exemplo anterior, copie a política no console do Documento da política. Em seguida, escolha Atualizar política de confiança.

Se sua instância ainda não estiver ingressando no cluster do Amazon ECS, conclua as etapas na próxima seção.

Verifique as configurações de rede e segurança do ambiente computacional

1.    Abra o console do AWS Batch.

2.    No painel de navegação, escolha Ambientes computacionais. Em seguida, escolha seu ambiente computacional.

3.    Na seção Recursos computacionais, copie os valores de Sub-redes e Grupos de segurança.

4.    Abra o console da Amazon Virtual Private Cloud (Amazon VPC).

5.    No painel de navegação, escolha Sub-redes.

6.    Para cada sub-rede no ambiente computacional, escolha Descrição. Em seguida, examine os valores de Atribuição automática de endereços IPv4 públicos.

Se o valor de Atribuição automática de endereços IPv4 públicos for Sim, as instâncias iniciadas na sub-rede terão as seguintes propriedades:

  • Um endereço IPv4 público
  • Uma tabela de rotas com um destino de rota de 0.0.0.0/0
  • Um gateway da Internet definido como Destino (por exemplo: igw-1a2b3c4d)

Se o valor de Atribuição automática de endereço IPv4 público for Não, as instâncias iniciadas na sub-rede terão as seguintes propriedades:

  • Um endereço IPv4 privado
  • Uma tabela de rotas com um destino de rota de 0.0.0.0/0
  • Um gateway NAT definido como Destino (por exemplo: nat-12345678901234567).

Observação: para obter mais informações, consulte a seção Roteamento em Exemplo: VPC com servidores em sub-redes privadas e NAT.

7.    No painel de navegação, escolha Grupos de segurança.

8.    Para cada grupo de segurança especificado no ambiente computacional, escolha a visualização de Regras de saída. Em seguida, verifique se existe uma regra com as seguintes configurações:

  • Em Tipo, escolha TODO o tráfego.
  • Em Protocolo, escolha TODOS.
  • Em Intervalo de portas, escolha TODOS.
  • Em Destino, escolha 0.0.0.0/0.

Importante: se a regra não existir, escolha Editar. Em seguida, crie a regra. Para uma regra mais restritiva para tráfego de saída, escolha HTTPS (443) para Tipo e 0.0.0.0/0 para Destino.

9.    No painel de navegação, escolha ACLs de rede.

10.    Escolha a lista de controle de acesso à rede (ACL de rede) da VPC.

11.    Confirme se a ACL de rede padrão está configurada para permitir que todo o tráfego entre e saia das sub-redes associadas.

Importante: se você modificou a ACL, adicione uma regra que permita o tráfego HTTPS IPv4 de saída da sub-rede para a Internet. Para obter mais informações, consulte Controle o tráfego para seus recursos da AWS usando grupos de segurança e Controlar tráfego para sub-redes com ACLs de rede. Para alterar a VPC, sub-redes ou grupos de segurança, crie um novo ambiente computacional.

Se sua instância ainda não se juntar ao cluster do Amazon ECS, conecte-se à sua instância. Verifique o status do daemon do Docker e do agente de contêiner do Amazon ECS.

Observação: os procedimentos deste artigo não abrangem todas as causas possíveis e as formas de solucioná-las. Para solucionar problemas adicionais em um trabalho do AWS Batch que está paralisado no status RUNNABLE, use o AWS CloudTrail. Pesquise eventos com o atributo Nome de usuário definido como aws-batch para investigar erros que ocorrem durante tarefas agendadas.

Informações relacionadas

Conecte-se à sua instância do Linux

Conecte-se à sua instância do Windows

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses