Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! МСня Π·ΠΎΠ²ΡƒΡ‚ ΠšΠΈΡ€ΠΈΠ»Π», я CTO Π² Adapty. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ нашСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ находится Π½Π° AWS, ΠΈ сСгодня я расскаТу ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ сократили расходы Π½Π° сСрвСра Π² 3 Ρ€Π°Π·Π° Π·Π° счёт использования спотовых инстансов Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡ… Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π‘Π½Π°Ρ‡Π°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π·ΠΎΡ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π° ΠΏΠΎΡ‚ΠΎΠΌ подробная инструкция для запуска.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ спотовыС инстансы?

Π‘ΠΏΠΎΡ‚ΠΎΠ²Ρ‹Π΅ инстансы β€” это сСрвСра Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ AWS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°ΡŽΡ‚, ΠΈ ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΡŽΡ‚ ΠΈΡ… с большой скидкой (Amazon ΠΏΠΈΡˆΠ΅Ρ‚ Π΄ΠΎ 90%, ΠΏΠΎ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ ~3x, Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π² зависимости ΠΎΡ‚ Ρ€Π΅Π³ΠΈΠΎΠ½Π°, AZ ΠΈ Ρ‚ΠΈΠΏΠ° инстанса). ОсновноС ΠΈΡ… ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя считали, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π΄Π΅Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ, Π»ΠΈΠ±ΠΎ для Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ расчёту Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, с сохранСниСм ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½Π° S3 ΠΈΠ»ΠΈ Π² Π±Π°Π·Ρƒ, Π½ΠΎ Π½Π΅ для ΠΏΡ€ΠΎΠ΄Π°. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ сторонниС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ споты Π½Π° ΠΏΡ€ΠΎΠ΄Π΅, Π½ΠΎ Ρ‚Π°ΠΌ для нашСго кСйса ΠΌΠ½ΠΎΠ³ΠΎ костылСй, поэтому ΠΌΡ‹ Π½Π΅ внСдряли ΠΈΡ…. ΠŸΠΎΠ΄Ρ…ΠΎΠ΄, описанный Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… стандартного Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° AWS, Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… скриптов, ΠΊΡ€ΠΎΠ½ΠΎΠ² ΠΈ Ρ‚Π΄.

Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ нСсколько ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ†Π΅Π½ Π½Π° спотовыС инстансы.

m5.large Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π΅ eu-west-1 (Ireland). Π¦Π΅Π½Π° прСимущСствСнно ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π° Π½Π° протяТСнии 3 мСсяцСв, Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ экономия 2.9x.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

m5.large Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π΅ us-east-1 (N. Virginia). Π¦Π΅Π½Π° постоянно мСняСтся Π½Π° протяТСнии 3 мСсяцСв, Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ экономия ΠΎΡ‚ 2.3x Π΄ΠΎ 2.8x Π² зависимости ΠΎΡ‚ Π·ΠΎΠ½Ρ‹ доступности.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

t3.small Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π΅ us-east-1 (N. Virginia). Π¦Π΅Π½Π° ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π° Π½Π° протяТСнии 3 мСсяцСв, Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ экономия 3.4x.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

АрхитСктура сСрвиса

Базовая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° сСрвиса, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Π½ΠΈΠΆΠ΅.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

Application Load Balancer β†’ EC2 Target Group β†’ Elastic Container Service

Π’ качСствС балансировщика ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Application Load Balancer (ALB), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отправляСт запросы Π² EC2 Target Group (TG). TG ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½Π° инстансах ΠΏΠΎΡ€Ρ‚Ρ‹ для ALB ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Elastic Container Service (ECS). ECS β€” это Π°Π½Π°Π»ΠΎΠ³ Kubernetes Π² AWS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ занимаСтся ΠΌΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚ΠΎΠΌ Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

На ΠΎΠ΄Π½ΠΎΠΌ инстансС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ, поэтому ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΡ… фиксировано. ECS сообщаСт TG, Ρ‡Ρ‚ΠΎ ΠΎΠ½ запускаСт Π½ΠΎΠ²Ρ‹ΠΉ таск (Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Kubernetes это называСтся ΠΏΠΎΠ΄), ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ свободных ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π½Π° инстансС ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… для запускаСмого таска. Π’Π°ΠΊΠΆΠ΅ TG рСгулярно провСряСт, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ инстанс ΠΈ Π°ΠΏΠΈ Π½Π° Π½Ρ‘ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ health check, ΠΈ Ссли Π²ΠΈΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Ρ‚ΠΎ пСрСстаёт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° запросы.

