Как начать работу с автоматическим масштабированием развертываний контейнеров в AWS ECS — CloudSavvy IT

изображение героя экса

AWS Elastic Container Service (ECS) — это вычислительный движок, специально разработанный для контейнеров Docker. Вы можете использовать его для развертывания контейнеров с использованием базовых экземпляров EC2 или для запуска независимого от сервера развертывания в Fargate.

Что такое ECS?

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

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

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

ECS также можно легко масштабировать с помощью одного переключателя по сравнению с EC2, что требует дополнительной настройки. Если вы решите включить эту функцию, ECS будет автоматически развертывать новые контейнеры для соответствия требованиям, когда загрузка ЦП, использование памяти или другие аварийные сигналы становятся высокими. Благодаря автоматическому масштабированию вам никогда не придется беспокоиться об обновлении сервера до более высокого класса или о развертывании нескольких из них вручную. Обратный эффект также верен — ваше приложение может сокращаться в нерабочее время, экономя ваши деньги в процессе.

Что касается ценообразования, то за запуск модели EC2 не взимается дополнительная плата. Вы просто платите за базовые экземпляры. Для Fargate плата рассчитывается на основе количества виртуальных ЦП и запрошенной памяти. Если вы запустите цифры, Fargate окажется на 20% дороже на бумаге. Однако это компенсируется тем фактом, что развертывания Fargate (при правильной настройке) будут использовать ровно столько ресурсов, сколько им нужно, что значительно упрощает расходы. Fargate также поддерживает точечные экземплярыЭто экономит кучу денег по сравнению с EC2 и делает Fargate предпочтительным методом запуска в любом случае, который по какой-либо причине не требует прямого доступа к базовому серверу.

Настройка Docker и нажатие на ECR

Чтобы передать контейнер в ECS, вам нужно отправить его в репозиторий. Вы можете использовать Docker hub или свой собственный сервер реестра, но AWS предлагает собственное решение с Elastic Container Registry. Вы можете отправить сюда контейнеры и сделать их приватными для вашей учетной записи AWS и легко доступными из других сервисов, таких как ECS и CodePipeline.

Перейдите на консоль управления ECR и создайте новый репозиторий. URI хранилища зависит от идентификатора вашей учетной записи AWS — вы можете скопировать его в столбце «URI».

Сохраните следующий скрипт как updateECR.sh рядом с вашим Dockerfile. Заменить TAG и REPO переменные с правильными значениями.

TAG="docker-test"
REPO="ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/"$TAG":latest"

aws ecr get-login-password | docker login --username AWS --password-stdin $REPO
docker build -t $TAG .
docker tag $TAG:latest $REPO
docker push $REPO

Запустив этот скрипт, вы войдете в ECR, создадите свой контейнер, отметите его и отправите в свой репозиторий. Если вы обновите список, вы должны увидеть свой контейнер:

репозиторий ECR

Развертывание на ECS

Чтобы запустить контейнер в ECS, вам понадобятся две вещи:

  • «Определение задачи», которое содержит метаданные о самих контейнерах — какие порты доступны, сколько памяти выделяется для контейнеров и т. Д. Вы можете запустить несколько контейнеров в одном определении задачи, если ваше приложение использует более одного.
  • «Служба», которая представляет собой развертывание определения задачи, связанной с ней сети и параметров автоматического масштабирования. Вы можете объединить несколько служб в один «кластер».

Сначала нужно создать определение задачи, поэтому создайте его из «Определения задач» на боковой панели.

создать новое определение задачи

Дайте ему имя и укажите объем памяти задачи и размер vCPU. Помните, что вы всегда можете создать несколько контейнеров и связать их вместе с Load Balancer. Если вы планируете использовать автоматическое масштабирование, вам следует рассматривать это значение как размер блока каждого контейнера, а не развертывать один контейнер из 16 vCPU, вы можете развернуть восемь контейнеров из 2 vCPU.

установить vCPU и Mem

Затем нажмите «Добавить контейнер», чтобы определить контейнеры, к которым будет обращаться это определение задачи. Вставьте в URI вашего контейнера Docker в ECR. Здесь вы также можете установить ограничения программной и жесткой памяти и открыть порты (применимо только к типам запуска EC2).

добавить контейнер

Как только это будет создано, вы можете развернуть Сервисы, используя это определение. Перейдите в «Кластеры» и создайте новый кластер, выбрав либо Fargate, либо EC2 в зависимости от ваших предпочтений. При желании вы можете создать новый VPC для этого кластера или развернуть его в своем VPC по умолчанию.

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

создать новый сервис

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

настройка сервиса

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

Вы также можете добавить балансировщик нагрузки или установить пользовательские настройки DNS на этой странице. Если вы используете балансировщик нагрузки, убедитесь, что вы установили разумный «льготный период проверки работоспособности», который не позволит задачам помечаться как нездоровые во время запуска.

настройка сервиса

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

настройка сервиса

Вы можете установить политика масштабирования отслеживания цели в TargetTrackingPolicyи ECSServiceAverageCPUUtilization порог до 75-80% или около того. Если вы не хотите использовать политику отслеживания целей, вы можете вручную увеличивать и уменьшать ее в зависимости от сигналов тревоги CloudWatch.

После развертывания вашей службе потребуется около минуты для запуска первых контейнеров, и она будет доступна в контейнере или в конечной точке ENI Load Balancer. Если вы хотите, вы можете назначить Elastic IP этому ENI, который вы можете настроить с помощью DNS для постоянной связи с кластером.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.