- toc {:toc}
Swarm
[Fig1]
-
Docker Swarm : Orchestrator
-
100~1000๊ฐ ์ ๋์ ์ปจํ ์ด๋๋ผ๋ฉด ์ถฉ๋ถํ Swarm์ผ๋ก ๋์ ๊ฐ๋ฅํ๋ค.
-
์ค์์ง์คํ ์ ์ด์ฅ์น์ด๋ค.
-
Container Orchestration : ๋ฐฐํฌ, ๊ด๋ฆฌ, ์์ ํ ๋น, ๋คํธ์ํน, ์ด์ฉ๊ฐ๋ฅ์ฑ์ ์ค์ ํต์ ๋ฅผ ํตํด ์๋ํํ๋ ๊ณผ์ ์ด๋ค.
-
์ฃผ ๋ชฉ์ : ๊ด๋ฆฌ, ๋ชจ๋ํฐ๋ง์ ํ๊ณ , ์๋ํ๋ฅผ ํตํด์ ๋ฅ๋ฅ ์ด ์ฆ๊ฐํ๋๋ก ํ๋ค.
- ๊ณผ๊ฑฐ์๋ ์๋์ผ๋ก ์ ๋ถ ๋ฐฐํฌํ์ด์ผ ํ๊ธฐ์ APP ๋ฐฐํฌ๊ฐ ๋งค์ฐ ์ด๋ ค์ ์ผ๋ ์ด๋ฅผ ์๋ํ๋ฅผ ํตํด ์ฝ๊ฒ ๋ง๋ค์๋ค.
-
Container orchestration โ ์์ ๋์ ๊ฐ์ํํ๋ค.
- ์ฌ์ฉ์๋ ๋ ์ด์ ๊ธฐ์ ์ ๋ฌธ์ ๋ฅผ ๋ค๋ฃฐ ํ์๊ฐ ์๋ค.
- ๋ ๋ง์ ์ปจํ ์ด๋๋ค์ ๊ทธ๋ฃน๋ค๊ณผ ๋์์ ์ํธ์์ฉํ ์ ์๋ค.
- ์ปจํ ์ด๋ ๋ฑ๋ก์ ๊ณํํ๊ณ ๊ตฌํํ ์ ์๋ค.
- ๋คํธ์ํฌ, ์คํ ๋ฆฌ์ง, ๋ณด์ ๋ฑ์ ๋ชจ๋ ์ ๊ณต ๊ฐ๋ฅํ๋ค.
[Fig2]
-
Container Orchestration History
-
2009๋ Mesos ์ฐ๊ตฌ ํ๋ก์ ํธ๋ก ์์, ๋ฒํด๋ฆฌ ๋ํ์์ ์์.
-
2010 - Guest OS over Host OS ๋ฌธ์
-
2015๋ ์ ์ฟ ๋ฒ๋คํฐ์ค ๋ฒ์ 1.0 ์ถ์, Docker Swarm 1.0 ์ถ์ (2013์๋ ๊ฐ๋ฐ์์ํ์ง ์์์๊น?)
-
์ค๋๋์ง ์์ ๋ถ์ผ์ด๋ค.
-
Docker Swarm : Container Orchestration์ ์ํ ๋๊ตฌ์ด๋ค.
- ๋ค์์ ๋์ปค ์ปจํ ์ด๋๋ฅผ ํ๋์ ์๋น์ค๋ก ๋ค๋ฃจ๊ณ ์กฐ์ข ํ๋ค.
- Manager, Worker ์ง์ , Worker โ Manager์๊ฒ ๋ฑ๋ก, Manager๊ฐ Worker ์ฅ์
-
Docker๋ฅผ ์คํํ๋ ๋จธ์ ์ ๊ทธ๋ฃน์ ๋งํ๋ค.
-
๋ค์์ ๋์ปค ํธ์คํธ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
-
๋ ธ๋์ ์ญํ ๊ณผ ์ฐ๊ฒฐ
- Manager
- ๋ฉค๋ฒ์ฝ ๋ฑ์ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ ๋ง๋ค์ด Worker๋ค์ ๊ด๋ฆฌํ๋ค.
- Worker ๋ ธ๋์ ๊ฐ์ด ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๋ค.
- Workers (Nodes) : Swarm ์๋น์ค๋ฅผ ์คํํ๋ค.
- join ๋ช ๋ น์ด : ๋งค๋์ ์ ์ฐ๊ฒฐํ์ฌ ๋งค๋์ ์ ๋ฑ๋กํ๋ค.
- leave ๋ช ๋ น์ด : ๋ฑ๋ก๋ Worker๋ฅผ ๋งค๋์ ์ ๋ถ๋ฆฌ๋๋ค.
- Manager
-
Task : Swarm ๋งค๋์ ์ ์ํด ๊ด๋ฆฌ๋๊ณ Swarm ์๋น์ค์ ๋ถ๋ถ์ผ๋ก ์คํ ์ค์ธ ์ปจํ ์ด๋์ด๋ค.
-
Node : Swarm์ ์ฐธ์ฌํ ๋์ปค ์์ง์ ์ธ์คํด์ค์ด๋ค.
- Manager Nodes : worker node์ task๋ฅผ ๋ณด๋ด์ค๋ค.
- Worker Nodes : task๋ฅผ ๋งค๋์ ๋ก๋ถํฐ ๋ฐ๊ณ ์คํํ๋ค.
[Fig3]
docker-machine ssh {manager name} docker swarm init --advertise-addr {manager ip}-
advertise โ ๋ด๊ฐ Manager ๋ผ๋ ๊ฒ์ ์๋ฆฌ๊ณ Manager๊ฐ ๋๊ธฐ ์ํ ์ด๊ธฐํ๋ฅผ ํ๋ค.
-
Manager์ Worker๋ก ๋ค์ด๊ฐ๊ณ ์ถ์ ๊ฒฝ์ฐ join๊ณผ ํ ํฐ์ ํตํด ํด๋น Manager์ ์ผ๊พผ์ผ๋ก ๋ฑ๋กํ๋ค.
-
Manager์ Worker ๋ ธ๋ ์ฌ์ด์ ํฌํธ ๋ฒํธ 2377, 2376 ์ค ํ๋๊ฐ ์ด๋ ค ์์ด์ผ ํ๋ค. ์ด ํฌํธ๋ฅผ ํตํด์ docker swarm init, docker swarm join์ ์คํํ์ฌ ์ฐ๊ฒฐํ๊ธฐ ๋๋ฌธ์ด๋ค. (๋ฌผ๋ฆฌ์ ์ผ๋ก ๋จ์ด์ ธ ์๋ ์ปดํจํฐ๋ค์ ํด๋ฌ์คํฐ๋งํ ๋ ๋คํธ์ํฌ ์ ํ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ํฌํธ๋ฅผ ์ด์ด์ค์ผ ํ๋ค.)
-
Docker-Machine Task Deployment
-
scp โ ํ์ผ์ ์๋๋ฐฉ์๊ฒ ๋ณต์ฌํ ์ ์๋ค. ๋งค๋์ ์๊ฒ docker-compose.yml ํ์ผ ์ ์กํ๊ธฐ
-
stack deploy โ ์คํ
-
๊ธฐ๋ณธ์ ์ผ๋ก Worker์๊ฒ ๋๋ ๋๋ Round Robin, ๊ณตํํ๊ฒ ๋๋์ด ์ ๋ฌํ๋ค.
cf) Label
- key value์ ํํ๋ก ๊ฐ์ ์ค๋ค.
- ๋ฒ์ฃผํํ๊ธฐ ์ํ ์ผ์ข ์ ํ๊ทธ๋ฅผ ๋ถ์ด๋ ๊ฒ๊ณผ ๊ฐ๋ค.
- Docker Object Labels : Docker object์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฉํ๊ธฐ ์ํ ๋งค์ปค๋์ฆ
- Key๋ ํน์ํ๊ณ Value๋ ์ฌ๋ฌ ๊ฐ์ผ ์ ์๋ค.
- Url์ ๋ค์ง์ ํํ๋ก ๋ฒ์ฃผํํ์ฌ ๋๋ ์ ์๋ค. (.๊ณผ - ์ฌ์ฉ)
- ์์์ ๋๋ถ๋ถ ์๋ฌธ์๋ก ์์ํ๊ณ ๋๋๋ ๊ฒฝ์ฐ๋ ์๋ฌธ์๋ก ๋๋ธ๋ค.
- e.g., com.example.some-label
- ์ฐ์์ ์ธ .๊ณผ -์ ํ์ฉ๋์ง ์๋๋ค.
- namespace ํ๋๋ . ์ ์ํด ๋ถ๋ฆฌ๋๋ค.
- DNS notation์ ์ญ์
- ๊ทธ๋ฃน๋ค๋ก ๋๋์ด ๋ช ๋ น์ด๋ฅผ ์ค ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ค.
์ฐธ๊ณ ๋ฌธํ
- [Fig1] : https://subscription.packtpub.com/book/virtualization_and_cloud/9781786469755/1
- [Fig2] : https://scoutapm.com/blog/container-orchestration-in-2019
- [Fig3] : https://www.slideshare.net/Docker/docker-swarmmikegoelzermvmeetup45minworkshop-02242016-1-58805924