EC2 Auto Scaling Groups + ECS Capacity Providers

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ сСрвис EC2 Auto Scaling Groups (ASG). Из названия ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ инстансов. ΠŸΡ€ΠΈ этом Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² AWS Π½Π΅ Π±Ρ‹Π»ΠΎ встроСнной возмоТности ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ количСством Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… машин ΠΈΠ· ECS. ECS позволял ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство тасков, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ использованию CPU, RAM ΠΈΠ»ΠΈ количСству запросов. Но Ссли таски Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ всС свободныС инстансы, Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ автоматичСски Π½Π΅ поднимались.

Π­Ρ‚ΠΎ измСнилось с появлСниСм ECS Capacity Providers (ECS CP). Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис Π² ECS ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с ASG, ΠΈ Ссли таски Π½Π΅ ΡƒΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… инстансах, Ρ‚ΠΎ поднимутся Π½ΠΎΠ²Ρ‹Π΅ (Π½ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… установлСнных Π»ΠΈΠΌΠΈΡ‚ΠΎΠ² ASG). Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ сторону, Ссли ECS CP Π²ΠΈΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ инстансы Π±Π΅Π· тасков, Ρ‚ΠΎ ΠΎΠ½ даст ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ASG, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΈΡ… Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΠ»Π°. Π£ ECS CP Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ инстансов, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство машин Π±Ρ‹Π»ΠΎ всСгда свободно для быстрого ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ тасков, расскаТу ΠΎΠ± этом Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

EC2 Launch Templates

ПослСдний сСрвис, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ я расскаТу, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΌΡƒ описанию создания Π΄Π°Π½Π½ΠΎΠΉ инфраструктуры, β€” EC2 Launch Templates. Он позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ шаблон, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ всС ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ это ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· с нуля. Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ запускаСмой ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π³Ρ€ΡƒΠΏΠΏΡƒ бСзопасности, ΠΎΠ±Ρ€Π°Π· диска ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π»ΠΈΡ‚Ρ‹ Π½Π° всС запускаСмыС инстансы. Π’ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ скрипты, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ECS Π°Π³Π΅Π½Ρ‚Π°.

Один ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β€” ECS_ENABLE_SPOT_INSTANCE_DRAINING=true. Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ECS ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сигнал ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ спотовый инстанс Π·Π°Π±ΠΈΡ€Π°ΡŽΡ‚, ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ всС таски, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° Π½Ρ‘ΠΌ Π² статус Draining. НикакиС Π½ΠΎΠ²Ρ‹Π΅ таски Π½Π° этот инстанс Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚, Ссли Π΅ΡΡ‚ΡŒ таски, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прямо сСйчас хотят выкатится Π½Π° Π½Π΅Π³ΠΎ, ΠΎΠ½ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Запросы с балансировщика Ρ‚ΠΎΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ. Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ инстанса ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π·Π° 2 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Π΄ΠΎ фактичСского события. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли ваш сСрвис Π½Π΅ выполняСт Π·Π°Π΄Π°Ρ‡ дольшС 2 ΠΌΠΈΠ½ΡƒΡ‚ ΠΈ Π½Π΅ сохраняСт Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π° диск, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спотовыС инстансы Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

По ΠΏΠΎΠ²ΠΎΠ΄Ρƒ диска β€” AWS Π½Π΅Π΄Π°Π²Π½ΠΎ сдСлал Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ использованиС Elastic File System (EFS) вмСстС с ECS, с этой схСмой Π΄Π°ΠΆΠ΅ диск Π½Π΅ являСтся ΠΏΡ€Π΅Π³Ρ€Π°Π΄ΠΎΠΉ, Π½ΠΎ ΠΌΡ‹ это Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π°ΠΌ диск Π½Π΅ Π½ΡƒΠΆΠ΅Π½ для хранСния состояния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ послС получСния SIGINT (отправляСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° таска Π² статус Draining) всС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ остановлСны Ρ‡Π΅Ρ€Π΅Π· 30 сСкунд, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ Π½Π΅ успСли Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это врСмя ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ECS_CONTAINER_STOP_TIMEOUT. Π“Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ большС 2 ΠΌΠΈΠ½ΡƒΡ‚ для спотовых машин.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сСрвиса

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ нСпосрСдствСнно ΠΊ созданию описанного сСрвиса. Π’ процСссС я ΠΎΠΏΠΈΡˆΡƒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅. Π’ Ρ†Π΅Π»ΠΎΠΌ это пошаговая инструкция, Π½ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ совсСм Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ ΠΎΡ‡Π΅Π½ΡŒ спСцифичныС кСйсы я Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ. ВсС дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ консоли AWS, Π½ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ воспроизвСсти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CloudFormation ΠΈΠ»ΠΈ Terraform. Π’ Adapty ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Terraform.

EC2 Launch Template

Π’ Π΄Π°Π½Π½ΠΎΠΌ сСрвисС создаётся конфигурация машин, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ шаблонами происходит Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ EC2 -> Instances -> Launch templates.

