Nginx 의 부하 균형 가중 폴 링 (Weighted Round Robin)
Nginx 의 부하 균형 설정 은 다음 과 같 습 니 다.
http {
upstream cluster {
server a weight=4;
server b weight=2;
server c weight=1;
}
...
}
실현 의 원리
모든 백 엔 드 피 어 는 세 개의 가중치 변 수 를 가지 고 있 으 며, 먼저 그들의 의 미 를 설명 한다.
(1) weight
설정 파일 에서 지정 한 이 백 엔 드 의 가중치 입 니 다. 이 값 은 고정 적 으로 변 하지 않 습 니 다.
(2) effective_weight
백 엔 드 의 유효 가중치, 초기 값 은 weight 입 니 다.
백 엔 드 를 방출 할 때 백 엔 드 와 의 통신 과정 에서 오류 가 발생 하면 effective 를 감소 합 니 다.weight。
이후 새로운 요청 이 왔 을 때 백 엔 드 를 선택 하 는 과정 에서 effective 를 점차 증가 시 킵 니 다.weight, 결국 weight 로 회 복 됩 니 다.
이 필드 를 추가 하 는 이 유 는 백 엔 드 에 오류 가 발생 했 을 때 가중치 를 낮 추기 위해 서 입 니 다.
(3) current_weight
백 엔 드 의 현재 가중치 는 처음에는 0 이 었 다가 동적 으로 조정 된다.그렇다면 어떤 동적 조정 일 까?
백 엔 드 를 선택 할 때마다 클 러 스 터 의 모든 백 엔 드 를 옮 겨 다 니 며 백 엔 드 마다 currentweight 그것 의 effective 증가weight,
동시에 모든 백 엔 드 를 누적 하 는 effectiveweight, totalk 로 저장.
이 백 엔 드 의 currentweight 가 가장 큽 니 다. 이 백 엔 드 를 선택 하고 currentweight 에서 total 을 빼다.
이 백 엔 드 가 선택 되 지 않 았 다 면 currentweight 줄 일 필요 없어 요.
세 개의 weight 필드 의 의 미 를 파악 한 후 가중 폴 링 알고리즘 은 다음 과 같이 설명 할 수 있 습 니 다.
상술 한 묘 사 는 그다지 직관 적 이지 않 을 수 있 으 니 예 를 보 자.
현재 아래 upstream 설정 블록 을 사용 합 니 다:
upstream backend {
server a weight=4;
server b weight=2;
server c weight=1;
}
이 설정 에 따 르 면 7 개의 클 라 이언 트 요청 중 a 는 4 번 선택 되 고 b 는 2 번 선택 되 며 c 는 1 번 선택 되 며 분포 가 부 드 럽 습 니 다.
우리 가 이렇게 된 것 인지 아 닌 지 계산 해 보 자.
initial current_weight of a, b, c is { 0, 0, 0 }
상기 과정 을 통 해 다음 과 같은 결론 을 얻 을 수 있다.
나중에 코드 붙 이기: 계속...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SSR 배포 전략 with EC2, CloudFront, pm2, NGINX (2)Ubuntu에서 기존의 http의 80번 포트로 리다이렉트할 수 있지만, 추가적으로 도메인을 등록하고 HTTPS 설정 등을 위해 NGINX를 사용해볼 것이다. 도메인을 등록하기 위해 AWS Route 53을 검색하고...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.