Upgrade to PRO for Only $50/Yearโ€”Limited-Time Offer! ๐Ÿ”ฅ

[AWS-ECS] Cluster & Service AutoScaling

Avatar for loup loup
July 26, 2018

[AWS-ECS] Cluster & Serviceย AutoScaling

Avatar for loup

loup

July 26, 2018
Tweet

Other Decks in Programming

Transcript

  1. ECS ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚œ ๊ณ ์„ฑ๋Šฅ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์„œ๋น„์Šค๋กœ์„œ, Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์›ํ•˜๋ฉฐ

    AWS์—์„œ ์ปจํ…Œ์ด๋„ˆ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•˜๊ณ  ํ™•์žฅ ๋ฐ ์ถ•์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. a
  2. ์ด๋Ÿฐ๊ฒŒ ์‰ฝ์ง€ ์•Š๋‹ค๋”๋ผ - 2 ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์˜คํ† ์Šค์ผ€์ผ๋ง ๋ ๋•Œ, ์„œ๋น„์Šค์˜

    ์ž‘์—…์„ ์ ์ ˆํ•˜๊ฒŒ ๋ฐฐ์น˜ instance instance instance instance Auto Scaling group instance instance instance instance Auto Scaling group
  3. ์ด๋Ÿฐ๊ฒŒ ์‰ฝ์ง€ ์•Š๋‹ค๋”๋ผ - 3 ์„œ๋น„์Šค๊ฐ€ ์˜คํ† ์Šค์ผ€์ผ๋ง ๋ ๋•Œ ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค์—

    ๋ถ„๋ฐฐ๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ instance instance instance Auto Scaling group instance instance instance instance Auto Scaling group Task
  4. ECS ํด๋Ÿฌ์Šคํ„ฐ & ์„œ๋น„์Šค ์˜คํ† ์Šค์ผ€์ผ๋ง 1. ์˜คํ† ์Šค์ผ€์ผ๋ง ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ 2.

    ์˜คํ† ์Šค์ผ€์ผ๋ง ์ ์šฉํ•˜๊ธฐ 3. ์˜คํ† ์Šค์ผ€์ผ๋ง ๋‚ ๊ฐœ ๋‹ฌ๊ธฐ
  5. ์˜คํ† ์Šค์ผ€์ผ๋ง ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ - 1 ์˜คํ† ์Šค์ผ€์ผ๋ง์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค์™€ ์•„๋‹Œ ์„œ๋น„์Šค์˜

    ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ Availability Zone #1 ECS Instance ECS Instance ECS Cluster AZ #1 ECS Instance ECS Cluster AZ #1 ECS Instance ECS Cluster
  6. ์˜คํ† ์Šค์ผ€์ผ๋ง ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ - 3 ์„œ๋น„์Šค ์ž‘์—…์˜ ํฌ๊ธฐ ์ •ํ•˜๊ธฐ โ€ข

    ์—ฌ์œ  ๋ฉ”๋ชจ๋ฆฌ 400MB ์ด์ƒ ์žก์•„๋‘๊ธฐ โ€ข ์ตœ์†Œ 2๊ฐœ ์ด์ƒ ์ถ”์ฒœ โ€ข ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ ์‹œ์ž‘์ ์œผ๋กœ 300~500MB ๊ถŒ์žฅ ECS Instance (t2.small) 1vCPU 2GiB Task per 206CPU 412Mib Task per 412CPU 824Mib ์—ฌ์œ  ๋ฉ”๋ชจ๋ฆฌ 400mb ์ œ์™ธ
  7. ์˜คํ† ์Šค์ผ€์ผ๋ง ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ โ€“ 4 ์˜คํ† ์Šค์ผ€์ผ๋ง ๋ฃฐ ์ •ํ•˜๊ธฐ โ€ข ์ตœ์†Œ

    ๋ฐฑ๋ถ„์œจ 100% ์œ ์ง€ํ•˜๊ธฐ 100% ์•„๋ž˜๋กœ ์žก์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์„œ๋น„์Šค์˜ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํฌ์ธํŠธ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ โ€ข ์Šค์ผ€์ผ ์•„์›ƒ์€ ๋А์Šจํ•˜๊ฒŒ, ์Šค์ผ€์ผ ์ธ์€ ์—„ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ค„์–ด๋“œ๋Š” ๊ฑด ์žฅ์•  ์š”์ธ์ด ๋  ์ˆ˜ ์žˆ์Œ
  8. ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค ์˜คํ† ์Šค์ผ€์ผ๋ง 1. ์„œ๋น„์Šค์˜ ์ž‘์—…์ด ์–ธ์ œ๋ผ๋„ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ

    ๋ฆฌ์†Œ์Šค ํ™•๋ณด 2. CPU, MEM ์‚ฌ์šฉ๋ฅ ์— ๋”ฐ๋ผ ์Šค์ผ€์ผ๋ง โ€ข MemoryReservation โ€ข MemoryUtilization โ€ข CPU Utilization
  9. ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค ์˜คํ† ์Šค์ผ€์ผ๋ง โ€“ ๋ฆฌ์†Œ์Šค ํ™•๋ณด ์˜ˆ์•ฝ๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 70% ์ด์ƒ

    4๋ถ„ ์ง€์† => ์Šค์ผ€์ผ ์•„์›ƒ ์ง€ํ‘œ: MemoryReservation ์กฐ๊ฑด: >= 70 ๊ธฐ๊ฐ„ 4 / 4 ์ž‘์—…: ์ธ์Šคํ„ด์Šค 1 ์ถ”๊ฐ€ ECS Instance (t2.medium) 2vCPU 4GiB AZ-1 Task per 860Mib (860 * 3) / 4096 * 100 = 63% ECS Instance (t2.medium) 2vCPU 4GiB AZ-1 ECS Instance Task per 860Mib (860 * 4) / 4096 * 100 = 84% ECS Instance
  10. ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค ์˜คํ† ์Šค์ผ€์ผ๋ง โ€“ ๋ฆฌ์†Œ์Šค ํ™•๋ณด ์˜ˆ์•ฝ๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 40% ์ดํ•˜

    20๋ถ„ ์ง€์† => ์Šค์ผ€์ผ ์ธ ์ง€ํ‘œ: MemoryReservation ์กฐ๊ฑด: <= 40 ๊ธฐ๊ฐ„ 20 / 20 ์ž‘์—…: ์ธ์Šคํ„ด์Šค 1 ์‚ญ์ œ ECS Instance (t2.medium) 2vCPU 4GiB AZ-1 ECS Instance Task per 860Mib (860 * 4) / 8192 * 100 = 42% ECS Instance ECS Instance (t2.medium) 2vCPU 4GiB AZ-1 ECS Instance Task per 860Mib (860 * 3) / 8192 * 100 = 31% ECS Instance
  11. ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค ์˜คํ† ์Šค์ผ€์ผ๋ง โ€“ CPU or MEM โ€ข ํด๋Ÿฌ์Šคํ„ฐ CPU

    Utilization = ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ์ž‘์—…์ด ์‚ฌ์šฉ์ค‘์ธ ์œ ๋‹› ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค ์ „์ฒด์˜ ์œ ๋‹› ํ•ฉ โˆ— 100 โ€ข Ex) t2.medium ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค 1๊ฐœ์— 300 CPU ์œ ๋‹›์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ž‘์—… 2๊ฐœ โ€ข 300 โˆ— 2 2048 โˆ— 1 โˆ— 100 = 29% โ€ข ํด๋Ÿฌ์Šคํ„ฐ Mem Utilization = ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ์ž‘์—…์ด ์‚ฌ์šฉ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค ์ „์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•ฉ โˆ— 100 โ€ข Ex) t2.medium ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค 1๊ฐœ์— 420MB ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ž‘์—… 2๊ฐœ โ€ข 420 โˆ—2 4096 โˆ—1 โˆ— 100 = 20%
  12. ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค ์˜คํ† ์Šค์ผ€์ผ๋ง โ€“ CPU or MEM โ€ข ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค

    CPU ์‚ฌ์šฉ๋ฅ  ํ‰๊ท  60% ์ด์ƒ 1๋ถ„ ์ง€์† => ์Šค์ผ€์ผ ์•„์›ƒ ์ง€ํ‘œ: CPUUtilization ์กฐ๊ฑด: >= 60 ๊ธฐ๊ฐ„ 1 / 1 ์ž‘์—…: ์ธ์Šคํ„ด์Šค 1 ์ถ”๊ฐ€ โ€ข ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ  ํ‰๊ท  60% ์ด์ƒ 1๋ถ„ ์ง€์† => ์Šค์ผ€์ผ ์•„์›ƒ ์ง€ํ‘œ: MemoryUtilization ์กฐ๊ฑด: >= 60 ๊ธฐ๊ฐ„ 1 / 1 ์ž‘์—…: ์ธ์Šคํ„ด์Šค 1 ์ถ”๊ฐ€
  13. ์„œ๋น„์Šค ์˜คํ† ์Šค์ผ€์ผ๋ง โ€“ CPU or MEM โ€ข ์„œ๋น„์Šค CPU Utilization

    = ๋ชจ๋“  ์ž‘์—…์ด ์‚ฌ์šฉ์ค‘์ธ ์œ ๋‹› ์‚ฌ์šฉ๋Ÿ‰ ์ž‘์—… 1๊ฐœ๋‹น ์œ ๋‹› ์ œํ•œ โˆ— ์ „์ฒด ์ž‘์—… ์ˆ˜ โˆ— 100 โ€ข Ex) 400 CPU ์œ ๋‹› ์ œํ•œ ์ž‘์—… 2๊ฐœ๊ฐ€ ๊ฐ 150 CPU ์œ ๋‹› ์‚ฌ์šฉ โ€ข 150 โˆ— 2 400 โˆ— 2 โˆ— 100 = 37.5% โ€ข ์„œ๋น„์Šค Mem Utilization = ๋ชจ๋“  ์ž‘์—…์ด ์‚ฌ์šฉ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ž‘์—… 1๊ฐœ๋‹น ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ โˆ— ์ „์ฒด ์ž‘์—… ์ˆ˜ โˆ— 100 โ€ข Ex) 420MB ์ œํ•œ ์ž‘์—… 2๊ฐœ๊ฐ€ ๊ฐ 250MB ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ โ€ข 250 โˆ— 2 420 โˆ— 2 โˆ— 100 = 59.5%
  14. ์„œ๋น„์Šค ์˜คํ† ์Šค์ผ€์ผ๋ง โ€“ CPU or MEM โ€ข ์„œ๋น„์Šค CPU ์‚ฌ์šฉ๋ฅ 

    ํ‰๊ท  60% ์ด์ƒ 1๋ถ„ ์ง€์† => ์Šค์ผ€์ผ ์•„์›ƒ ์ง€ํ‘œ: CPUUtilization ์กฐ๊ฑด: >= 60 ๊ธฐ๊ฐ„ 1 / 1 ์ž‘์—…: ์ž‘์—… 1 ์ถ”๊ฐ€ โ€ข ์„œ๋น„์Šค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ  ํ‰๊ท  60% ์ด์ƒ 1๋ถ„ ์ง€์† => ์Šค์ผ€์ผ ์•„์›ƒ ์ง€ํ‘œ: MemoryUtilization ์กฐ๊ฑด: >= 60 ๊ธฐ๊ฐ„ 1 / 1 ์ž‘์—…: ์ž‘์—… 1 ์ถ”๊ฐ€ โ€ข ์„œ๋น„์Šค CPU ์‚ฌ์šฉ๋ฅ  ํ‰๊ท  30 ๋ฏธ๋งŒ 10๋ถ„ ์ง€์† => ์Šค์ผ€์ผ ์ธ ์ง€ํ‘œ: CPUUtilization ์กฐ๊ฑด: < 30 ๊ธฐ๊ฐ„ 10 / 10 ์ž‘์—…: ์ž‘์—… 1 ์‚ญ์ œ
  15. ์˜คํ† ์Šค์ผ€์ผ๋ง ๋‚ ๊ฐœ ๋‹ฌ๊ธฐ โ€ข ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์Šค์ผ€์ผ ์•„์›ƒ ๋  ๋•Œ,

    ์ž‘์—… ์žฌ๋ฐฐ์น˜ ํ•ด์ฃผ๊ธฐ (Rebalancing) โ€ข ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ์Šค์ผ€์ผ ์ธ ๋  ๋•Œ, ๋“œ๋ ˆ์ด๋‹ ํ•ด์ฃผ๊ธฐ (Draining) instance instance instance instance Auto Scaling group instance instance instance instance Auto Scaling group
  16. ์˜คํ† ์Šค์ผ€์ผ๋ง ๋‚ ๊ฐœ ๋‹ฌ๊ธฐ - Rebalancing Auto Scaling group instances ์ธ์Šคํ„ด์Šค

    1 ์ถ”๊ฐ€ Amazon SNS AWS Lambda STEP 1 STEP 3 ์ธ์Šคํ„ด์Šค๊ฐ€ ECS์— ๋ถ™์—ˆ๋‚˜? ์•„๋‹ˆ์˜ค Amazon ECS ์˜ˆ STEP 5 ์ƒˆ๋ฐฐํฌ ์‹คํ–‰ STEP 4 Delay 10 STEP 2 ASG ๊ทธ๋ฃน ์•Œ๋ฆผ(Notification) Hook
  17. ์˜คํ† ์Šค์ผ€์ผ๋ง ๋‚ ๊ฐœ ๋‹ฌ๊ธฐ - Draining โ€ข ์˜คํ† ์Šค์ผ€์ผ๋ง ๊ทธ๋ฃน์˜ ์ˆ˜๋ช…์ฃผ๊ธฐ(Lifecycle) ์‚ฌ์šฉ

    (์ˆ˜๋ช…์ฃผ๊ธฐ => SNS => Lambda) โ€ข ECS ์„œ๋น„์Šค์˜ ๋“œ๋ ˆ์ด๋‹ ๊ธฐ๋Šฅ ์ด์šฉ
  18. ์˜คํ† ์Šค์ผ€์ผ๋ง ๋‚ ๊ฐœ ๋‹ฌ๊ธฐ - Draining Auto Scaling group instances ์ธ์Šคํ„ด์Šค

    1 ์‚ญ์ œ Amazon SNS AWS Lambda STEP 3 Amazon ECS ๋“œ๋ ˆ์ด๋‹ ์ž‘์—… ๊ฐœ์ˆ˜ = 0 ์•„๋‹ˆ์˜ค ์˜ˆ STEP 5 ECS API Call STEP 4 Delay 10 ์ˆ˜๋ช…์ฃผ๊ธฐ TTL ๋งŒ๋ฃŒ STEP 1 STEP 2 ASG ๊ทธ๋ฃน ์ˆ˜๋ช…์ฃผ๊ธฐ(Lifecycle) ์ข…๋ฃŒ Hook ์ธ์Šคํ„ด์Šค๊ฐ€ ๋“œ๋ ˆ์ด๋‹ ์ƒํƒœ ? ์•„๋‹ˆ์˜ค ์˜ˆ STEP 6 ์ˆ˜๋ช…์ฃผ๊ธฐ Hook ์ข…๋ฃŒ
  19. T2 ๊ณ„์—ด ์ธ์Šคํ„ด์Šค ์‚ฌ์šฉ์‹œ TIP โ€ข ํด๋Ÿฌ์Šคํ„ฐ ์ธ์Šคํ„ด์Šค ์˜คํ† ์Šค์ผ€์ผ๋ง ๋ฃฐ์—

    ํฌ๋ ˆ๋”ง ์กฐ๊ฑด ์ถ”๊ฐ€ํ•˜๊ธฐ ํฌ๋ ˆ๋”ง ์—†์œผ๋ฉด ์ฃฝ์€ ์„œ๋ฒ„๋ผ๊ณ  ์ƒ๊ฐํ•ด์•ผโ€ฆ โ€ข ํ•œ๋Œ€ ์ •๋„๋Š” ๋ฌดํ•œ ํฌ๋ ˆ๋”ง ์˜ต์…˜์„ ์ผœ๊ณ  ALB์— ๋ถ™์—ฌ๋†“๊ธฐ ASG๊ฐ€ ๋ฌดํ•œ ํฌ๋ ˆ๋”ง ์˜ต์…˜์„ ์ง€์› ์•ˆํ•จ โ€ข ASG์˜ ์ข…๋ฃŒ ์ •์ฑ…์„ โ€œNewestInstanceโ€ ์‚ฌ์šฉํ•˜๊ธฐ ํฌ๋ ˆ๋”ง์ด ์ถ•์ฒ™๋œ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‚ ๋ผ๊ฐ€๋ฉด ์•„๊น์ž–์•„์š”
  20. ์˜คํ† ์Šค์ผ€์ผ๋ง After Application Load Balancer ECS instance Auto Scaling group

    instances Amazon SNS AWS Lambda โ€ข Rebalancing โ€ข Draining CloudWatch
  21. ๋งˆ์น˜๋ฉฐ.. โ€ข ์˜ค๋Š˜ ๋ฐœํ‘œ๋“œ๋ฆฐ ๋‚ด์šฉ์€ ๋ฐฉ๋ฒ•์ค‘ ํ•˜๋‚˜์ผ ๋ฟ์ด๊ณ  ์ •๋‹ต์€ ์•„๋‹ˆ์—์š”.

    โ€ข ์•ž์— ๋ง์”€๋“œ๋ฆฐ ๋ฆฌ๋ฐœ๋ž€์‹ฑ์€ ๊นƒํ—ˆ๋ธŒ ECS-Agent ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ด์Šˆ์— ์•„์ง๋„ ์—ด๋ ค ์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. (์•Œ๋ฆผ ๋ฐ›์•„๋†“์œผ์‹œ๋ฉด ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์–ป์„ ์ˆ˜๋„...) โ€ข ์ง€๊ธˆ๋„ ์—ฌ์ „ํžˆ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋ฉฐ ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. (์–ด์ฉŒ๋ฉด ์ €๋Š” ๊ทธ๊ฒŒ Fargate ์„œ์šธ ์ถœ์‹œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ ์š”..)