Amazon machine image (AMI) β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°Π· диска, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ всС инстансы. Для ECS Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΎΡ‚ Amazon. Он рСгулярно обновляСтся ΠΈ содСрТит всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ECS. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΎΠ±Ρ€Π°Π·Π°, Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° страницу Amazon ECS-optimized AMIs, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅Π³ΠΈΠΎΠ½ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ AMI ID для Π½Π΅Π³ΠΎ. НапримСр, для Ρ€Π΅Π³ΠΈΠΎΠ½Π° us-east-1 Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания ΡΡ‚Π°Ρ‚ΡŒΠΈ ID β€” ami-00c7c1cf5bdc913ed. Π­Ρ‚ΠΎΡ‚ ID Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΡƒΠ½ΠΊΡ‚ Specify a custom value.

Instance type β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΈΠΏ инстанса. Π’Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для вашСй Π·Π°Π΄Π°Ρ‡ΠΈ.

Key pair (login) β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ сСртификат, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ с инстансу ΠΏΠΎ SSH, Ссли это Π½ΡƒΠΆΠ½ΠΎ.

Network settings β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сСти. Networking platform Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Virtual Private Cloud (VPC). Security groups β€” Π³Ρ€ΡƒΠΏΠΏΡ‹ бСзопасности для Π²Π°ΡˆΠΈΡ… инстансов. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ балансировщик ΠΏΠ΅Ρ€Π΅Π΄ инстансами, Ρ‚ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ здСсь Π³Ρ€ΡƒΠΏΠΏΡƒ, которая Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ входящиС соСдинСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с балансировщика. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ 2 Π³Ρ€ΡƒΠΏΠΏΡ‹ бСзопасности, ΠΎΠ΄Π½Π° для балансировщика, которая Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ входящиС (inbound) соСдинСния ΠΎΡ‚ΠΎΠ²ΡΡŽΠ΄Ρƒ ΠΏΠΎ ΠΏΠΎΡ€Ρ‚Π°ΠΌ 80 (http) ΠΈ 443 (https), Π° вторая для машин, которая Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ входящиС соСдинСния ΠΏΠΎ Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΠΎΡ€Ρ‚Π°ΠΌ ΠΎΡ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ балансировщика. Π˜ΡΡ…ΠΎΠ΄ΡΡ‰ΠΈΠ΅ (outbound) соСдинСния Π² ΠΎΠ±Π΅ΠΈΡ… Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΎ TCP ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ Π½Π° всС ΠΏΠΎΡ€Ρ‚Ρ‹ Π½Π° всС адрСса. МоТно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡ€Ρ‚Ρ‹ ΠΈ адрСса для исходящих соСдинСний, Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ постоянно ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ ΠΏΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΡ€Ρ‚Ρƒ.

Storage (volumes) β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ дисков для машин. ΠžΠ±ΡŠΡ‘ΠΌ диска Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мСньшС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π½ Π² AMI, для ECS Optimized β€” 30 GiB.

Advanced details β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

Purchasing option β€” Ρ…ΠΎΡ‚ΠΈΠΌ Π»ΠΈ ΠΌΡ‹ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ спотовыС инстансы. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Π½ΠΎ здСсь эту Π³Π°Π»ΠΎΡ‡ΠΊΡƒ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, настроим это Π² Auto Scaling Group, Ρ‚Π°ΠΌ большС ΠΎΠΏΡ†ΠΈΠΉ.

IAM instance profile β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ€ΠΎΠ»ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ инстансы. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ инстансы Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π² ECS, ΠΈΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΡ€Π°Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π»Π΅ΠΆΠ°Ρ‚ Π² Ρ€ΠΎΠ»ΠΈ ecsInstanceRole. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создана, Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ здСсь инструкция ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. ПослС создания ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Ρ‘ Π² шаблонС.
Π”Π°Π»ΡŒΡˆΠ΅ ΠΈΠ΄Ρ‘Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π² основном Π²Π΅Π·Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅ значСния, Π½ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… понятноС описаниС. Π― всСгда Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ EBS-optimized instance ΠΈ T2/T3 Unlimited, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ burstable инстансы.

User data β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» /etc/ecs/ecs.config, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π»Π΅ΠΆΠΈΡ‚ конфигурация Π°Π³Π΅Π½Ρ‚Π° ECS.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ user data:

#!/bin/bash
echo ECS_CLUSTER=DemoApiClusterProd >> /etc/ecs/ecs.config
echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config
echo ECS_CONTAINER_STOP_TIMEOUT=1m >> /etc/ecs/ecs.config
echo ECS_ENGINE_AUTH_TYPE=docker >> /etc/ecs/ecs.config
echo "ECS_ENGINE_AUTH_DATA={"registry.gitlab.com":{"username":"username","password":"password"}}" >> /etc/ecs/ecs.config

