Nginx 구현 스케줄 링 기능

1  개술
본문 은 ngx 를 소개 합 니 다.http_upstream_module 모듈 과 ngxstream_core_module 모듈 이 두 모듈 은 nginx 의 스케줄 링 기능 을 실현 합 니 다.nginx 는 proxy 기능 을 통 해 서로 다른 내용 의 접근 을 해당 하 는 기계 에 배치 할 수 있 습 니 다.응용 급 스케줄 링 을 실 현 했 습 니 다. 관련 내용 은 블 로그 'Nginx' 를 참조 하 십시오.  그것.  프 록 시 기능 구현
2  ngx_http_upstream_모듈 모듈
 이 모듈 은 여러 서버 를 서버 그룹 으로 정의 하 는 데 사용 되 며 proxypass,fastcgi_pass 등 명령 을 참조 합 니 다. nginx 에 proxy 가 설정 되 어 있 으 면 주의 하 십시오.cache. 그러면 방문 한 자원 이 nginx 에 캐 시 되 어 있 으 면 배경 서버 에 전송 요청 을 하지 않 고 클 라 이언 트 에 게 캐 시 를 되 돌려 주지 않 으 며 같은 방문 결 과 를 얻 을 수 있 습 니 다.
.1、upstream 
upstream  name { ... }
백 엔 드 서버 그룹 을 정의 하면 새로운 컨 텍스트 를 도입 합 니 다. 기본 스 케 쥴 링 알고리즘 은 wrr 입 니 다.
Context: http
upstream httpdsrvs{
server ...
server...
...
}

.2、server
server  address [parameters];
upstream 컨 텍스트 에서 server 구성원 및 관련 매개 변수;Context:upstream
address 의 표시 형식:
unix:/PATH/TO/SOME_SOCK_FILE
IP[:PORT]
HOSTNAME[:PORT]
parameters:
         weight = number 가중치, 기본 값 은 1 입 니 다.
         max_conns 연결 백 엔 드 경보기 최대 동시 다발 활동 연결 수, 1.11.5 후 지원
max_fails = number 실패 시도 최대 횟수;지정 한 횟수 를 초과 하면 server 는 사용 할 수 없 음 으로 표 시 됩 니 다. 기본 값 은 1 입 니 다.
fail_timeout = time 백 엔 드 서버 가 사용 할 수 없 는 상태 로 표 시 된 연결 시간 초과, 기본 10s
backup 은 서버 를 "예비" 로 표시 합 니 다. 즉, 모든 서버 가 사용 할 수 없 을 때 만 사용 합 니 다. sorry server 에 해당 합 니 다. 사용자 에 게 알려 줍 니 다. 여기 backup 은 80 포트 를 사용 하지 말고 다른 가상 호스트 로 sorry server 를 충당 합 니 다. 예 를 들 어 포트 8000 을 다시 엽 니 다.
다운 은 "사용 불가" 로 표시 하고 ip 에 맞 춥 니 다.hash 사용, 그 레이스 케 일 발표, 그 레이스 케 일 발표, 분할 발표 온라인 을 말 합 니 다.
.3、ip_hash
원본 주소 hash 스케줄 링 방법
원본 주소 에 따라 같은 원본 의 클 라 이언 트 를 같은 호스트 로 예약 합 니 다.
.4、least_conn
최소 연결 스케줄 링 알고리즘, server 가 서로 다른 가중치 가 있 을 때 wlc 이 며, 모든 백 엔 드 호스트 연결 수가 같 을 때 wrr 를 사용 하여 긴 연결 에 적용 합 니 다.
.5、hash 
hash   key [consistent] 는 지정 한 key 의 hash 표를 기반 으로 요청 에 대한 스케줄 링 을 실현 합 니 다. 이 키 는 텍스트, 변수 또는 양자 조합 을 직접 할 수 있 습 니 다.
역할: 요청 을 분류 합 니 다. 같은 종류의 요청 은 같은 upstream server 로 보 냅 니 다. consistent 인 자 를 사용 하여 ketama 일치 성 hash 알고리즘 을 사용 합 니 다. 백 엔 드 가 Cache 서버 (예 를 들 어 varnish) 일 때 사용 합 니 다.
hash $request_uri  consistent; #그 중에서 consistent 일치 성 hash
hash $remote_addr;
.6、keepalive 연결 수 N;
keepalive n;
모든 워 커 프로 세 스 를 위 한 남 은 긴 연결 수량 은 nginx 포트 를 절약 하고 연결 관리 소 모 를 줄 일 수 있 습 니 다.
.7、health_check 
health_check [parameters];
건강 상태 검사 메커니즘;location 컨 텍스트 에 만 사용 가능
상용 매개 변수:
interval = time 검 측 주파수, 기본 값 5 초
fails = number: 서버 가 사용 할 수 없 는 실패 검출 횟수 를 판정 합 니 다.기본 값 1 회
passes = number: 서버 가 사용 할 수 있 는 실패 검출 횟수 를 판정 합 니 다.기본 값 1 회
         uri = uri: 건강 상태 검사 테스트 목표 uri;기본 값 은 /
         match = NAME: 건강 상태 검사 결과 평 가 는 여기에서 지정 한 match 설정 블록 을 호출 합 니 다.
         주의: nginxplus 만 유효 합 니 다. nginxplus 는 상업 판 이 므 로 비용 을 지불해 야 합 니 다.
