Coding Planet
[Docker Swarm - 5] ์๋น์ค ์์ฑํ๊ณ ์ค์ผ์ผ๋งํ๊ธฐ ๋ณธ๋ฌธ
[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