ECS_CLUSTER=DemoApiClusterProd β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ инстанс ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ кластСру с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ этот кластСр смоТСт Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π½Π° этом сСрвСрС свои таски. ΠœΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ создали кластСр, Π½ΠΎ ΠΏΡ€ΠΈ создании Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это имя.

ECS_ENABLE_SPOT_INSTANCE_DRAINING=true β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ сигнала ΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ спотового инстанса, всС таски Π½Π° Π½Ρ‘ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² статус Draining.

ECS_CONTAINER_STOP_TIMEOUT=1m β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ послС получСния сигнала SIGINT, Ρƒ всСх Π·Π°Π΄Π°Ρ‡ Π΅ΡΡ‚ΡŒ 1 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡ… ΡƒΠ±ΡŒΡŽΡ‚.

ECS_ENGINE_AUTH_TYPE=docker β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² качСствС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ docker-схСма

ECS_ENGINE_AUTH_DATA=... β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΌΡƒ container registry, Π³Π΄Π΅ хранятся ваши Docker ΠΎΠ±Ρ€Π°Π·Ρ‹. Если ΠΎΠ½ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ, Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΈΠ· Docker Hub, поэтому ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ECS_ENGINE_AUTH_TYPE ΠΈ ECS_ENGINE_AUTH_DATA Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

ПолСзно Π·Π½Π°Ρ‚ΡŒ: рСкомСндуСтся рСгулярно ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ AMI, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Π½ΠΎΠ²Ρ‹Ρ… вСрсиях ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ вСрсии Docker, Linux, ECS Π°Π³Π΅Π½Ρ‚Π° ΠΈ Π΄Ρ€. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ± этом, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ увСдомлСния ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсий. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ увСдомлСния Π½Π° email ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ€ΡƒΠΊΠ°ΠΌΠΈ, Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Launch Template с ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹ΠΌ AMI.

EC2 Auto Scaling Group

Auto Scaling Group ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° запуск ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ инстансов. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ происходит Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ EC2 -> Auto Scaling -> Auto Scaling Groups.

Launch template β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ созданный Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС шаблон. Π’Π΅Ρ€ΡΠΈΡŽ оставляСм Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΡƒΡŽ.

Purchase options and instance types β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΈΠΏΡ‹ инстансов для кластСра. Adhere to launch template ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ инстанса ΠΈΠ· Launch Template. Combine purchase options and instance types позволяСт Π³ΠΈΠ±ΠΊΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ инстансов. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

Optional On-Demand base β€” количСство ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…, Π½Π΅ спотовых инстансов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всСгда Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

On-Demand percentage above base β€” ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π½ΠΎΠ΅ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈ спотовых инстансов, 50-50 Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎΡ€ΠΎΠ²Π½Ρƒ, 20-80 Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ инстанс Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ 4 спотовых. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° я ΡƒΠΊΠ°ΠΆΡƒ 50-50, Π½ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΡ‹ Ρ‡Π°Ρ‰Π΅ всСго Π΄Π΅Π»Π°Π΅ΠΌ 20-80, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях 0-100.

Instance types β€” Ρ‚ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ инстансов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² кластСрС. ΠœΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ использовали, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ понимаю смысл этой истории. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»ΠΎ Π² Π»ΠΈΠΌΠΈΡ‚Π°Ρ… Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ инстансов, Π½ΠΎ ΠΎΠ½ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π»Π΅Π³ΠΊΠΎ. Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² коммСнтариях)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

Network β€” настройки сСти, Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ VPC ΠΈ подсСти для машин, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв стоит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС доступныС подсСти.

Load balancing β€” настройки балансировщика, Π½ΠΎ ΠΌΡ‹ это сдСлаСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, здСсь Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°Π΅ΠΌ. Health checks Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ настроСны ΠΏΠΎΠ·ΠΆΠ΅.

Group size β€” ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π»ΠΈΠΌΠΈΡ‚Ρ‹ Π½Π° количСство машин Π² кластСрС ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ количСство машин Π½Π° стартС. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ машин Π² кластСрС Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ станСт мСньшС минимально ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ большС максимального, Π΄Π°ΠΆΠ΅ Ссли ΠΏΠΎ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Scaling policies β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡΡΡŒ ΠΎΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ECS тасков, поэтому настроим ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΆΠ΅.

Instance scale-in protection β€” Π·Π°Ρ‰ΠΈΡ‚Π° инстансов ΠΎΡ‚ удалСния ΠΏΡ€ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π½ΠΈΠ·. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ASG Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΠ»Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ таски. ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ для инстансов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ тасков, Π±ΡƒΠ΄Π΅Ρ‚ ECS Capacity Provider.

