Super Kawaii Cute Cat Kaoani
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Linux/Docker

[Docker] Attachable Overlay Network์„ ํ™œ์šฉํ•œ ๋„์ปค ์Šคํƒ ์‹คํ–‰

728x90

Attachable Overlay Network์„ ํ™œ์šฉํ•œ ๋„์ปค ์Šคํƒ ์‹คํ–‰


๐Ÿ“ Docker Stack์ด๋ž€?

๋„์ปค์˜ ์„œ๋น„์Šค ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ํ•จ๊ป˜ ์ •์˜ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋„๊ตฌ.

์ฃผ๋กœ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ •์˜ํ•˜๊ณ , ์ด๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.

yml ํŒŒ์ผ์— ์ •์˜๋œ ์„œ๋น„์Šค, ๋„คํŠธ์›Œํฌ, ๋ณผ๋ฅจ ๋“ฑ์„ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌํ•œ๋‹ค.

๐Ÿ“ ๋„คํŠธ์›Œํฌ ์ƒ์„ฑํ•˜๊ธฐ

์„œ๋น„์Šค๋“ค ๊ฐ„์˜ ํ†ต์‹ ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ myweb ๋„คํŠธ์›Œํฌ ์ƒ์„ฑ

docker network create --driver overlay --attachable myweb

 

overlay ๋“œ๋ผ์ด๋ฒ„๋Š” ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์— ๊ฑธ์ณ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

--attachable ์˜ต์…˜์€ ์ƒ์„ฑ๋œ ๋„คํŠธ์›Œํฌ์— ์ผ๋ฐ˜์ ์ธ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ๋Š” ์Šค์›œ ์„œ๋น„์Šค์—์„œ ์‹คํ–‰๋œ ์ปจํ…Œ์ด๋„ˆ๋งŒ ์ž๋™ ์—ฐ๊ฒฐ์‹œํ‚ค์ง€๋งŒ, ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šค์›œ ์„œ๋น„์Šค์— ์†ํ•˜์ง€ ์•Š์€ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋„ ํ•ด๋‹น ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ“ docker-swarm.yml ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ธฐ

version: '3.8'

services:
  nginx:
    image: nginx
    deploy:
      replicas: 4  # 4๊ฐœ์˜ ๋ณต์ œ๋ณธ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ถ„์‚ฐ ๋ฐฐ์น˜
      placement:
        constraints: [node.role != manager]  # worker ๋…ธ๋“œ์— ๋ฐฐํฌ
      restart_policy:
        condition: on-failure 
        max_attempts: 3  # ์‹คํŒจ ์‹œ ์ตœ๋Œ€ 3๋ฒˆ ์žฌ์‹œ๋„
    environment:
      SERVICE_PORTS: 80
    networks:
      - myweb

  proxy:
    image: dockercloud/haproxy
    depends_on:
      - nginx  # nginx๊ฐ€ ์‹คํ–‰ ์ค‘์ด์–ด์•ผ ํ•จ
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  # Docker ์†Œ์ผ“์„ ํ˜ธ์ŠคํŠธ์™€ ๊ณต์œ ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹ ์— ์‚ฌ์šฉ
    ports:
      - "80:80"
    networks:
      - myweb 
    deploy:
      mode: global 
      placement:
        constraints: [node.role == manager]  # manager ๋…ธ๋“œ์—๋งŒ

  visual:
    image: dockersamples/visualizer
    ports:
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    deploy:
      mode: global
      placement:
        constraints: [node.role == manager]  # manager ๋…ธ๋“œ์—๋งŒ

networks:
  myweb:
    external: true

๐Ÿ“ ๋„์ปค ์Šคํƒ ์‹คํ–‰

docker stack deploy -c=docker-swarm.yml myweb

๐Ÿ“ ํ™•์ธํ•˜๊ธฐ

docker stack ps myweb

๐Ÿ“ 211.183.3.100:80 ์ ‘์†

๐Ÿ“ 211.183.3.100:8080 ์ ‘์†

728x90