Nginx 실전 | Nginx 건강 검진
서비스 관리의 중요 한 임 무 는 서비스 노드 의 변경 을 감지 하고 서비스 자동 등록 과 이상 노드 의 자동 제 거 를 완성 하 는 것 이다.이 는 서비스 관리 플랫폼 이 서비스 노드 의 건강 상 태 를 신속 하고 정확하게 감지 할 수 있어 야 한다.
방안 개술
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 필드 의 매개 변 수 는 다음 과 같 습 니 다.
tcp:
tcp , , 。
ssl_hello:
SSL hello SSL hello 。
http:
HTTP , 。
mysql: mysql , greeting 。
ajp:
AJP Cping , Cpong 。
port: 。
, 443 , 80 。
0, 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;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.