Add tags β€” ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π΅Π³ΠΈ для инстансов (для этого Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡ‚ΠΎΡΡ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΠ° Tag new instances). Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π΅Π³ Name, Ρ‚ΠΎΠ³Π΄Π° всС инстансы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π³Ρ€ΡƒΠΏΠΏΡ‹, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ, ΠΈΡ… ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² консоли.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

ПослС создания Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Ρ‘ ΠΈ Π·Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» Advanced configurations, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π° этапС создания Π² консоли Π²ΠΈΠ΄Π½Ρ‹ Π½Π΅ всС ΠΎΠΏΡ†ΠΈΠΈ.

Termination policies β€” ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ инстансов. Они ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎ порядку. ΠœΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅. Π‘Π½Π°Ρ‡Π°Π»Π° ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ инстансы с Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ старым Launch Template (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΌΡ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ AMI, Ρƒ нас создалась новая вСрсия, Π½ΠΎ всС инстансы успСли Π½Π° Π½Π΅Ρ‘ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ). ΠŸΠΎΡ‚ΠΎΠΌ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ инстансы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π»ΠΈΠΆΠ΅ всСго ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ расчётному часу ΠΏΠΎ Π±ΠΈΠ»Π»ΠΈΠ½Π³Ρƒ. И дальшС Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ самыС старыС ΠΏΠΎ Π΄Π°Ρ‚Π΅ запуска.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

ПолСзно Π·Π½Π°Ρ‚ΡŒ: для обновлСния всСх машин Π² кластСрС, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Instance Refresh. Если ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ это с Lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ шага, Ρ‚ΠΎ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ автоматизированная систСма Π°ΠΏΠ΄Π΅ΠΉΡ‚Π° инстансов. ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ всСх машин Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ instance scale-in protection для всСх инстансов Π² Π³Ρ€ΡƒΠΏΠΏΠ΅. НС настройку Π² Π³Ρ€ΡƒΠΏΠΏΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π°Ρ‰ΠΈΡ‚Ρƒ с самих машин, это дСлаСтся Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Instance management.

Application Load Balancer ΠΈ EC2 Target Group

Балансировщик создаётся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ EC2 β†’ Load Balancing β†’ Load Balancers. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Application Load Balancer, сравнСниС Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² балансировщиков ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π° страницС сСрвиса.

Listeners β€” ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ 80 ΠΈ 443 ΠΏΠΎΡ€Ρ‚Ρ‹ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Π΄ΠΈΡ€Π΅ΠΊΡ‚ с 80 Π½Π° 443 с ΠΏΠΎΠ·ΠΆΠ΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π°Π²ΠΈΠ» балансировщика.

Availability Zones β€” Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСм Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ всСм Π·ΠΎΠ½Ρ‹ доступности.

Configure Security Settings β€” здСсь указываСтся SSL-сСртификат для балансировщика, самый ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сСртификат Π² ACM. ΠŸΡ€ΠΎ различия Security Policy ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ELBSecurityPolicy-2016-08. ПослС создания балансировщика, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ DNS name, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ CNAME для вашСго Π΄ΠΎΠΌΠ΅Π½Π°. НапримСр, Ρ‚Π°ΠΊ это выглядит Π² Cloudflare.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

Security Group β€” создаём ΠΈΠ»ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ бСзопасности для балансировщика, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом писал Ρ‡ΡƒΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ EC2 Launch Template β†’ Network settings.

Target group β€” создаём Π³Ρ€ΡƒΠΏΠΏΡƒ, которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³ запросов с балансировщика Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΈ провСряСт ΠΈΡ… Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Target type Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Instance, Protocol ΠΈ Port Π»ΡŽΠ±Ρ‹Π΅, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ HTTPS для общСния ΠΌΠ΅ΠΆΠ΄Ρƒ балансировщиком ΠΈ инстансами, Ρ‚ΠΎ Π½Π° Π½ΠΈΡ… Π½Π°Π΄ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ сСртификат. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΡ‹ это Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, просто оставим 80 ΠΏΠΎΡ€Ρ‚.

Health checks β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности сСрвиса. Π’ настоящСм сСрвисС это Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π²Π°ΠΆΠ½Ρ‹Π΅ части бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° я ΠΎΡΡ‚Π°Π²Π»ΡŽ настройки ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π”Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» запросов, Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚, ΠΊΠΎΠ΄Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΈ Π΄Ρ€. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Success codes 200-399, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Docker ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 304 ΠΊΠΎΠ΄.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

Register Targets β€” здСсь Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ для Π³Ρ€ΡƒΠΏΠΏΡ‹, Π½ΠΎ Π² нашСм случаС этим Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ECS, поэтому просто пропускаСм этот шаг.

