0부터 시작하는 Docker Swarm 공부 - Docker Stack 응용

Jaehong Lee·2022년 8월 25일
0
post-thumbnail

1. 요구 사항

  1. HAproxy -> manager 에 배치

  2. label 부착

    worker1 -> zone=seoul
    worker2 -> zone=seoul
    worker3 -> zone=busan

  3. 새로운 Network 생성

    overlay Network

    • name : myovlnet
    • subnet : 10.10.123.0/24
  4. HAproxy 는 자신의 80 번 Port 를 Host 의 8001 번 Port 와 연결하고, 해당 연결은 myovlnet 을 통해 zone=seoul 에 배포된 wordpress 로 연결

  5. manager 에는 portainer 연결. 이는 worker3 에만 동작하고, Cluster 환경 외부에 배치된다. 해당 portainer 는 docker0 와 연결되며, myovlnet 과 연결된다

2. label 설정

  • label 을 각각 설정해주자

3. Network 생성

  • overlay Network 를 생성해주자. Cluster 환경 외부의 컨테이너도 연결될 수 있게 attachable 옵션을 주자

4. Docker Stack 작성 및 배포

version: '3.7'

services:
  wp:
    image: wordpress
    deploy:
      replicas: 2
      placement:
        constraints: [node.labels.zone == seoul ]
      restart_policy:
        condition: on-failure
        max_attempts: 2
    environment:
      SERVICE_PORTS: 80
    networks:
      - myovlnet

  proxy:
    image: dockercloud/haproxy
    depends_on:
      - wp
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports: # attach on ingress network 1
      - "8001:80"
    networks: # attach on wordexpress network 2 - wordpress connect
      - myovlnet
    deploy:
      mode: global
      placement:
        constraints: [node.role == manager]

networks:
  myovlnet:
    external: true
  • 위와 같이 작성하자
docker stack deploy -c evl.yml evl

  • evl.yml 을 이용해 Service 를 배포하자

5. portainer 배포

docker container run -d --restart always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --network myovlnet --name portainer portainer/portainer

  • manager 에서 portainer 를 배포해주자

portainer 컨테이너는 클러스터 환경 외부에 있어야하므로 worker3 Node 에서 docker run 으로 직접 배포해줘야 한다

6. 확인하기

  • manager Node 의 8001 번 Port 로 접근하면 wordpress 에 접속된다
  • Portainer 에 접속해서 Stack 을 확인하자
profile
멋진 엔지니어가 될 때까지

0개의 댓글