Контейнер Fargate никогда не уничтожается из-за проверки работоспособности балансировщика нагрузки - PullRequest
0 голосов
/ 24 апреля 2020

AWS Fargate как концепция - удивительный сервис. Это позволяет уменьшить ваш сервис до 0 случаев, когда он не используется активно, или, по крайней мере, так его рекламируют. На практике мне трудно сделать это. Насколько я могу судить, вам необходим балансировщик нагрузки перед Fargate, и ALB автоматически выполняет запросы на проверку работоспособности каждые 30 секунд, предотвращая переход контейнера в спящий режим. Максимальное время проверки работоспособности составляет 300 секунд. Не так уж и много учтено, что услуга понадобится примерно на 15 минут в день. Как правильно представить миру приложение, основанное на Fargate, таким образом, что оно фактически отключается, когда не используется?

1 Ответ

1 голос
/ 24 апреля 2020

Если вы решите использовать AWS Fargate с ALB, как вы упомянули, вы никогда не отключите его. Чтобы быть справедливым, обычно для ускорения задачи контейнера требуется 15-30 секунд, поэтому тот факт, что она находится за активным балансировщиком нагрузки, дал бы вызывающим сторонам довольно негативный опыт для очень редких задач, так как они будут превышать время ожидания.

Здесь у вас есть несколько вариантов, в зависимости от того, насколько известный интервальный трафик c у вас есть, и можете ли вы подготовиться заранее.

Предположение : Экономия затрат - это драйвер, а трафик c - случайно / малый объем, вызываемый через syn c HTTP / S-вызовы.

Примечание : выделенный ALB + Fargate всегда будет иметь выделенную емкость и может быть излишним для редко вызываемого кода.

1) Перенесите ваше приложение на Lambda и используйте API Gateway
Это означает, что вы платите только за звонки, проходящие через. Запуск лямбда-контейнера очень быстрый, и если вы получаете всего несколько звонков в день, это будет стоить копейки. Это требует от вас портирования приложения, хотя это может быть затруднительно.

2) API GW + Lambda proxy
Это обманщик - и предполагается, что вызывающий абонент повторит попытку через 30 с. , То, что вы делаете здесь, - это сначала вызов функции Lambda, которая запускает вашу службу Fargate. Затем он звонит и возвращает результат. Вы используете правила масштабирования, чтобы отключить его, когда трафик c ушел (обычно минуты низкой активности). Здесь у вас нет LB, хотя ... вы делаете это все в лямбда-коде, так как предполагается, что у вас есть только 1 запущенная задача.

...