ПолСзно Π·Π½Π°Ρ‚ΡŒ: Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ балансировщика ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ Π² S3 Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. ΠžΡ‚Ρ‚ΡƒΠ΄Π° ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² сторонниС сСрвисы для Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ, Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ SQL-запросы прямо ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Π² S3 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Athena. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² ΠΈΠ· Π±Π°ΠΊΠ΅Ρ‚Π° S3 ΠΏΠΎ истСчСниС Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ECS Task Definition

На ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΡˆΠ°Π³Π°Ρ… ΠΌΡ‹ создали всё, Ρ‡Ρ‚ΠΎ связано с инфраструктурой сСрвиса, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ описанию ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ. Π­Ρ‚ΠΎ дСлаСтся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ECS β†’ Task Definitions.

Launch type compatibility β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ EC2.

Task execution IAM role β€” Π²Ρ‹Π±ΠΈΡ€ΠΈΠ°Π΅ΠΌ ecsTaskExecutionRole. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Ρ‘ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π»ΠΎΠ³ΠΈ, даётся доступ ΠΊ сСкрСтным ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ Π΄Ρ€.

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Container Definitions Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Add Container.

Image β€” ссылка Π½Π° ΠΎΠ±Ρ€Π°Π· с ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° я Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· с Docker Hub bitnami/node-example:0.0.1.

Memory Limits β€” Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΠΏΠΎ памяти для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Hard Limit β€” Тёсткий Π»ΠΈΠΌΠΈΡ‚, Ссли ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ выполнится ΠΊΠΎΠΌΠ°Π½Π΄Π° docker kill, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ сразу ΠΆΠ΅ ΡƒΠΌΡ€Ρ‘Ρ‚. Soft Limit β€” мягкий Π»ΠΈΠΌΠΈΡ‚, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ тасков Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. НапримСр, Ссли Π½Π° машинС 4 GiB ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Π° soft limit ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° β€” 2048 MiB, Ρ‚ΠΎ Π½Π° этой машинС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ максимум 2 Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… таска с этим ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ 4 GiB ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти β€” это Ρ‡ΡƒΡ‚ΡŒ мСньшС, Ρ‡Π΅ΠΌ 4096 MiB, это ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ECS Instances Π² кластСрС. Soft limit Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС hard limit. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π² ΠΎΠ΄Π½ΠΎΠΌ таскС Π΅ΡΡ‚ΡŒ нСсколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Ρ‚ΠΎ ΠΈΡ… Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Port mappings β€” Π² Host port ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ 0, это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒΡΡ динамичСски, Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Target Group. Container Port β€” ΠΏΠΎΡ€Ρ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, часто задаётся Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ для исполнСния, Π»ΠΈΠ±ΠΎ назначаСтся Π² ΠΊΠΎΠ΄Π΅ вашСго прилоТСния, Dockerfile ΠΈ Ρ‚Π΄. Для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ 3000, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡƒΠΊΠ°Π·Π°Π½ Π² Dockerfile ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°.

Health check β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ работоспособности ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ настроСн Π² Target Group.

Environment β€” настройки окруТСния. CPU units β€” ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Memory limits, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎ процСссор. КаТдоС ядро процСссора β€” 1024 ΡŽΠ½ΠΈΡ‚ΠΎΠ², Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π½Π° сСрвСрС Π΄Π²ΡƒΡ…ΡŠΡΠ΄Π΅Ρ€Π½Ρ‹ΠΉ процСссор, ΠΈ Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° стоит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 512, Ρ‚ΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ сСрвСрС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ 4 таска с этим ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ. CPU units всСгда ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ количСству ядСр, ΠΈΡ… Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ мСньшС ΠΊΠ°ΠΊ Π² случаС с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

Command β€” ΠΊΠΎΠΌΠ°Π½Π΄Π° для запуска сСрвиса Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ gunicorn, npm ΠΈ Ρ‚Π΄. Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использовано Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ CMD ΠΈΠ· Dockerfile. Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ npm,start.

Environment variables β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ просто тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ сСкрСтныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ· Secrets Manager ΠΈΠ»ΠΈ Parameter Store.

Storage and Logging β€” здСсь настроим Π»ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² CloudWatch Logs (сСрвис для Π»ΠΎΠ³ΠΎΠ² ΠΎΡ‚ AWS). Для этого достаточно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Auto-configure CloudWatch Logs. ПослС создания Task Definition автоматичСски создастся Π³Ρ€ΡƒΠΏΠΏΠ° Π»ΠΎΠ³ΠΎΠ² Π² CloudWatch. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π»ΠΎΠ³ΠΈ Π² Π½Π΅ΠΉ хранятся бСсконСчно, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Retention period с Never Expire Π½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ срок. Π­Ρ‚ΠΎ дСлаСтся Π² CloudWatch Log groups, Π½Π°Π΄ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

ECS Cluster ΠΈ ECS Capacity Provider

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Ρ€Π°Π·Π΄Π΅Π» ECS β†’ Clusters, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ кластСр. Π’ качСствС шаблона Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ EC2 Linux + Networking.

