nginx 의 6 가지 부하 균형 전략

7079 단어
서버 클 러 스 터 에서 Nginx 는 역방향 프 록 시 역할 을 합 니 다.단독 서버 의 압력 이 너무 커서 서버 가 무 너 지 는 것 을 피하 기 위해 서 는 서로 다른 사용자 의 요청 을 서로 다른 서버 에 전달 하여 클 러 스 터 의 모든 서버 가 정상적으로 작 동 하도록 해 야 한다. 이런 체 제 를 부하 균형 이 라 고 한다.
다음은 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

좋은 웹페이지 즐겨찾기