Есть ли способ указать стратегию размещения задач таким образом, чтобы новая задача размещалась в экземпляре с наибольшим объемом доступной памяти?

#amazon-web-services #amazon-ec2 #amazon-ecs

#amazon-веб-сервисы #amazon-ec2 #amazon-ecs

Вопрос:

У меня есть несколько экземпляров EC2, зарезервированных в кластере ECS. В настоящее время задачи размещаются по распределению. Иногда это вызывает проблему, когда в некоторых экземплярах остается очень мало памяти, в то время как в других экземплярах ее много.

Есть ли способ создать стратегию размещения для размещения новых задач в экземпляре с максимально доступной памятью?

Ответ №1:

Согласно документации, вы можете предоставить планировщику три типа стратегий:

Amazon ECS поддерживает следующие стратегии размещения задач:

Задачи binpack размещаются в экземплярах контейнера таким образом, чтобы оставалось наименьшее количество неиспользуемого процессора или памяти. Эта стратегия сводит к минимуму количество используемых экземпляров контейнера.

Когда используется эта стратегия и выполняется действие масштабирования, Amazon ECS завершает задачи в зависимости от количества ресурсов, которые останутся на экземпляре контейнера после завершения задачи. Экземпляр контейнера, у которого останется наибольшее количество доступных ресурсов после завершения задачи, завершит выполнение этой задачи.

случайные задачи размещаются случайным образом.

распределенные задачи размещаются равномерно на основе указанного значения. Допустимыми значениями являются InstanceID (или host, что имеет тот же эффект) или любой платформенный или пользовательский атрибут, который применяется к экземпляру контейнера, например attribute:ecs.availability-zone . Задачи службы распределяются на основе задач из этой службы. Автономные задачи распределяются на основе задач из той же группы задач.

При использовании этой стратегии и выполнении действия по масштабированию Amazon ECS выберет задачи для завершения, которые поддерживают баланс между зонами доступности. В пределах зоны доступности задачи будут выбираться случайным образом.

То, что вам, похоже, нужно, похоже на противоположность binpack, поэтому вам может потребоваться создать пользовательский планировщик.

В качестве альтернативы вы можете увеличить требуемую память в определениях задач с помощью memoryReservation параметра. Таким образом, ваши контейнеры должны получать столько памяти, сколько им нужно для их операций.