Nginx (4) --- 여러 서버 간 부하 균형
5669 단어 nginx
1. Nginx 역방향 에이전트
역방향 프 록 시 (Reverse Proxy) 방식 은 프 록 시 서버 로 인터넷 의 연결 요청 을 받 은 후 내부 네트워크 에 있 는 서버 에 요청 을 전달 하고 서버 에서 얻 은 결 과 를 인터넷 에서 연결 을 요청 한 클 라 이언 트 에 게 되 돌려 주 는 것 을 말한다.
쉽게 말 하면 실제 서버 가 외부 네트워크 에 직접 접근 할 수 없고 접근 하려 면 프 록 시 를 통 해 야 합 니 다.
nginx 의 프 록 시 과정 은 nginx 에 요청 을 보 낸 다음 에 요청 을 백 엔 드 웹 서버 에 전달 하 는 것 입 니 다. 백 엔 드 서버 처리 가 끝 난 후에 결 과 를 nginx 에 보 내 고 nginx 는 결 과 를 클 라 이언 트 에 보 냅 니 다.백 엔 드 서버 는 원 격 으로 도 로 컬 에서 도 사용 할 수 있 고 nginx 서버 내부 에서 정의 하 는 다른 가상 호스트 일 수도 있 습 니 다.
nginx 를 대리 로 사용 하 는 목적 중 하 나 는 기초 구조의 규 모 를 확장 하 는 것 이다.
2. Nginx 부하 균형
만약 서 비 스 를 한 대의 웹 서버 에 만 발표한다 면, 첫째, 방 문 량 이 급증 하면 서버 가 끊 길 수도 있 고, 둘째, 웹 서버 가 끊 기거 나 정전 이 되 어 접근 할 수 없 게 될 것 이다.따라서 서 비 스 를 여러 대의 웹 서버 에 발표 하여 분류 하고 한 대의 고장 이 서비스 가 범위 에 있 지 않도록 보장 할 수 있 습 니 다.
nginx 는 대량의 병렬 연결 을 처리 할 수 있 습 니 다. 요청 이 도착 하면 nginx 는 임의의 수량의 배경 서버 에 전송 하여 처리 할 수 있 습 니 다. 이것 은 부하 균형 을 전체 클 러 스 터 에 분산 시 키 는 것 과 같 습 니 다.
3. Nginx 부하 균형 알고리즘
원본 주소 해시 법: 클 라 이언 트 의 IP 주 소 를 가 져 오 는 데 따라 해시 함수 로 계산 하여 하나의 수 치 를 얻 을 수 있 습 니 다. 이 수치 로 서버 목록 의 크기 를 모드 로 연산 하면 고객 센터 에서 서버 에 접근 할 번호 입 니 다.원본 주소 해시 법 으로 부하 균형 을 이 루 고 같은 IP 주소 의 클 라 이언 트 는 백 엔 드 서버 목록 이 변 하지 않 을 때 매번 같은 백 엔 드 서버 에 매 핑 되 어 접근 합 니 다.
폴 링 법: 요청 을 백 엔 드 서버 에 순서대로 배정 합 니 다. 백 엔 드 의 모든 서버 를 균형 있 게 대하 고 서버 의 실제 연결 수 와 현재 시스템 부하 에 관심 이 없습니다.
무 작위 법: 시스템 의 무 작위 알고리즘 을 통 해 백 엔 드 서버 의 목록 크기 에 따라 그 중의 한 서버 를 무 작위 로 선택 하여 접근 합 니 다.
가중 폴 링 법: 서로 다른 백 엔 드 서버 는 기계 의 설정 이 현재 시스템 의 부하 와 다 를 수 있 기 때문에 그들의 항 압 능력 도 다르다.배치 가 높 고 부하 가 낮은 기계 에 더 높 은 가중치 를 설정 하여 더 많은 것 을 처리 하도록 합 니 다.한편, 낮 고 부하 가 높 은 기 계 를 배치 하여 비교적 낮은 가중치 를 분배 하고 시스템 부하 도 낮 추 며 가중 폴 링 은 이 문 제 를 잘 처리 하고 요청 순서 에 따라 가중치 에 따라 백 엔 드 로 분배 할 수 있다.
가중 랜 덤 법: 가중 폴 링 법 과 마찬가지 로 가중 랜 덤 법 도 백 엔 드 기계 의 배치 에 따라 시스템 의 부하 분배 가 서로 다른 가중치 이다.순서 가 아 닌 무 작위 로 백 엔 드 서버 를 요청 하 는 것 이 다르다.
최소 연결 수법: 백 엔 드 서버 의 설정 이 다 르 기 때문에 요청 처리 가 빠 르 고 느 립 니 다. 최소 연결 수법 은 백 엔 드 서버 의 현재 연결 상황 에 따라 현재 적 체 된 연결 수가 가장 적은 서버 를 동적 으로 선택 하여 현재 요청 을 처리 하고 백 엔 드 서비스의 이용 효율 을 최대한 향상 시 킵 니 다.모든 서버 로 합 리 적 으로 분류 하 는 것 을 책임 집 니 다.
##upstream , ##
# 1: . ,
# , ,
upstream webhost {
server 172.36.25.256:6666 ;
server 172.36.25.257:6666 ;
}
# 2:weight( ). .
upstream webhost {
server 172.36.25.256:6666 weight=2;
server 172.36.25.257:6666 weight=3;
}
# 3:ip_hash. IP hash , IP ,
# session
upstream webhost {
ip_hash;
server 172.36.25.256:6666 ;
server 172.36.25.257:6666 ;
}
# 4:url_hash( ). url hash ,
# url , .
#Nginx url_hash , , Nginx hash
upstream webhost {
server 172.36.25.256:6666 ;
server 172.36.25.257:6666 ;
hash $request_uri;
}
# 5:fair( ). .
# , ,
# .Nginx fair , , Nginx upstream_fair
#
3. Nginx 부하 균형 설정
배경:
두 대의 웹 서버 중 하 나 는 웹 서버 이자 ngnx 서버 입 니 다.
172.36.25.256 웹 서버, ngnx 서버 172.36.25.257 웹 서버
nginx. conf 파일 찾기
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream webhost {
server 172.36.25.256:8080 weight=2;
server 172.36.25.257:8080 weight=2;
}
server {
listen 8099;
server_name XXXX;
location /{
proxy_pass http://webhost;
proxy_set_header Host $host:8099;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
client_max_body_size 100m;
}
location /web{
proxy_pass http://webhost/framework;
proxy_set_header Host $host:8099;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
client_max_body_size 100m;
}
location /images {
proxy_pass http://webhost/images;
proxy_set_header Host $host:8099;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
client_max_body_size 100m;
}
}
}
입력: http: XXXX: 8099 / web 접근 가능
이 글 이 도움 이 된다 고 생각 하 시 면 프로필 오른쪽 에 있 는 관심 버튼 을 눌 러 주세요. 감사합니다!
기술 은 교류 에서 진보 하고 지식 은 공유 에서 전파 된다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.