Nginx 역방향 프 록 시 부하 균형 용기 화 배치
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 에 균형 적 으로 리 트 윗 을 요청 하 는 방법 을 폴 링 법 이 라 고 합 니 다. 다음 글 은 몇 가지 다른 부하 알고리즘 을 소개 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.