nginx 시리즈 5 - 부하 균형 하의 건강 검사

2563 단어 nginx
nginx 를 부하 균형 으로 사용 하고 있 습 니 다. 백 엔 드 서버 의 가용성 을 판단 해 야 합 니 다. 사용 할 수 없 으 면 서버 목록 을 제시 해 야 합 니 다.다음은 nginx 건강 검진 의 몇 가지 방안 을 토론 합 니 다.
1.ngx_http_proxy_module 모듈 과 ngxhttp_upstream_모듈 모듈
이 두 가 지 는 nginx 가 자체 적 으로 가지 고 있 는 것 으로 우 리 는 앞의 몇 편의 글 에서 사실은 분석 한 적 이 있다.
1.1 ngx_http_proxy_모듈 모듈
(1) proxy_connect_timeout: 백 엔 드 서버 와 연결 하 는 시간 초과 설정.기본 60 초, 역할 영역: http, server, location.(2) proxy_read_timeout time: 백 엔 드 서버 에서 응답 을 읽 는 시간 초 과 를 정의 합 니 다.이 시간 초 과 는 두 번 의 읽 기 작업 사이 의 가장 긴 시간 간격 을 말 하 며 전체 응답 전송 이 완 료 된 가장 긴 시간 이 아 닙 니 다.백 엔 드 서버 가 시간 초과 시간 내 에 데 이 터 를 전송 하지 않 으 면 연결 이 닫 힙 니 다.기본 60 초, 역할 영역: http, server, location.(3) - proxy_next_upstream: 서버 응답 이 실 패 했 을 때 다른 서버 로 보 냅 니 다.proxynext_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |http_404 | off。
error      #       
timeout    #     
invalid_header  #            
http_500   #      500
http_502   #      502
http_503   #      503
http_504   #      504
http_404   #      404
off        #                 

1.2 ngx_http_upstream_모듈 모듈
구체 적 으로 server address [parameters] 의 parameters 인 자 를 말 합 니 다.(1)max_fails 시도 실패 횟수.fail 에서timeout 시간 내 에 실패 한 횟수 가 이 값 에 도달 하면 Nginx 는 서버 를 사용 할 수 없다 고 생각 합 니 다.다음 failtimeout 시간 대 에 서버 는 더 이상 시도 되 지 않 습 니 다.기본 횟수 는 1 이 며 404 는 실패 로 간주 되 지 않 습 니 다.0 이면 서버 가 계속 사용 가능 하 다 고 생각 하 는 시도 횟수 통 계 를 중단 합 니 다.(2)fail_timeout 은 서버 가 사용 할 수 없 는 시간 대 와 실패 시도 횟수 를 집계 하 는 시간 대 를 설정 합 니 다.이 기간 동안 서버 실패 횟수 가 지 정 된 시도 횟수 에 이 르 면 서버 는 사용 할 수 없다 고 여 겨 진다.기본적으로 이 시간 초과 시간 은 10 초 입 니 다.실례:
 upstream test{
                server 192.168.0.1:8080 max_fails=1 fail_timeout=10s;
                server 192.168.0.2:8080max_fails=1 fail_timeout=10s;
        }

이러한 방식 의 단점: 서버 가 사용 할 수 없 더 라 도 요청 은 이 노드 에 보 내 서 다시 전송 하고 또 한 번 불필요 한 경로 요청 을 합 니 다.그리고 다시 시작 할 때 느 리 면 모든 노드 가 사용 할 수 없다 고 판단 할 수 있 습 니 다.
2. nginx_upstream_check_module
nginx_upstream_check_모듈 은 아 리 가 개발 한 nginx 건강 검진 입 니 다.상기 와 다른 점 은 서버 가 사용 되 지 않 으 면 요청 이 이 노드 에 전달 되 지 않 는 다 는 것 이다.먼저 어떻게 쓰 는 지, 느껴 보 세 요.
upstream test{
       server 192.168.0.1:8080;
       server 192.168.0.2:8080;
       check interval=3000 rise=2 fall=5 timeout=1000 type=http;
        
}
interval:            ,     
rsie:           rise_count,        up
fall:           fall_count,        down
timeout:            ,     
type:         ,  tcp、ssl_hello、http、mysql、ajp
port:       。               ,         8080     ,      8081               。   0,                 。

좋은 웹페이지 즐겨찾기