Docker swarm에 대하여5 - 8.26

양승현·2022년 8월 26일
1

docker

목록 보기
9/12

load Balancer

  • HAprocy LB는 ALB와 같으며, 주소를 보고 트래픽을 전달해준다.
  • 뒤쪽 LB며 ALB는 앞에서 주소를 보고 분산해준것을 컨테이너들에게 라운드 로빈 방식으로 트래픽을 전달한다.
  • 분리 및 동시 개발이 가능하고, 개발 언어를 각 각 다르게 해도 된다.
  • 각 파트별로 API 혹은 HTTP로 통신한다.
  • 트래픽에 따라 scale을 조정할 수 있다.
scale up - 컨테이너 자원을 증가
scale out - 컨테이너 수를 증가

  • ingress network는 외부에 들어오는 접근을 컨테이너에 연결해준다.
  • L7과 L4 환경을 구현할 수 있다.

--label-rm 라벨 삭제

rapa@manager:~$ docker node update --label-rm zone worker1

--label-add 라벨 추가

rapa@manager:~$ docker node update --label-add region=seoul worker1
worker1
rapa@manager:~$ docker node update --label-add region=seoul worker2
worker2
rapa@manager:~$ docker node update --label-add region=jeju worker3
worker3
rapa@manager:~$ docker node update --label-add customer=lg worker1
worker1
rapa@manager:~$ docker node update --label-add customer=kia worker2
worker2
rapa@manager:~$ docker node update --label-add customer=lg worker3
worker3

docker stack 작성

  • web.yml 야믈 파일 작성
rapa@manager:~/0826$ vi web.yml 
rapa@manager:~/0826$ cat web.yml

version: '3.7'

services: 
  nginx: 
    image: nginx 
    deploy:  
      replicas: 3
      placement: 
        constraints:
          - node.labels.region==seoul
          - node.labels.customer==lg
      restart_policy: 
        condition: on-failure 
        max_attempts: 2 
    environment: 
      SERVICE_PORTS: 80 
    networks: 
      - web  

  proxy:
    image: dockercloud/haproxy
    depends_on: 
      - nginx
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:      # -p option, attached to ingress network
      - "8003:80"
    networks:   # backend network -> nginx containers
      - web        
    deploy:
      mode: global
      placement: 
        constraints: [node.role==manager]   >   
networks: 
  web: 
    external: true
  • 컨테이너 생성
rapa@manager:~/0826$ docker stack deploy -c web.yml yangweb

Creating service yangweb_nginx
Creating service yangweb_proxy

  • 모든 스택과 일부 추가 정보 보기
rapa@manager:~/0826$ docker stack ls

NAME      SERVICES   ORCHESTRATOR
yangweb   2          Swarm
  • Service 목록을 확인
rapa@manager:~/0826$ docker service ls

ID             NAME            MODE         REPLICAS   IMAGE                        PORTS
jbzzanuqux33   yangweb_nginx   replicated   3/3        nginx:latest                 
5286i6vzbesf   yangweb_proxy   global       1/1        dockercloud/haproxy:latest   *:8003->80/tcp
  • 몇 개의 Task가 실행중인지 확인
rapa@manager:~/0826$ docker service ps yangweb_nginx

ID             NAME              IMAGE          NODE      DESIRED STATE   CURRENT STATE            ERROR     PORTS
hqq2lxqgfbxt   yangweb_nginx.1   nginx:latest   worker1   Running         Running 42 seconds ago             
ww65t9utw1lf   yangweb_nginx.2   nginx:latest   worker1   Running         Running 42 seconds ago             
ot21rqw0li4h   yangweb_nginx.3   nginx:latest   worker1   Running         Running 42 seconds ago 
  • 서비스 상세 정보 확인
rapa@manager:~/0826$ docker service inspect yangweb_nginx --pretty

ID:		jbzzanuqux338rjooj0vmyxp3
Name:		yangweb_nginx
Labels:
 com.docker.stack.image=nginx
 com.docker.stack.namespace=yangweb
Service Mode:	Replicated
 Replicas:	3
Placement:
 Constraints:	[node.labels.region==seoul node.labels.customer==lg]
UpdateConfig:
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Update order:      stop-first
RollbackConfig:
 Parallelism:	1
 On failure:	pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Rollback order:    stop-first
ContainerSpec:
 Image:		nginx:latest@sha256:b95a99feebf7797479e0c5eb5ec0bdfa5d9f504bc94da550c2f58e839ea6914f
 Env:		SERVICE_PORTS=80 
Resources:
Networks: web 
Endpoint Mode:	vip

0개의 댓글