Назад | Перейти на главную страницу

Как использовать AWS Batch?

Я пытаюсь использовать новую функцию AWS Batch: https://aws.amazon.com/batch/

Я не могу запустить даже простейшее пакетное задание (используя демонстрацию «echo hello world»). Задание просто застревает в рабочем состоянии.

Чтобы попытаться изолировать проблему, я использую все настройки по умолчанию в новой учетной записи AWS.

Насколько я понимаю, мне не нужно запускать какие-либо экземпляры EC2 вручную, чтобы использовать эту функцию, что AWS Batch должен сделать это за меня. Однако, похоже, он ждет, пока доступный экземпляр EC2 запустит задание. Разве он не должен просто запустить экземпляр EC2 для самостоятельного выполнения задания?

Заранее спасибо.

Я заметил, что когда я указывал определение задания с 8000 МиБ, запускался экземпляр, у которого было всего 7986 МБ, и моя работа зависала в состоянии Runnable.

8000 MiB равно 8388.608MB, поэтому похоже, что у запускаемого экземпляра недостаточно памяти для выполнения задания, и он зависает.

Если я создаю определение задания с 7000 МБ, то мое задание больше не застревает в состоянии «Выполнено», поскольку оно по-прежнему использует тот же экземпляр с 7986 МБ памяти.

В документации по пакетной версии есть руководство по устранению неполадок «Задания, застрявшие в состоянии RUNNABLE». https://docs.aws.amazon.com/batch/latest/userguide/troubleshooting.html#job_stuck_in_runnable

Если ваша вычислительная среда содержит вычислительные ресурсы, но ваши задания не выходят за пределы статуса RUNNABLE, то есть что-то, что мешает фактически размещать задания на вычислительном ресурсе. Вот несколько распространенных причин этой проблемы:

Драйвер журнала awslogs не настроен на ваших вычислительных ресурсах

Задания AWS Batch отправляют информацию о своих журналах в CloudWatch Logs. Чтобы включить это, вы должны настроить свои вычислительные ресурсы на использование драйвера журнала awslogs. Если в основе AMI вычислительных ресурсов лежит AMI, оптимизированный для Amazon ECS (или Amazon Linux), то этот драйвер по умолчанию регистрируется в пакете ecs-init. Если вы используете другой базовый AMI, необходимо убедиться, что драйвер журнала awslogs указан в качестве доступного драйвера журнала с переменной среды ECS_AVAILABLE_LOGGING_DRIVERS при запуске агента контейнера Amazon ECS. Дополнительные сведения см. В разделах Спецификация AMI вычислительных ресурсов и Создание AMI вычислительных ресурсов.

Недостаточно ресурсов

Если в ваших определениях заданий указано больше ресурсов ЦП или памяти, чем могут выделить ваши вычислительные ресурсы, то ваши задания никогда не будут размещены. Например, если в вашем задании указано 4 ГиБ памяти, а у ваших вычислительных ресурсов меньше этого количества, то задание не может быть размещено на этих вычислительных ресурсах. В этом случае вы должны уменьшить указанную в определении задания память или добавить в среду вычислительные ресурсы большего размера.

Достигнут лимит инстансов Amazon EC2

Количество инстансов Amazon EC2, которые ваша учетная запись может запустить в регионе AWS, определяется вашим лимитом инстансов EC2. У некоторых типов экземпляров также есть ограничение на тип экземпляра. Дополнительную информацию об ограничениях инстансов Amazon EC2 для вашей учетной записи (в том числе о том, как запросить увеличение лимита), см. В разделе Ограничения сервисов Amazon EC2 в Руководстве пользователя Amazon EC2 для инстансов Linux.

Другие очень распространенные проблемы, которые я вижу, могут быть следующими:

  1. Нет выхода в интернет
  2. ЦП / память в определении задания выше, чем у экземпляров
  3. Экземпляр не зарегистрирован в кластере ECS
  4. Агент отключен - https://aws.amazon.com/premiumsupport/knowledge-center/ecs-agent-disconnected/

Дополнительные шаги по устранению неполадок, которые вы можете предпринять:

  1. Запустить соответствующее определение задачи ECS вручную в кластере
  2. SSH и попробуйте запустить докер из экземпляра контейнера
  3. Конечные точки Curl ECS и Batch изнутри экземпляра контейнера
  4. Устранение ограничений ЦП / памяти при определении задания
  5. Просмотрите /etc/ecs/ecs.config
  6. Получить журналы ECS - https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-logs-collector.html

Сегодня у меня была такая же проблема. Я решил эту проблему, выполнив следующие действия:

открыто VPCSubnets<YOUR SUBNET>Subnet ActionsModify Auto-assign IP Настройка.

Проверьте Enable auto-assign public IPV4 address Воссоздайте свою вычислительную среду AWS Batch.

Поскольку экземпляру контейнера нужен доступ к Интернету. Итак, экземпляру контейнера потребуется глобальный публичный IP-адрес.