Nginx 역방향 프 록 시 부하 균형 용기 화 배치

5245 단어
우선 home 디 렉 터 리 에 microservices 디 렉 터 리 를 만 들 고 첫 장 을 엽 니 다.
cd ~ && mkdir microservices && cd microservices

디 렉 터 리 를 만 들 고 디 렉 터 리 아래 에 세 개의 노드 디 렉 터 리 를 만 듭 니 다. nginx, nginx01, nginx02 는 역방향 프 록 시 서버 로 서 nginx03, nginx01 로 균형 있 게 전송 하 는 것 이 목적 입 니 다.
mkdir -p ./nginx/nginx01 ./nginx/nginx02 ./nginx/nginx03

전시 효 과 는 다음 과 같다.
nginx
├── nginx01
└── nginx02
└── nginx03

nginx 미 러 의 설정 파일 을 하위 디 렉 터 리 에 복사 하여 마 운 트 할 수 있 도록 합 니 다. 임시 용 기 를 만 들 고 설정 파일 을 홈 호스트 디 렉 터 리 에 복사 한 다음 임시 용 기 를 삭제 하 는 방법 입 니 다.
docker run --name tmpnginx -d nginx:latest
docker cp tmpnginx:/etc/nginx/nginx.conf ~/microservices/nginx/nginx01
docker cp tmpnginx:/etc/nginx/nginx.conf ~/microservices/nginx/nginx02
docker cp tmpnginx:/etc/nginx/nginx.conf ~/microservices/nginx/nginx03
docker cp tmpnginx:/etc/nginx/conf.d ~/microservices/nginx/nginx01
docker cp tmpnginx:/etc/nginx/conf.d ~/microservices/nginx/nginx02
docker cp tmpnginx:/etc/nginx/conf.d ~/microservices/nginx/nginx03
docker rm -f tmpnginx

이 때 nginx 디 렉 터 리 는 다음 과 같 습 니 다.
nginx
├── nginx01
│   ├── conf.d
│   │   └── default.conf
│   └── nginx.conf
├── nginx02
│   ├── conf.d
│   │   └── default.conf
│   └── nginx.conf
└── nginx03
    ├── conf.d
    │   └── default.conf
    └── nginx.conf

루트 디 렉 터 리 에 파일 nginx02 을 만 들 고 세 개의 웹 서 비 스 를 만 듭 니 다. 설정 파일 은 각각 용기 에 비 친 대응 파일 입 니 다.
version: '3'

services:
  web01:  #    
    image: nginx:latest #  
    container_name: web01 #    
    ports:  #     ,       ,      
      - 8080:80
    volumes: #        ,       ,      
      - ./nginx/nginx01/nginx.conf:/etc/nginx/nginx.conf #    
      - ./nginx/nginx01/conf.d:/etc/nginx/conf.d #      
      - ./nginx/html:/usr/share/nginx/html #html    

  web02:
    image: nginx:latest
    container_name: web02
    volumes:
      - ./nginx/nginx02/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/nginx02/conf.d:/etc/nginx/conf.d
      - ./nginx/html:/usr/share/nginx/html

  web03:
    image: nginx:latest
    container_name: web03
    volumes:
      - ./nginx/nginx03/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/nginx03/conf.d:/etc/nginx/conf.d
      - ./nginx/html:/usr/share/nginx/html
nginx03 을 열 고 글 상단 에 docker-compose.yml 설정 을 추가 합 니 다. 웹 02 와 웹 03 은 nginx/nginx01/conf.d/default.conf 에서 정 의 된 용기 이름 upstream 입 니 다.
upstream backend {
    server web02:80;
    server web03:80;
}

요청 을 docker-compose.yml 에 전달 할 수 있 도록 container_name 에 가입 location / 하 다.
location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    proxy_pass http://backend;  #    
}

설정 이 완료 되면 다음 명령 을 실행 하여 용 기 를 달 립 니 다.
cd ~/microservices
docker-compose up

다음 내용 을 제시 하면 성공 이다.
Recreating microservices_web01_1 ... done
Recreating microservices_web02_1 ... done
Recreating microservices_web03_1 ... done
Attaching to web02, web01, web03

이 때 proxy_pass 디 렉 터 리 구 조 는 다음 과 같 습 니 다. nginx 디 렉 터 리 에 하나의 backend 폴 더 가 더 나 왔 습 니 다. microservices 디 렉 터 리 에 하나의 html 를 만 들 고 입력 html 을 입력 하여 다시 뛰 어 볼 수 있 습 니 다.
microservices
├── docker-compose.yml
└── nginx
    ├── html
    │   └── index.html
    ├── nginx01
    │   ├── conf.d
    │   │   └── default.conf
    │   └── nginx.conf
    ├── nginx02
    │   ├── conf.d
    │   │   └── default.conf
    │   └── nginx.conf
    └── nginx03
        ├── conf.d
        │   └── default.conf
        └── nginx.conf

현재 테스트 를 통 해 브 라 우 저 에 접근 index.html 하고 터미널 인쇄 로 그 를 관찰 합 니 다.
web01    | 172.24.0.1 - - [26/Jun/2019:01:48:28 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"
web02    | 172.24.0.2 - - [26/Jun/2019:01:48:28 +0000] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"

이 같은 내용 은 이번 요청 이 웹 01 을 통 해 웹 02 로 전송 되 었 음 을 나타 낸다.
web01    | 172.24.0.1 - - [26/Jun/2019:04:42:36 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"
web03    | 172.24.0.2 - - [26/Jun/2019:04:42:36 +0000] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" "-"

다시 리 셋 하면 웹 01 을 통 해 웹 03 으로 리 트 윗 을 요청 한 것 을 볼 수 있 습 니 다. 지금까지 기본 적 인 부하 균형 배치 가 완료 되 었 습 니 다. 상기 웹 01 은 웹 02, 웹 03 에 균형 적 으로 리 트 윗 을 요청 하 는 방법 을 폴 링 법 이 라 고 합 니 다. 다음 글 은 몇 가지 다른 부하 알고리즘 을 소개 합 니 다.

좋은 웹페이지 즐겨찾기