Nginx의 Tengine 활성 상태 확인 해석

목차

기본 소개

설치 단계

지시문 구성(ngx_http_upstream_check_module)

예시 구성

지침 


기본 소개

Tengine은 본질적으로 nginx이고 사용법은 nginx와 완전히 동일하며 Taobao 팀에서 2차 개발한 것입니다. Nginx를 기반으로 대규모 트래픽 웹사이트의 요구 사항을 충족하기 위해 많은 고급 기능을 추가합니다. Tengine의 성능과 안정성은 Taobao, Tmall Mall 등 대형 웹사이트에서 잘 테스트되었습니다. 궁극적인 목표는 효율적이고 안정적이며 안전하고 사용하기 쉬운 웹 플랫폼을 만드는 것입니다.

공식 홈페이지: http://tengine.taobao.org/

  • DSO(동적 모듈 로딩) 지원. 모듈을 추가할 때 더 이상 전체 Tengine을 다시 컴파일할 필요가 없습니다.
  • SO_REUSEPORT 옵션을 지원하며 연결 ​​성능이 공식 nginx보다 3배 향상되었습니다.
  • SPDY v3 프로토콜을 지원하고 동일한 포트에서 SPDY 요청과 HTTP 요청을 자동으로 감지합니다.
  • HTTP 백엔드 서버 또는 FastCGI 서버에 스트리밍 업로드하면 시스템의 I/O 부담이 크게 줄어듭니다.
  •  일관된 해시 모듈 및 세션 유지 관리 모듈을 포함한 보다 강력한 로드 밸런싱 기능은 백엔드 서버에서 활성 상태 확인을 수행하고, 서버 상태에 따라 자동으로 온라인 및 오프라인으로 전환하고, 업스트림에 나타나는 도메인 이름을 동적으로 확인할 수 있습니다.
  • 입력 필터 메커니즘 지원. 이 메커니즘을 사용하면 웹 애플리케이션 방화벽을 작성하는 것이 더 편리합니다.
  • 백엔드 실패 시 프록시, memcached, fastcgi, scgi 및 uwsgi에 대한 재시도 횟수 설정을 지원합니다.
  • 동적 스크립팅 언어 Lua 지원. 확장 기능은 매우 효율적이고 간단합니다.
  • 파이프 및 syslog(로컬 및 원격) 로그와 로그 샘플링을 지원합니다.
  • 지정된 키워드(도메인 이름, URL 등)를 통해 Tengine 실행 상태 수집을 지원합니다.
  • 여러 CSS 및 JavaScript 파일에 대한 액세스 요청을 하나의 요청으로 결합합니다.
  • 페이지 크기를 줄이기 위해 공백 문자와 주석을 자동으로 제거합니다.

설치 단계

1 nginx-1.20.2 및 nginx_upstream_check_module-0.3.0.tar.gz를 다운로드합니다. 

2 tengine 버전 웹 페이지를 열고 check_1.20.1+.patch를 선택한 후 Linux에 복사합니다.

cd /root
vim path	#复制到这里

3 패치를 실행하여 nginx 소스 코드 수정

cd nginx-1.20.2
yum install -y patch
patch -p1 < /root/path

4 새로운 nginx 컴파일

./configure --prefix=/usr/local/nginx20 --add-module=/root/nginx_upstream_check_module-0.3.0
make && make install

5가지 구성

      upstream backend {
    
           server 192.168.111.101:8080;
           server 192.168.111.102:8080;
           check interval=3000 rise=2 fall=5 timeout=1000 type=http;
               check_http_send "HEAD / HTTP/1.0\r\n\r\n";
               check_http_expect_alive http_2xx http_3xx;
   	  }

    server {
    	listen 80;
    	server_name localhost;
    
   		location /status {
                check_status;
                access_log off;
        }


        location / {
        	 proxy_pass http://backend;
             root   html;
        }
    }

6 nginx1.20을 시작하고 액세스합니다.

/usr/local/nginx20/sbin/nginx -c /usr/local/nginx20/conf/nginx.conf

브라우저 액세스: nginx ip/상태

지시문 구성(ngx_http_upstream_check_module)

예시 구성

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\n\r\n";
        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\nConnection: keep-alive\r\n\r\n";
        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;
        }
    }
}

지침 

구문: check interval=milliseconds [fall=count] [rise=count] [timeout=milliseconds] [default_down=true|false] [type=tcp|http|ssl_hello|mysql|ajp] [port=check_port]
기본값: 구성 매개변수가 없는 경우 기본값은 다음과 같습니다. interval=30000 fall=5 rise=2 timeout=1000 default_down=true type=tcp
컨텍스트:upstream

이 명령은 백엔드 서버의 상태 확인 기능을 활성화합니다.

