playdata/daily

17주차 : Day 2 (10/29)

soojin1 2024. 10. 29. 21:24
  • 오류 찾기

아래 repo 의 docker 설정의 오류를 잡아 보세요.

https://github.com/dMario24/k1s_err

 

GitHub - dMario24/k1s_err

Contribute to dMario24/k1s_err development by creating an account on GitHub.

github.com

 

충격실화

이 때까지 NGNIX 인 줄 알았는데

NGINX

였다....!

 


어제 blog-1, blog-2 두 개의 분산 서버를 사용하는 실습을 했다.

새로운 시나리오 : blog1, blog2 가 존재 blog3 이 새로 생김 - LB 에 blog3 이 추가 되도록

 

-docker compose를 사용해서 먼저 서버 2개와 lb 서버를 띄워보자.

services:
  blog_1:
    build: ./docker/httpd
    container_name: blog-1
    ports:
      - 8051:80

  blog_2:
    build: ./docker/httpd
    container_name: blog-2
    ports:
      - 8052:80

  load_balancer:
    build: ./docker/nginx
    container_name: blog-lb
    ports:
      - 8949:80
    depends_on:
      - blog_1
      - blog_2
    links:
      - blog_1
      - blog_2
    develop:
      watch:
        - action: sync+restart
          path: ./docker/ngnix/default.conf
          target: /etc/ngnix/conf.d/default.conf

 

$ docker compose -f docker-compose.yml up -d

위의 명령어를 통해 컨테이너(총 3개)를 실행시킬 수 있다.

 

그러다가 !!

중간에 blog-3을 추가했다.

compose-yml 파일을 아래와 같이 수정했다.

services:
  blog_1:
    build: ./docker/httpd
    container_name: blog-1
    ports:
      - 8051:80

  blog_2:
    build: ./docker/httpd
    container_name: blog-2
    ports:
      - 8052:80

  blog_3:
    build: ./docker/httpd
    container_name: blog-3

  load_balancer:
    build: ./docker/ngnix
    container_name: blog-lb
    ports:
      - 8949:80
    depends_on:
      - blog_1
      - blog_2
      - blog_3
    links:
      - blog_1
      - blog_2
      - blog_3
    develop:
      watch:
        - action: sync+restart
          path: ./docker/ngnix/default.conf
          target: /etc/ngnix/conf.d/default.conf
$ docker compose up -d --build

 

여기서 추가적으로 해본게 있는데,

docker-compose.yml 파일을 다시 수정해보았다.(blog-3 없는 버전)

그리고 -d, --build 옵션을 통한 compose up을 수행했는데 여전히 blog-3이 수행 중 이었다.

 

docker compose가 up 명령어를 실행할 때 정의되지 않은 서비스나 중단 상태의 컨테이너를 자동으로 삭제하지 않기 때문이다.

--remove-orphans 옵션을 사용하면 docker-compose.yml에 정의되지 않은 기존 컨테이너를 자동으로 삭제할 수 있다.

# 새 설정 적용과 동시에 `blog_3` 컨테이너 삭제
$ docker compose up -d --build --remove-orphans

 


다음 방법은 일일이 적지 않고 여러 개 컨테이너를 생성하는 방법이다.

# docker-compose 수정

name: samdul
services:
  blog:
    build: ./docker/httpd
    ports:
      - 80
    deploy:                //scale out 옵션
      mode: replicated
      replicas: 1
    environment:
      - VIRTUAL_HOST=localhost
      - VIRTUAL_PORT=80


  load_balancer:
    image: nginxproxy/nginx-proxy
    ports:
      - "8949:80"
    depends_on:
      - blog
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
# nginx/default.conf
upstream blog_servers{
        server samdul-blog-1:80;
        server samdul-blog-2:80;
        server samdul-blog-3:80;
}

server{
       listen 80;

       location / {
                proxy_pass http://blog_servers;
        }
}

 

$ docker compose up -d --scale blog=3 --build

 

* 만약 scale blog=4로 하면 blog1 ~ blog4까지 생성되고,
그 상태에서 scale blog=2로 빌드하면 3,4는 자동으로 지워진 상태가 된다.

 

 

'playdata > daily' 카테고리의 다른 글

17주차 : Day 4 (10/31)  (7) 2024.10.31
17주차 : Day 3 (10/30)  (1) 2024.10.31
17주차 : Day 1 (10/28)  (2) 2024.10.28
16주차 : Day 1 (10/21)  (1) 2024.10.21
12주차 : Day 5 (9/27)  (1) 2024.09.30