• toc {:toc}

Swarm

image[Fig1]

  • Docker Swarm : Orchestrator

  • 100~1000๊ฐœ ์ •๋„์˜ ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฉด ์ถฉ๋ถ„ํžˆ Swarm์œผ๋กœ ๋™์ž‘ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ์ค‘์•™์ง‘์ค‘ํ˜• ์ œ์–ด์žฅ์น˜์ด๋‹ค.

  • Container Orchestration : ๋ฐฐํฌ, ๊ด€๋ฆฌ, ์ž์› ํ• ๋‹น, ๋„คํŠธ์›Œํ‚น, ์ด์šฉ๊ฐ€๋Šฅ์„ฑ์„ ์ค‘์•™ ํ†ต์ œ๋ฅผ ํ†ตํ•ด ์ž๋™ํ™”ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

  • ์ฃผ ๋ชฉ์  : ๊ด€๋ฆฌ, ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ•˜๊ณ , ์ž๋™ํ™”๋ฅผ ํ†ตํ•ด์„œ ๋Šฅ๋ฅ ์ด ์ฆ๊ฐ€ํ•˜๋„๋ก ํ•œ๋‹ค.

    • ๊ณผ๊ฑฐ์—๋Š” ์ˆ˜๋™์œผ๋กœ ์ „๋ถ€ ๋ฐฐํฌํ–ˆ์–ด์•ผ ํ–ˆ๊ธฐ์— APP ๋ฐฐํฌ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์› ์œผ๋‚˜ ์ด๋ฅผ ์ž๋™ํ™”๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.
  • Container orchestration โ†’ ์ž‘์—…๋Ÿ‰์„ ๊ฐ„์†Œํ™”ํ•œ๋‹ค.

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

image[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๋ฅผ ๋งค๋‹ˆ์ €์™€ ๋ถ„๋ฆฌ๋œ๋‹ค.
  • Task : Swarm ๋งค๋‹ˆ์ €์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๊ณ  Swarm ์„œ๋น„์Šค์˜ ๋ถ€๋ถ„์œผ๋กœ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.

  • Node : Swarm์— ์ฐธ์—ฌํ•œ ๋„์ปค ์—”์ง„์˜ ์ธ์Šคํ„ด์Šค์ด๋‹ค.

    • Manager Nodes : worker node์— task๋ฅผ ๋ณด๋‚ด์ค€๋‹ค.
    • Worker Nodes : task๋ฅผ ๋งค๋‹ˆ์ €๋กœ๋ถ€ํ„ฐ ๋ฐ›๊ณ  ์‹คํ–‰ํ•œ๋‹ค.

image[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์˜ ์—ญ์ˆœ
  • ๊ทธ๋ฃน๋“ค๋กœ ๋‚˜๋ˆ„์–ด ๋ช…๋ น์–ด๋ฅผ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•œ๋‹ค.

์ฐธ๊ณ ๋ฌธํ—Œ

์—ฐ๊ฒฐ๋ฌธ์„œ