DIY или прочитайте; AWS не решает это на сегодняшний день и фактически ссылается на код, разделенный ниже, когда их спрашивают клиенты.
ECS предоставляет свободу масштабирования различных услуг посредством добавления «задач». Они действуют и общаются независимо и размещаются в серии экземпляров EC2. Масштабирование услуг системы в и из -за того, что он иначе, а также масштабирование хостов EC2 — удобная задача, достигаемая с помощью метрик CloudWatch и тревоги. Тем не менее, масштабирование хостов EC2 требует некоторой сложности в принятии решений.
ECS-это трехслойная архитектура:
Кластер: набор приложений, работающих на общей группе службы ресурсов: логический экземпляр (например, «приложение») Задача: физический экземпляр задач масштабирования и выхода сервиса в изнутри является относительно прост; На основании нескольких метрических порогов, таких как процент нагрузки процессора, которые определяют, следует ли загружать новые задачи, или текущие должны быть удалены. Масштабирование ECS выходит, примерно то же самое; Например, когда определенный уровень процессора пересекается или когда физический кластер не имеет необходимого количества памяти для удержания текущей нагрузки, запускаются новые экземпляры EC2.
Удаление ресурсов — это снижение затрат; Это ресурсы, за которые оплачиваются, и удаление их, когда они больше не требуются, связано с использованием, которое переводится на затраты. Тем не менее, масштабная задача несколько сложна: применение общего метода пересечения метрического порога может привести к сокращению необходимых ресурсов в других параметрах, например: удаление ресурсов из-за более низких уровней процессора, в то время как уровень резервирования памяти не может »не может быть». позволить себе потерять хозяев. Поскольку AWS не обеспечивает функции масштаба с несколькими метрами, и из-за того, что такая шкала требует еще нескольких расчетов для принятия решения об удалении ресурсов, для задачи требуются внешние инструменты.
Проблема
Как уже говорилось, масштабирование не является простой задачей: при условии, что кластер хост был увеличен на основе низкой доступной памяти, но затем уменьшится до низких уровней ЦП, удаление экземпляров может снова привести к низкопользой памяти, которая вызовет новое Хозяева снова. Это может быть бесконечная петля масштабирования.
Бесконечный цикл -# из экземпляров контейнеров многократно масштабируется вверх и вниз, поскольку каждая шкала запускает противоположное действие
Требуется многометрический триггер масштаба. Игнорируя на мгновение тот факт, что AWS не предлагает такую функцию, что, если используется мультиметрический триггер, но снова увеличится триггер, это еще один цикл. Таким образом, также требуется показатель показателя показателя. Существует также необходимость решить, какой наименьший используемый экземпляр для масштабирования, а затем делает это изящным удалением, предоставляя клиентские соединения перед прекращением, вместе с очисткой 0%, используемых ресурсов.
Ecscale отвечает на все вышеперечисленное. Он готов работать на AWS Lambda, что обычно означает, что это совершенно бесплатный ресурс, предоставляющий виртуальный дворецкий, который очищает беспорядок неиспользованных случаев.
Инструмент готов к развертыванию в качестве функции без сервера, работающей на AWS Lambda. Таким образом, это требует всего ~ 3000 лямбда секунды каждый месяц. Поскольку каждая учетная запись AWS имеет право на 1 000 000 бесплатных секунд каждый месяц, если вы не запускаете другие приложения без серверов на Lambda, ресурс на самом деле полностью бесплатно. Процесс масштабирования выполняется каждые 60 минут (настраивается, один час по умолчанию, так как экземпляры EC2 уже оплачиваются за целый час, даже если он прекращается ранее), итерация по ресурсам ECS учетной записи и их очистке.
РЕДАКТИРОВАТЬ: AWS недавно объявила о новой модели выставления счетов EC2, которая взимает и экземпляр вторым. Это означает, что когда экземпляр прекращается, он выставлен в течение части часа, который он работал, а не целый час. Поэтому, Рекомендуется, что инструмент масштабирования работает чаще; Поскольку вызовы API сделаны, и система должно быть дано время для внесения несвязанных изменений, таких как развертывание, услуги масштабирования и другие, 1 секунда или даже 1 минута не являются идеальными. После проведения некоторых тестов кажется, что сладкая точка находится примерно на 20-минутном триггере. Однако вы должны проверить это в своем собственном кластере и убедиться, что новые процедуры тока не влияют на новые частые изменения. Удачи!
Как это работает?
Сервис итерации по сравнению с существующими кластерами ECS, проверяющих способность кластера масштабироваться на основе прогнозируемой способности резервирования памяти, ищут пустые хосты, выполняющие никаких задач, которые можно масштабировать, ищут наименее используемый кандидат в масштабе, перемещайте кандидата в дренажное состояние; Служба Служба изящно заканчивает дренажный хост, который не имеет выполнения задач и уменьшает желаемое количество экземпляров. начал
Создайте функцию Lambda с максимум 5 секунд, используя предоставленную политику ролей, копируйте код ecscale.py, чтобы лямбда создать триггер для запуска каждый час, все установленные, ваши ресурсы автоматически заботятся. Вклад, вопросы, предложения:
github.com/omerxx omer@prodops.io
Оригинал: «https://dev.to/omerxx/how-to-scale-in-ecs-hosts-3gpf»