๊ด€๋ฆฌ ๋ฉ”๋‰ด

Coding Planet

[Docker Swarm - 5] ์„œ๋น„์Šค ์ƒ์„ฑํ•˜๊ณ  ์Šค์ผ€์ผ๋งํ•˜๊ธฐ ๋ณธ๋ฌธ

๐Ÿ›ณ๏ธ Docker

[Docker Swarm - 5] ์„œ๋น„์Šค ์ƒ์„ฑํ•˜๊ณ  ์Šค์ผ€์ผ๋งํ•˜๊ธฐ

jhj.sharon 2024. 3. 8. 15:42
๋ฐ˜์‘ํ˜•

 

| Docker Service ์ดํ•ดํ•˜๊ธฐ

Docker์˜ ๊ธฐ๋ณธ์ ์ธ ์ œ์–ด ๋‹จ์œ„๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค. docker run, docker rm๋“ฑ์˜ ๋Œ€์ƒ์€ ์ปจํ…Œ์ด๋„ˆ์ธ ๊ฒƒ์ด๋‹ค. ์ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ docker swarm์—์„œ์˜ ์ œ์–ด ๋‹จ์œ„๋Š” service์ด๋‹ค. 

 

์„œ๋น„์Šค๋Š” ๊ฐ™์€ ์ด๋ฏธ์ง€์—์„œ ์ƒ์„ ๋œ ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋น„์Šค๋ฅผ ์ œ์–ดํ•จ์œผ๋กœ์จ ์„œ๋น„์Šค์— ์†Œ์†๋œ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์„œ๋น„์Šค ๋‚ด์— ์ปจํ…Œ์ด๋„ˆ๋Š” 1๊ฐœ ์ด์ƒ ์กด์žฌํ•˜๋ฉฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ ๋…ธ๋“œ์— ํ• ๋‹น๋œ๋‹ค. ์ด ๋•Œ, ๋…ธ๋“œ์— ํ• ๋‹น๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํƒœ์Šคํฌ(Task)๋ผ๊ณ  ํ•œ๋‹ค.

 

ubuntu์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ 3๊ฐœ๋กœ ์„ค์ •ํ–ˆ์„ ๊ฒฝ์šฐ ์Šค์›œ ์Šค์ผ€์ฅด๋Ÿฌ๋Š” ์„œ๋น„์Šค์˜ ์ •์˜์— ๋”ฐ๋ผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ ์ ˆํ•œ ๋…ธ๋“œ์— ๋ฐฐ์น˜ํ•œ๋‹ค(๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ). ์ด ๋•Œ ์„œ๋น„์Šค ์ •์˜์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ณต์ œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ ˆํ”Œ๋ฆฌ์นด(replica)๋ผ๊ณ  ํ•œ๋‹ค.

 

์ฃผ์˜ํ•  ๊ฒƒ์€ ๊ผญ ๋…ธ๋“œ์— ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ๋งŒ ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. swarm์€ ์ปจํ…Œ์ด๋„ˆ๋“ค์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ์ปจํ…Œ์ด๋„ˆ ํ•˜๋‚˜๋ฅผ ๋ฐฐ์น˜ํ•œ ๋…ธ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ ํ˜„์žฌ ์ด ์ปจํ…Œ์ด๋„ˆ์˜ ์ˆ˜๊ฐ€ ๋ ˆํ”Œ๋ฆฌ์นด์— ๋ฏธ์น˜์น˜ ๋ชปํ•  ๊ฒฝ์šฐ swarm์€ ์ƒˆ๋กœ์šด ๋ ˆํ”Œ๋ฆฌ์นด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ๋ฐฐ์ •ํ•œ๋‹ค.

 

 

 

 

1. ์„œ๋น„์Šค ์ƒ์„ฑํ•˜๊ธฐ

$ docker service create --name nginx-service --replicas=3 --publish 80:80 nginx:latest
  • docker service create: Docker Swarm์—์„œ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น
  • --name nginx-service: ์ƒ์„ฑํ•  ์„œ๋น„์Šค์˜ ์ด๋ฆ„์„ nginx-service๋กœ ์ง€์ •. ์„œ๋น„์Šค ์ด๋ฆ„์€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ๊ณ ์œ ํ•ด์•ผ ํ•œ๋‹ค.
  • --replicas=3: ์ด ์„œ๋น„์Šค์˜ ์ธ์Šคํ„ด์Šค๋กœ ์‹คํ–‰๋  ์ปจํ…Œ์ด๋„ˆ์˜ ์ˆ˜๋ฅผ 3๊ฐœ๋กœ ์ง€์ •. ์ฆ‰, nginx-service๋ฅผ ์œ„ํ•ด ์ด 3๊ฐœ์˜ nginx ์ปจํ…Œ์ด๋„ˆ๊ฐ€ Swarm ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์— ๋ฐฐํฌ๋œ๋‹ค.
  • --publish 80:80: ์„œ๋น„์Šค์˜ 80๋ฒˆ ํฌํŠธ๋ฅผ ํ˜ธ์ŠคํŠธ์˜ 80๋ฒˆ ํฌํŠธ์— ๋ฐ”์ธ๋”ฉํ•˜์—ฌ, ์™ธ๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ ์ด ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ด ์„ค์ •์„ ํ†ตํ•ด ์™ธ๋ถ€ ์š”์ฒญ์„ nginx-service ์„œ๋น„์Šค์˜ ์ปจํ…Œ์ด๋„ˆ์— ์ž๋™์œผ๋กœ ๋ผ์šฐํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค. ํฌ๋งท์€ --publish [ํ˜ธ์ŠคํŠธ์˜ ํฌํŠธ]:[์ปจํ…Œ์ด๋„ˆ์˜ ํฌํŠธ]๋กœ, ์™ธ๋ถ€ ์š”์ฒญ์„ ์„œ๋น„์Šค์˜ ๋‚ด๋ถ€ ํฌํŠธ๋กœ ๋งคํ•‘.
  • nginx:latest: ์‚ฌ์šฉํ•  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ง€์ •. ์ด ๊ฒฝ์šฐ, Docker Hub์—์„œ ์ œ๊ณตํ•˜๋Š” nginx ์ด๋ฏธ์ง€์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉ.

 

 