.8  match
match name { ... }
backendserver 에 대해 건강 상태 검 사 를 할 때 결과 판단 체 제 를 정의 합 니 다.http 컨 텍스트 에 만 사용 가능
자주 사용 하 는 인자:
status  code [code...]: 원 하 는 응답 상태 코드
header HEADER [operator value]: 응답 첫 번 째 부분 이 있 기 를 기대 하고 원 하 는 응답 첫 번 째 부분의 값 을 비교 연산 자 와 값 을 바탕 으로 비교 할 수 있 습 니 다.
body: 메시지 에 응답 하 기 를 바 라 는 주체 부분 에 있어 야 할 내용
주의: nginx plus 에 만 유효 합 니 다.
예시
http 설정 단 은 다음 과 같 습 니 다.
vim  /etc/nginx/nginx.conf
http {
......
    upstream websrvs {
        server 172.18.50.61:80 weight=1;
        #server 172.18.50.61:80 weight=1 down;
        server 172.18.50.65:80 weight=2;
        server 127.0.0.1:8000 backup;
        #ip_hash;
        #least_conn;
        #hash $request_uri;
            } 
}

server 설정 단 은 다음 과 같 습 니 다.
    location / { 
        proxy_pass http://websrvs;
   }

3  ngx_stream_core_모듈 모듈
 TCP, UDP (1.9.13), UNIX - domain sockets 기반 데이터 흐름 을 에이전트 로 구현 합 니 다.전송 층 에서 작 동 하 는 역방향 에이전트 나 스케줄 러 입 니 다. http 설정 세그먼트 와 평행 으로 설정 되 어 있 습 니 다.
.1  proxy_pass
 proxy_pass  address;백 엔 드 서버 주소 지정
.2  proxy_timeout
proxy_timeout  timeout;수많은 전송 시 연결 상 태 를 유지 하 는 시간 초과, 기본 값 은 10m 입 니 다.
.3 proxy_connect_timeout
proxy_connect_timeout  time;nginx 와 프 록 시 서버 가 연결 을 시도 하 는 시간 초과 설정, 기본 값 은 60s 입 니 다.
4  문법 서식
.4.1、stream{ ... }
stream 관련 서비스 정의 하기;Context:main
stream {
upstream telnetsrvs{
server 192.168.22.2:23; 
server 192.168.22.3:23; 
least_conn;
}
server {
listen 10.1.0.6:23;
proxy_pass  telnetsrvs;
}
}

.4.2、listen
listen address:port [ssl] [udp][proxy_protocol]  [backlog=number] [bind][ipv6only=on|off] [reuseport] [so_keepalive=on|off [keepidle]:[keepintvl]:[keepcnt]];

5  예시
vim  /etc/nginx/nginx.conf
stream {
upstream telnetsrvs {
    server 172.18.50.61:23;
    server 172.18.50.75:23;
    least_conn;
        }
server {
    listen  2323; #  ,                     , 23,       
proxy_pass telnetsrvs;
proxy_timeout 60s;
proxy_connect_timeout10s;
        }
}

좋은 웹페이지 즐겨찾기