Nginx 시리즈: Nginx 자체 백 엔 드 건강 검진

3083 단어 nginx
엄 밀 히 말 하면 Nginx 는 부하 균형 백 엔 드 노드 에 대한 건강 검진 기능 을 가지 고 있 지 않 지만 기본 적 인 자체 가 가지 고 있 는 ngx 를 통 해http_proxy_module 모듈 과 ngxhttp_upstream_module 모듈 의 관련 명령 은 백 엔 드 노드 가 고장 이 났 을 때 자동 으로 건강 노드 로 전환 합 니 다.
0x01:ngx_http_proxy_모듈 모듈
proxy_connect_timeout 명령 어
    :    proxy_connect_timeout time;
   :    proxy_connect_timeout 60s;
   :    http, server, location

이 명령 의 기능 은 백 엔 드 서버 와 연결 하 는 시간 초과 설정 입 니 다.시간 초과 가 일반적으로 75 초 이상 일 수 없 음 을 주의해 야 한다.
proxy_read_timeout 명령 어
    :    proxy_read_timeout time;
   :    proxy_read_timeout 60s;
   :    http, server, location

백 엔 드 서버 에서 응답 을 읽 는 시간 초과 시간 을 정의 합 니 다.이 시간 초 과 는 전체 응답 전송 이 완 료 된 가장 긴 시간 이 아니 라 두 번 의 읽 기 작업 사이 의 가장 긴 시간 간격 을 말한다.백 엔 드 서버 가 시간 초과 시간 내 에 데 이 터 를 전송 하지 않 으 면 연결 이 닫 힙 니 다.
proxy_next_upstream 명령 어
    :    proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |http_404 | off ...;
   :    proxy_next_upstream error timeout;
   :    http, server, location

어떤 상황 에서 실패 한 요청 이 다음 백 엔 드 서버 노드 로 전송 되 어야 하 는 지 지정 합 니 다.
error: Nginx 가 백 엔 드 서버 와 연결 할 때;또는 백 엔 드 서버 에 요청 을 보 낼 때;또는 백 엔 드 서버 에서 응답 헤드 를 받 는 중 오류 가 발생 했 습 니 다.
timeout: 백 엔 드 서버 와 연결 할 때;또는 백 엔 드 서버 에 요청 을 보 낼 때;또는 백 엔 드 서버 에서 응답 헤드 를 받 을 때 시간 초과 가 발생 합 니 다.
invalid_header: 백 엔 드 서버 가 빈 응답 이나 불법 응답 헤드 를 되 돌려 줍 니 다.
http_500: 백 엔 드 서버 가 되 돌아 오 는 응답 상태 코드 는 500 입 니 다.
http_502: 백 엔 드 서버 가 되 돌아 오 는 응답 상태 코드 는 502 입 니 다.
http_503: 백 엔 드 서버 가 되 돌아 오 는 응답 상태 코드 는 503 입 니 다.
http_504: 백 엔 드 서버 가 되 돌아 오 는 응답 상태 코드 는 504 입 니 다.
http_404: 백 엔 드 서버 에서 돌아 오 는 응답 상태 코드 는 404 입 니 다.
off: 다음 백 엔 드 서버 에 요청 보 내기 중지
이해 해 야 할 것 은 클 라 이언 트 에 게 데 이 터 를 보 내지 않 기 전에 다음 백 엔 드 서버 에 요청 을 전달 하 는 것 이 가능 하 다 는 것 이다.즉, 클 라 이언 트 에 응답 하 는 전송 에 오류 가 발생 하거나 시간 이 초과 되면 이러한 오 류 는 복구 할 수 없다 는 것 이다.
예:
http {
    proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
}

0x02:ngx_http_upstream_모듈 모듈
서버 명령 어
    :    server address [parameters];
   :    —
   :    upstream

max_fails = number: Nginx 가 서버 와 통신 하려 는 시도 가 실패 한 횟수 를 설정 합 니 다.fail 에서timeout 매개 변수 가 정 의 된 시간 대 에 실패 한 횟수 가 이 값 에 도달 하면 Nginx 는 서버 를 사용 할 수 없다 고 생각 합 니 다.다음 failtimeout 시간 대 에 서버 는 더 이상 시도 되 지 않 습 니 다.실패 한 시도 횟수 는 기본적으로 1 입 니 다.0 으로 설정 하면 시도 횟수 를 집계 하지 않 고 서버 가 계속 사용 할 수 있다 고 생각 합 니 다.명령 을 통 해 proxynext_upstream、fastcgi_next_upstream 과 memcachednext_upstream 에서 실패 한 시 도 를 설정 합 니 다.기본 설정 시 http404 상 태 는 실패 한 시도 로 간주 되 지 않 습 니 다.
fail_timeout = time: 서버 가 사용 할 수 없다 고 여 겨 지 는 시간 대 와 실패 시도 횟수 를 집계 하 는 시간 대 를 설정 합 니 다.이 기간 동안 서버 실패 횟수 가 지 정 된 시도 횟수 에 이 르 면 서버 는 사용 할 수 없다 고 여 겨 진다.기본적으로 이 시간 초과 시간 은 10 초 입 니 다.
예:
upstream name {
   server 192.168.1.110:8081 max_fails=3 fail_timeout=60s;
   server 192.168.1.122:8082 max_fails=3 fail_timeout=60s;
}

이 방식 을 사용 할 때 주의해 야 할 것 은 백 엔 드 에 불 건전 한 노드 가 있 으 면 부하 이퀄 라이저 가 먼저 이 요 구 를 불 건전 한 노드 에 전달 한 다음 에 다른 노드 에 전달 하면 한 번 의 퍼 가기 가 낭비 된다 는 것 이다.

좋은 웹페이지 즐겨찾기