Cluster name β€” ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Π΄Π΅Π»Π°Π΅ΠΌ здСсь Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ имя, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Launch Template Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ ECS_CLUSTER, Π² нашСм случаС β€” DemoApiClusterProd. ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅ΠΌ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ Create an empty cluster. ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Container Insights, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎ сСрвисам Π² CloudWatch. Если Π²Ρ‹ всё сдСлали ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ECS Instances Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ созданы Π² Auto Scaling group.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Capacity Providers ΠΈ создаём Π½ΠΎΠ²Ρ‹ΠΉ. Напомню, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ созданиСм ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ машин Π² зависимости ΠΎΡ‚ количСства Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ECS тасков. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ привязан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅.

Auto Scaling group β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Ρ€Π°Π½Π΅Π΅ Π³Ρ€ΡƒΠΏΠΏΡƒ.

Managed scaling β€” Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ ΠΌΠΎΠ³ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвис.

Target capacity % β€” ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ машин тасками Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½. Если ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ 100%, Ρ‚ΠΎ всС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ всСгда Π±ΡƒΠ΄Π΅Ρ‚ заняты Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ тасками. Если ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ 50%, Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° машин всСгда Π±ΡƒΠ΄ΡƒΡ‚ свободными. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, Ссли случится Ρ€Π΅Π·ΠΊΠΈΠΉ скачок Π² Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, Π½ΠΎΠ²Ρ‹Π΅ такси сразу ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π½Π° свободныС ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π±Π΅Π· нСобходимости ΠΆΠ΄Π°Ρ‚ΡŒ развёртывания инстансов.

Managed termination protection β€” Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ, этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρƒ ΡƒΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ инстансов ΠΎΡ‚ удалСния. Π­Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π½Π° машинС Π½Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… тасков ΠΈ позволяСт Target capacity %.

ECS Service ΠΈ настройка ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

ПослСдний шаг:) Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСрвис, Π½Π°Π΄ΠΎ Π·Π°ΠΉΡ‚ΠΈ Π² созданный Ρ€Π°Π½Π΅Π΅ кластСр Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Services.

Launch type β€” Π½Π°Π΄ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° Switch to capacity provider strategy ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ созданныС Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

Task Definition β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ созданный Ρ€Π°Π½Π½Π΅Π΅ Task Definition ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π²ΠΈΠ·ΠΈΡŽ.

Service name β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ, ΠΌΡ‹ всСгда ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ Task Definition.

Service type β€” всСгда Replica.

Number of tasks β€” ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ количСство Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… тасков Π² сСрвисС. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ управляСтся ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π½ΠΎ всё Ρ€Π°Π²Π½ΠΎ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ.

Minimum healthy percent ΠΈ Maximum percent β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ тасков ΠΏΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅. ЗначСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 100 ΠΈ 200, говорят ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ дСплоя количСство тасков увСличится Π² Ρ€Π°Π·Π°, Π° ΠΏΠΎΡ‚ΠΎΠΌ вСрнётся ΠΊ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΌΡƒ. Если Ρƒ вас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ 1 таск, min=0, Π° max=100, Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ±ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΈ послС этого ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ простой. Если Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ 1 таск, min=50, max=150, Ρ‚ΠΎ Π΄Π΅ΠΏΠ»ΠΎΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ случится, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ 1 таск нСльзя Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π° Ρ€Π°Π·Π°.

Deployment type β€” оставляСм Rolling update.

Placement Templates β€” ΠΏΡ€Π°Π²ΠΈΠ»Π° размСщСния тасков Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ стоит AZ Balanced Spread β€” это Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΊΡ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ таск Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ инстанс Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ поднимутся ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π²ΠΎ всСх Π·ΠΎΠ½Π°Ρ… доступности. ΠœΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ BinPack β€” CPU ΠΈ Spread β€” AZ, ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ таски ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ максимально ΠΏΠ»ΠΎΡ‚Π½ΠΎ ΠΏΠΎ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΏΠΎ CPU. ΠŸΡ€ΠΈ нСобходимости создания Π½ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΎΠ½Π° создаётся Π² Π½ΠΎΠ²ΠΎΠΉ Π·ΠΎΠ½Π΅ доступности.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

Load balancer type β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Application Load Balancer.

Service IAM role β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ecsServiceRole.

Load balancer name β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ созданный Ρ€Π°Π½Π΅Π΅ балансировщик.

Health check grace period β€” ΠΏΠ°ΡƒΠ·Π° ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ работоспособности послС Π²Ρ‹ΠΊΠ°Ρ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ таска, ΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ставим 60 сСкунд.

Container to load balance β€” Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ Target group name Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Ρ€Π°Π½Π΅Π΅ Π³Ρ€ΡƒΠΏΠΏΡƒ, ΠΈ всё автоматичСски заполнится.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