2. ์ƒ์„ฑ๋œ ์„œ๋น„์Šค ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

docker service ls

 

 

3. ํŠน์ • ์„œ๋น„์Šค ์ •๋ณด ๋ณด๊ธฐ

//docker service ps [์„œ๋น„์Šค ์ด๋ฆ„ ๋˜๋Š” ID]
docker service ps nginx-service

 

  • ํƒœ์Šคํฌ ID: ์„œ๋น„์Šค์— ์†ํ•œ ๊ฐ ํƒœ์Šคํฌ(์ปจํ…Œ์ด๋„ˆ)์˜ ๊ณ ์œ  ์‹๋ณ„์ž
  • ์ด๋ฆ„: ํƒœ์Šคํฌ์˜ ์ด๋ฆ„์œผ๋กœ, ์„œ๋น„์Šค ์ด๋ฆ„๊ณผ ํƒœ์Šคํฌ ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จ (์˜ˆ: nginx-service.1).
  • ์ด๋ฏธ์ง€: ํƒœ์Šคํฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋„์ปค ์ด๋ฏธ์ง€
  • ๋…ธ๋“œ: ํƒœ์Šคํฌ๊ฐ€ ํ• ๋‹น๋œ ๋…ธ๋“œ์˜ ์ด๋ฆ„
  • ์›ํ•˜๋Š” ์ƒํƒœ(Desired State): ํƒœ์Šคํฌ๊ฐ€ ๋„๋‹ฌํ•˜๋ ค๋Š” ๋ชฉํ‘œ ์ƒํƒœ (์˜ˆ: Running).
  • ํ˜„์žฌ ์ƒํƒœ(Current State): ํƒœ์Šคํฌ์˜ ํ˜„์žฌ ์ƒํƒœ์™€ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋œ ์‹œ๊ฐ„ (์˜ˆ: Running 5 minutes ago).
  • ์˜ค๋ฅ˜(Error): ํƒœ์Šคํฌ ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ด๋ฅผ ํ‘œ์‹œ
  • ํฌํŠธ(Ports): ํƒœ์Šคํฌ์— ํ• ๋‹น๋œ ๋„คํŠธ์›Œํฌ ํฌํŠธ ์ •๋ณด(ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ).

 

์›น์„œ๋น„์Šค

 

 

 

| Docker Service ์Šค์ผ€์ผ๋ง(scaling)

Docker Service ์Šค์ผ€์ผ๋ง์€ Docker Swarm ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค์˜ ๋ ˆํ”Œ๋ฆฌ์นด(๋ณต์ œ๋ณธ) ์ˆ˜๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ์†Œํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋˜๋Š” ์ˆ˜๋™์œผ๋กœ ์„œ๋น„์Šค์˜ ๊ทœ๋ชจ๋ฅผ ํ™•์žฅ(์Šค์ผ€์ผ ์—…)ํ•˜๊ฑฐ๋‚˜ ์ถ•์†Œ(์Šค์ผ€์ผ ๋‹ค์šด)ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์Šค์ผ€์ผ๋ง์„ ํ†ตํ•ด, ์‚ฌ์šฉ์ž๋Š” ์„œ๋น„์Šค์˜ ๊ฐ€์šฉ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋™์ ์ธ ํŠธ๋ž˜ํ”ฝ ๋ณ€ํ™”์— ํšจ๊ณผ์ ์œผ๋กœ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์š”์ฒญ์ด ํญ์ฆํ•˜๋Š” ๊ฒฝ์šฐ, ๋” ๋งŽ์€ ๋ ˆํ”Œ๋ฆฌ์นด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์š”์ฒญ์„ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ํŠธ๋ž˜ํ”ฝ์ด ๊ฐ์†Œํ•˜๋ฉด, ๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ ˆํ”Œ๋ฆฌ์นด ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

Scale Up & Down

 ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Swarm ์Šค์ผ€์ฅด๋Ÿฌ๋Š” ์ž๋™์œผ๋กœ ์„œ๋น„์Šค์˜ ๋ ˆํ”Œ๋ฆฌ์นด ์ˆ˜๋ฅผ 5๊ฐœ๋กœ ์กฐ์ •ํ•˜๋ฉฐ ํ•„์š”์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํด๋Ÿฌ์ŠคํŠธ ๋‚ด์˜ ์ ์ ˆํ•œ ๋…ธ๋“œ์— ์ด๋ฅผ ๋ฐฐ์น˜ํ•œ๋‹ค.

๋ ˆํ”Œ๋ฆฌ์นด ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๊ฒƒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.

docker service scale nginx-service=5

 

 

 

๋ฐ˜์‘ํ˜•
Comments