Nginx 실전 | Nginx 건강 검진

9864 단어
전재 출처: Nginx 실전 | Nginx 건강 검진:https://mp.weixin.qq.com/s/wga-ZSMewzNbzRfI1d1Njg
서비스 관리의 중요 한 임 무 는 서비스 노드 의 변경 을 감지 하고 서비스 자동 등록 과 이상 노드 의 자동 제 거 를 완성 하 는 것 이다.이 는 서비스 관리 플랫폼 이 서비스 노드 의 건강 상 태 를 신속 하고 정확하게 감지 할 수 있어 야 한다.
방안 개술
Nginx 는 사용자 가 선택 할 수 있 도록 세 가지 HTTP 서비스 건강 검사 방안 을 제공 합 니 다. 1. TCP 계층 의 기본 검사 방안: 정기 적 으로 백 엔 드 서비스 와 tcp 연결 을 구축 하고 링크 구축 에 성공 하면 서비스 노드 가 건강 하 다 고 생각 합 니 다.2. HTTP 계층 의 기본 검사 방안: TCP 계층 검 사 는 한계 가 있 습 니 다. a. 많은 HTTP 서 비 스 는 띠 상태 이 고 포트 가 listen 상태 에 있다 고 해서 서비스 가 예열 되 었 다 고 할 수 없습니다.b. 서비스 내부 처리 논리 가 정체 되 었 는 지 진실 하 게 반영 할 수 없습니다.c. 이 때 http 층 건강 검진 을 선택 할 수 있 습 니 다. 서비스 에 http 요청 GET / HTTP / 1.0 \ r \ r 를 보 내 고 상태 가 2xx 또는 3xx 일 때 백 엔 드 서비스 가 정상 이 라 고 생각 합 니 다.3. 사용자 정의 방안: 다음 설명 에 따라 사용자 정의 검사 방안 을 설명 할 수 있 습 니 다.
설정 매개 변수 상세 설명
자주 사용 하 는 건강 검진 설정 은 다음 과 같 습 니 다.
check fall=3 interval=3000 rise=2 timeout=2000 type=http;
check_http_expect_alive http_2xx http_3xx ;
check_http_send "GET /checkAlive HTTP/1.0\r
\r
"
;

다음은 각 설정 매개 변수 에 대해 상세 하 게 소개 합 니 다.
check:
check 필드 매개 변 수 는 다음 과 같 습 니 다.
Syntax: check interval=milliseconds [fall=count] [rise=count] [timeout=milliseconds] [default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp] [port=check_port]
Default:         ,    :interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp

check 필드 의 매개 변 수 는 다음 과 같 습 니 다.
  • interval: 백 엔 드 에 보 내 는 건강 검진 가방 의 간격.
  • fall (fall count): 연속 실패 횟수 가 fall 에 도달 하면count, 서버 는 다운 으로 여 겨 집 니 다.
  • rise (rise count): 연속 성공 횟수 가 rise 에 도달 하면count, 서버 는 up 으로 여 겨 집 니 다.
  • timeout: 백 엔 드 건강 요청 시간 초과.
  • default_down: 초기 서버 의 상 태 를 설정 합 니 다. true 라면 기본 값 은 다운 입 니 다. false 라면 up 입 니 다.기본 값 은 true 입 니 다. 즉, 처음에 서버 가 사용 할 수 없다 고 생각 했 기 때문에 건강 검진 가방 이 일정한 성공 횟수 에 이 르 러 야 건강 하 다 고 여 겨 집 니 다.
  • type: 건강 검진 가방 유형, 현재 다음 과 같은 다양한 유형 지원
  • tcp:
       tcp  ,      ,       。
    
    ssl_hello:
           SSL hello        SSL hello 。
    
    http:
      HTTP  ,                    。
    
    mysql:  mysql     ,        greeting          。
    
    ajp:
         AJP   Cping ,    Cpong          。
    
    port:             。
                        ,        443800,     server           。
    

    check_http_expect_alive:
    check_http_expect_alive 는 능 동적 건강 검진 시 HTTP 회복 성공 상 태 를 지정 합 니 다.
    Syntax: check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ]
    Default: http_2xx | http_3xx
    

    check_http_send:
    check_http_send 설정 http 건강 검진 패키지 에서 보 낸 요청 내용
    전송 데 이 터 량 을 줄 이기 위해 서 는 'HEAD' 방법 을 추천 합 니 다.긴 연결 로 건강 검진 을 할 때 이 명령 에 keep - alive 요청 헤드 를 추가 해 야 합 니 다. 예 를 들 어 "HEAD / HTTP / 1.1 \ \ rConnection: keep - alive \ r \ r".또한 'GET' 방법 을 사용 한 경우 uri 의 size 를 요청 하 는 것 은 1 개의 interval 에서 전송 이 완료 되 지 않도록 해 야 합 니 다. 그렇지 않 으 면 건강 검진 모듈 에 의 해 백 엔 드 서버 나 네트워크 이상 으로 간 주 될 수 있 습 니 다.
    Syntax: check_http_send http_packet
    Default: "GET / HTTP/1.0\r
    \r
    "

    전체 예시
    전체 예 는 다음 과 같다.
    http {
         
        upstream cluster1 {
         
            # simple round-robin
            server 192.168.0.1:80;
            server 192.168.0.2:80;
            check interval=3000 rise=2 fall=5 timeout=1000 type=http;
            check_http_send "HEAD / HTTP/1.0\r
    \r
    "
    ; check_http_expect_alive http_2xx http_3xx; } upstream cluster2 { # simple round-robin server 192.168.0.3:80; server 192.168.0.4:80; check interval=3000 rise=2 fall=5 timeout=1000 type=http; check_keepalive_requests 100; check_http_send "HEAD / HTTP/1.1\r
    Connection: keep-alive\r
    \r
    "
    ; check_http_expect_alive http_2xx http_3xx; } server { listen 80; location /1 { proxy_pass http://cluster1; } location /2 { proxy_pass http://cluster2; } location /status { check_status; access_log off; allow SOME.IP.ADD.RESS; deny all; } } }

    좋은 웹페이지 즐겨찾기