Service Auto Scaling β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ сСрвиса. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Configure Service Auto Scaling to adjust your service’s desired count. Π—Π°Π΄Π°Ρ‘ΠΌ минимальноС ΠΈ максимально количСство тасков ΠΏΡ€ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

IAM role for Service Auto Scaling β€” Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ AWSServiceRoleForApplicationAutoScaling_ECSService.

Automatic task scaling policies β€” ΠΏΡ€Π°Π²ΠΈΠ»Π° для ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Π•ΡΡ‚ΡŒ 2 Ρ‚ΠΈΠΏΠ°:

  1. Target tracking β€” отслСТиваниС Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ (использованиС CPU/RAM ΠΈΠ»ΠΈ количСство запросов Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ таск). НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΡ€Π΅Π΄Π½ΡŽΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ процСссора Π±Ρ‹Π»Π° 85%, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° станСт Π²Ρ‹ΡˆΠ΅, Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ таски Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ ΠΏΡ€ΠΈΠ΄Ρ‘Ρ‚ ΠΊ Ρ†Π΅Π»Π΅Π²ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Если Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½ΠΈΠΆΠ΅, Ρ‚ΠΎ таски Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, Ссли Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΠΈΠ· (Disable scale-in).
  2. Step scaling β€” рСакция Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ событиС. Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π½Π° любоС событиС (CloudWatch Alarm), ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство тасков, Π»ΠΈΠ±ΠΎ ΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ количСство тасков.

Π£ сСрвиса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько ΠΏΡ€Π°Π²ΠΈΠ» ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π³Π»Π°Π²Π½ΠΎΠ΅ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Если Π²Ρ‹ слСдовали инструкции ΠΈ использовали Ρ‚ΠΎΡ‚ ΠΆΠ΅ Docker ΠΎΠ±Ρ€Π°Π·, ваш сСрвис Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ страницу.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ API Π½Π° спотовых инстансах AWS

  1. ΠœΡ‹ создали шаблон, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ всС ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π² сСрвисС. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ шаблона.
  2. ΠœΡ‹ настроили ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ сигнала остановки спотового инстанса, поэтому Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ послС Π΅Π³ΠΎ получСния всС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ таски ΡƒΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ с ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ тСряСтся ΠΈ Π½Π΅ прСрываСтся.
  3. ΠœΡ‹ подняли балансировщик, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΏΠΎ машинам.
  4. ΠœΡ‹ создали сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° спотовых инстансах, Π·Π° счёт этого ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ расходы Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 3 Ρ€Π°Π·Π°.
  5. ΠœΡ‹ настроили Π°Π²Ρ‚ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΎΠ±Π΅ стороны, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π½Π΅ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° простой.
  6. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Capacity Provider, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ управляло инфраструктурой (машинами), Π° Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.
  7. ΠœΡ‹ ΠΌΠΎΠ»ΠΎΠ΄Ρ†Ρ‹.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ прСдсказуСмыС всплСски Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ΡΡŒ Π² большой email-рассылкС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ.

Π•Ρ‰Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… частСй вашСй систСмы. НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» рассылки ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠΌΠΎ-ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ мобильного прилоТСния. Иногда кампания рассылаСтся Π½Π° 1М+ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. ПослС Ρ‚Π°ΠΊΠΎΠΉ рассылки всСгда Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ большой рост запросов ΠΊ API, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ заходят Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΏΡ€ΠΎΠΌΠΎ-ΠΏΡƒΡˆΠ΅ΠΉ ΠΈΡ… стало Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС стандартных ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΌΡ‹ сразу ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… машин ΠΈ тасков, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅.

Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄, Ссли Π² коммСнтариях расскаТСтС интСрСсныС кСйсы использования спотовых инстансов ΠΈ ECS ΠΈΠ»ΠΈ ΠΆΠ΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Π‘ΠΊΠΎΡ€ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ тысячи аналитичСских эвСнтов Π² сСкунду Π½Π° прСимущСствСнно serverless стэкС (с дСньгами) ΠΈ ΠΊΠ°ΠΊ устроСн Π΄Π΅ΠΏΠ»ΠΎΠΉ сСрвисов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GitLab CI ΠΈ Terraform Cloud.

ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° нас, Π±ΡƒΠ΄Π΅Ρ‚ интСрСсно!

Волько зарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² опросС. Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅, поТалуйста.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ spot instances Π½Π° ΠΏΡ€ΠΎΠ΄Π΅?

  • 22,2%Π”Π°6

  • 66,7%НСт18

  • 11,1%Π£Π·Π½Π°Π» ΠΎ Π½ΠΈΡ… ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ3

ΠŸΡ€ΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 27 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ΠΎΠ·Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈΡΡŒ 5 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com