nginx 의 6 가지 부하 균형 전략
다음은 Nginx 가 지원 하 는 6 가지 부하 균형 전략 을 말씀 드 리 겠 습 니 다.
폴 링 (기본 값)
폴 링 은 Nginx 가 지원 하 는 기본 부하 균형 정책 입 니 다. 폴 링 정책 은 모든 요청 이 시간 순서에 따라 서로 다른 배경 서버 에 분배 되 는 것 을 말 합 니 다.예 를 들 어 하나의 클 러 스 터 에는 서버 A 와 서버 B 만 있 고 첫 번 째 방문 은 서버 A 이 며 두 번 째 방문 은 서버 B 이 며 세 번 째 방문 은 서버 A 이다. 이런 식 으로 유추 된다.
upstream balanceServer {
server localhost:8081;
server localhost:8082;
server localhost:8083;
server localhost:8084;
}
폴 링 정책 은 다음 과 같은 인 자 를 제공 합 니 다.
fail_timeout
maxfails 결합 사용, max 표시fails 회 실패 후 서버 가 일시 정지 되 는 시간 입 니 다.
max_fails
fail 에 설정timeout 매개 변수 설정 시간 내 최대 실패 횟수 입 니 다. 기본 값 은 1 입 니 다. 이 시간 내 에 이 서버 에 대한 모든 요청 이 실 패 했 을 경우 이 서버 가 정지 되 었 다 고 생각 하고 proxy 로 돌아 갑 니 다.next_upstream 모듈 정의 오류 입 니 다.
fail_time
서버 는 정지 시간 으로 여 겨 지 며 기본 값 은 10s 입 니 다.
backup
이 서버 를 예비 서버 로 표시 합 니 다.메 인 서버 가 멈 추 면 요청 이 여기에 보 내 집 니 다. 다른 모든 비 backup 기기 다운 이 떨 어 지 거나 바 쁠 때 만 backup 서버 를 요청 하기 때문에 이 기계 의 압력 이 가장 낮 습 니 다.
down
서버 가 영구적 으로 정지 되 었 음 을 표시 합 니 다. 현재 server 가 부하 에 잠시 참여 하지 않 음 을 표시 합 니 다.
weight
부하 의 가중치, 기본 값 은 1 입 니 다.weight 가 클 수록 이 서버 에 접근 할 확률 이 높다 는 뜻 이다.
폴 링 정책 에서 클 러 스 터 의 한 서버 가 끊 기 면 자동 으로 서버 를 제거 합 니 다.
폴 링 정책 은 서버 설정 이 상당 하고 상태 가 없 으 며 짧 고 빠 른 서비스 사용 에 적합 합 니 다.
가중치 (weight, 가중 폴 링)
가중치 전략 은 폴 링 전략 을 바탕 으로 폴 링 의 확률 을 따로 지정 한 것 이다.
upstream balanceServer {
server localhost:8081;
server localhost:8082 backup;
server localhost:8083 max_fails=3 fail_timeout=20s;
server localhost:8084 weight=2;
}
위의 예 에서 weight 인 자 는 폴 링 의 확률 을 지정 하 는 데 사 용 됩 니 다. weight 의 기본 값 은 1 이 고 weight 의 수 치 는 방문 비율 과 정비례 합 니 다. 예 를 들 어 8084 포트 의 서버 가 방문 할 확률 은 다른 서버 의 두 배 입 니 다.
가중치 가 높 을 수록 처리 해 야 할 요청 이 많아 진다.
가중치 전략 은 leastconn 과 iphash 결합 사용.
가중치 정책 은 서버 의 하드웨어 설정 에 비교적 적합 한 차이 가 큰 경우 입 니 다.
IP 에 따라 분배 (ip hash)
이러한 전략 은 클 라 이언 트 의 IP 에 따라 서버 를 분배 하여 같은 클 라 이언 트 의 요청 을 같은 배경 서버 로 전송 하여 Session 의 통일 성 을 확보 하고 Session 의 크로스 도 메 인 문 제 를 해결 할 수 있 습 니 다.
upstream balanceServer {
ip_hash; # ip_hash
server localhost:8081;
server localhost:8082 backup;
server localhost:8083 max_fails=3 fail_timeout=20s;
server localhost:8084 weight=2;
}
Nginx 의 1.3.1 버 전에 서 는 이러한 정책 종류 에서 가중치 (weight) 를 사용 할 수 없습니다.
ip_hash 는 backup 인자 와 동시에 사용 할 수 없습니다.
이 정책 은 세 션 세 션 같은 상태 서비스 에 적 용 됩 니 다.
서버 를 제거 해 야 할 때 수 동 으로 다운 해 야 합 니 다.
최소 연결 (least conn)
이 정책 은 연결 수가 적은 백 엔 드 서버 에 요청 을 전달 하 는 것 입 니 다.앞의 폴 링 전략 은 클 러 스 터 의 모든 배경 서버 에 요청 을 평균 적 으로 전달 하여 부하 가 대체적으로 같 지만 일부 요청 이 오래 걸 릴 수 있 고 있 는 백 엔 드 부하 가 너무 높 을 수 있 습 니 다.이 경우 leastconn 전략 은 더 좋 은 부하 균형 효 과 를 얻 을 수 있 습 니 다.
upstream balanceServer {
least_conn; # least_conn
server localhost:8081;
server localhost:8082 backup;
server localhost:8083 max_fails=3 fail_timeout=20s;
server localhost:8084 weight=2;
}
이 정책 은 요청 처리 시간 이 길 고 짧 아서 서버 가 과부하 되 는 장면 에 적합 합 니 다.
응답 시간 (fair)
이 정책 은 서버 의 응답 시간 에 따라 요청 을 분배 하고 응답 시간 이 짧 은 우선 분배 입 니 다.
upstream balanceServer {
fair; # fair
server localhost:8081;
server localhost:8082;
server localhost:8083;
server localhost:8084;
}
fair 정책 은 제3자 정책 으로 제3자 플러그 인 을 설치 해 야 합 니 다.
URL 에 따라 할당 (url hash)
이 정책 은 url 에 접근 한 hash 결과 에 따라 요청 을 할당 하여 모든 url 을 같은 백 엔 드 서버 로 지정 하고 캐 시 명중 에 맞 춰 사용 해 야 합 니 다.같은 자원 이 여러 번 요청 하면 서로 다른 서버 에 도착 하여 불필요 한 여러 번 다운로드, 캐 시 명중률 이 높 지 않 고 일부 자원 시간의 낭 비 를 초래 할 수 있 습 니 다.url 사용hash 는 같은 url (즉 같은 자원 요청) 을 같은 서버 에 도착 시 킬 수 있 습 니 다. 자원 을 캐 시 하고 다시 요청 을 받 으 면 캐 시 에서 읽 을 수 있 습 니 다.
upstream balanceServer {
url_hash; # url_hash
server localhost:8081;
server localhost:8082;
server localhost:8083;
server localhost:8084;
}
url_hash 정책 은 제3자 정책 으로 제3자 플러그 인 을 설치 해 야 합 니 다.
인 스 턴 스 설정
# user yanggb;
worker_processes 4;
events {
#
worker_connections 1024;
}
http {
#
upstream balanceServer {
server 10.1.40.129:8099 fail_timeout=60s;
server 10.1.40.23:9088;
server 10.1.40.77:7086;
}
server {
#
listen 80;
#
location / {
#
proxy_pass http://balanceServer;
}
}
}
총결산
Nginx 의 부하 균형 은 사실 5 가지 로 볼 수 있다. 왜냐하면 그 중의 가중치 폴 링 은 폴 링 전략 에 분 류 될 수 있 기 때문이다.폴 링 전략 (가중치 폴 링 포함) 을 제외 한 다른 부하 균형 전략 은 모두 서로 다른 알고리즘 을 사용 하여 이 루어 진 것 이다. 실제 운용 에서 서로 다른 장면 에 따라 서로 다른 부하 균형 전략 (다양한 전략 조합 으로 사용 할 수 있 음) 을 목적 성 있 게 선택 하여 실제 수요 에 응 해 야 한다.
"내 가 생각 나 는 특별한 장면 이 있 나 요?"
다음으로 전송:https://www.cnblogs.com/yanggb/p/10895326.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.