명령 뒤의 매개변수의 의미는 다음과 같습니다.

  • interval: 백엔드로 전송되는 상태 확인 패킷의 간격입니다.
  • fall(fall_count): 연속 실패 횟수가 fall_count에 도달하면 서버가 다운된 것으로 간주됩니다.
  • rise(rise_count): 연속 성공 횟수가 상승_count에 도달하면 서버가 가동된 것으로 간주됩니다.
  • timeout: 백엔드 상태 요청 시간 초과입니다.
  • default_down: 서버의 초기 상태를 설정합니다. true이면 기본적으로 Down 상태이고, False이면 Up 상태입니다. 기본값은 true입니다. 즉, 처음에는 서버를 사용할 수 없는 것으로 간주하고 상태 확인 패키지가 특정 성공 횟수에 도달할 때까지 정상으로 간주되지 않습니다.
  • type: 상태 확인 패키지 유형이 이제 다음 유형을 지원합니다.
    • tcp: 단순 tcp 연결이며, 연결이 성공하면 백엔드가 정상이라는 의미입니다.
    • ssl_hello: 초기 SSL hello 패킷을 보내고 서버의 SSL hello 패킷을 수락합니다.
    • http: HTTP 요청을 보내고 백엔드의 응답 패킷 상태를 기반으로 백엔드가 살아 있는지 확인합니다.
    • mysql: mysql 서버에 접속하고, 서버의 Greeting 패키지를 받아 백엔드가 살아 있는지 확인한다.
    • ajp: AJP 프로토콜의 Cping 패킷을 백엔드로 보내고, Cpong 패킷을 수신하여 백엔드가 살아 있는지 확인합니다.
  • port: 백엔드 서버의 검사 포트를 지정합니다. 실제 서비스와 다른 백엔드 서버의 포트를 지정할 수 있습니다. 예를 들어 백엔드는 애플리케이션에 포트 443을 제공합니다. 포트 80의 상태를 확인하여 백엔드의 상태를 확인할 수 있습니다. 기본값은 0입니다. 이는 포트가 실제 서비스를 제공하는 백엔드 서버와 동일함을 의미합니다. 이 옵션은 Tengine-1.4.0에 나타납니다.

구문: check_keepalive_requests request_num
기본값: 1
컨텍스트:upstream

이 명령은 연결을 통해 전송되는 요청 수를 구성할 수 있으며 기본값은 1이며, 이는 Tengine이 하나의 요청을 완료한 후 연결을 닫는다는 의미입니다.


구문: check_http_send http_packet
기본값: "GET / HTTP/1.0\r\n\r\n"
컨텍스트:upstream

이 지시문은 http 상태 확인 패키지에서 보낸 요청 콘텐츠를 구성할 수 있습니다. 전송되는 데이터의 양을 줄이기 위해 다음과 같은 방법이 권장됩니다 "HEAD".

상태 확인을 위해 긴 연결을 사용하는 경우 이 명령에 다음과 같은 연결 유지 요청 헤더를 추가해야 합니다 "HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n".
동시에, "GET"이 방법을 사용할 때 요청 URI의 크기는 1 이내에 전송이 완료될 수 있도록 너무 커서는 안 됩니다 interval. 그렇지 않으면 상태 확인 모듈에 의해 백엔드 서버 또는 네트워크 이상으로 간주됩니다.


구문: check_http_expect_alive [ http_2xx | http_3xx | http_4xx | http_5xx ]
기본값: http_2xx | http_3xx
컨텍스트:upstream

이 지시어는 HTTP 응답의 성공 상태를 지정하며 기본적으로 2XX 및 3XX의 상태는 정상으로 간주됩니다.


구문: check_shm_size size
기본값: 1M
컨텍스트:http

모든 백엔드 서버 상태 점검 상태는 공유 메모리에 저장되며, 이 명령어를 통해 공유 메모리의 크기를 설정할 수 있습니다. 기본값은 1M이며, 서버가 1,000대를 초과하고 구성 중 오류가 발생하는 경우 메모리 크기를 확장해야 할 수 있습니다.


구문: check_status [html|csv|json]
기본값: check_status html
컨텍스트:location

서버의 상태 페이지를 표시합니다. 이 지시어는 http 블록에서 구성되어야 합니다.

Tengine-1.4.0 이후에는 표시되는 페이지의 형식을 구성할 수 있습니다. 지원되는 형식은 html, csv, 입니다 json. 기본 유형은 입니다 html.

요청 매개변수를 통해 형식을 지정할 수도 있습니다. '/status'가 상태 페이지의 URL이라고 가정합니다. 매개변수는 format다음과 같이 페이지 형식을 변경합니다.

/status?format=html
/상태?형식=csv
/status?format=json

동시에 다음과 같은 상태 매개변수를 통해 동일한 서버 상태 목록을 얻을 수도 있습니다.

/status?format=html&status=다운
/status?format=csv&status=up

Guess you like

Origin blog.csdn.net/m0_62436868/article/details/133235685