Nginx 학습 총화 (6) - 부하 균형
7659 단어 nginx
proxy
와 upstream
모듈 의 사용 을 결합 하여 Nginx 의 부하 균형 을 실현 하 는 것 을 보 여 주 었 다.Nginx 홈 페이지 에서
upstream
모듈 에 대한 설명: ngx_http_upstream_module
모듈 은 proxy_pass
, fastcgi_pass
, uwsgi_pass
, scgi_pass
명령 으로 인 용 될 서버 그룹 을 정의 하 는 데 사 용 됩 니 다.Context:http
준비 작업
VMware 에 3 대의 서버 (centos 7 x64) 를 준비 하고 각각 Nginx (1.12.0) 를 설치 했다. 이들 은 서로
memcached_pass
통 할 수 있 고 3 대의 서버 IP 는 각각 다음 과 같다.Welcome to 192.168.4.221 !
Welcome to 192.168.4.222 !
역방향 에이전트 설정
Nginx 에서 역방향 에이 전 트 를 설정 합 니 다. 주로
ping
모듈 과 proxy
모듈 의 설정 입 니 다.프 록 시 C 의 설정 을 다음 과 같이 변경 합 니 다.upstream jochen {
server 192.168.4.221:80;
server 192.168.4.222:80;
}
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
proxy_pass http://jochen;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
설정 이 완료 되면 역방향 프 록 시 C, 브 라 우 저 접근
upstream
을 다시 시작 합 니 다.브 라 우 저 새로 고침 페이지:
방문 한 내용 이 웹 서버 A 나 B 가 제공 한 내용 임 을 알 수 있 습 니 다. 이 는 우리 의 역방향 에이전트 가 설정 에 성 공 했 음 을 나타 냅 니 다.그리고 응답 내용 은 웹 서버 A, B 가 차례로 돌아 가면 서 제공한다.
부하 균형 을 이루다
부하 균형 은 역방향 대리 기술 의 운용 이다.클 라 이언 트 가 서버 에 접근 하면 서버 는 요청 을 다른 여러 개의 다른 서버 (즉, 역방향 프 록 시) 에 나 누 어 주 고 하나의 서버 가 대량의 요청 을 처리 하 는 압력 을 줄 이 며 붕괴 되 지 않 습 니 다. 그림 과 같 습 니 다.
위의 설정 에서 저 희 는
http://192.168.4.223
의 배분 방식 을 설정 하지 않 았 습 니 다. 기본 적 인 상황 에서 이것 은 폴 링 방식 을 사용 할 것 입 니 다. 즉, 모든 요청 이 시간 에 따라 서로 다른 백 엔 드 서버 에 배정 되 는 것 입 니 다.백 엔 드 서버 다운 이 떨 어 지면 자동 으로 제거 할 수 있 습 니 다.부하 균형 을 이 루 는 핵심 은 다양한 백 엔 드 서버 에 요청 을 합 리 적 으로 배분 하 는 것 이다.실제 생활 에서 서로 다른 서버 의 CPU, 메모리, 하 드 디스크, 네트워크 대역 폭 의 성능 이 다 르 기 때문에 각자 의 처리 능력 이 다르다.특정한 부하 균형 스 케 쥴 링 알고리즘 을 사용 하여 서로 다른 백 엔 드 서버 에 합 리 적 으로 배분 하여 자원 사용 을 최적화 하고 삼투 율 을 최대 화 하 며 응답 시간 을 최소 화 하 는 동시에 과부하 의 목적 을 달성 해 야 합 니 다.
Nginx 에서
upstream
의 분배 방식 은 5 가지 가 있 는데 각각:1. 폴 링 (기본 값)
모든 요청 은 시간 순서에 따라 서로 다른 백 엔 드 서버 에 하나씩 배정 되 며, 백 엔 드 서버 다운 이 떨 어 지면 자동 으로 제거 할 수 있 습 니 다.예:
upstream jochen {
server 192.168.4.221:80;
server 192.168.4.222:80;
}
2. weight
폴 링 확률 을 지정 하고 weight 와 방문 비율 이 정비례 하여 백 엔 드 서버 의 성능 이 고 르 지 않 은 경우 에 사용 합 니 다.예:
upstream jochen {
server 192.168.4.221:80 weight=10;
server 192.168.4.222:80 weight=20;
}
3. ip_hash
모든 요청 은 ip 에 접근 하 는 hash 결과 에 따라 분 배 됩 니 다. 모든 방문객 이 백 엔 드 서버 에 고정 적 으로 접근 하면 session 문 제 를 해결 할 수 있 습 니 다.예:
upstream jochen {
server 192.168.4.221:80;
server 192.168.4.222:80;
ip_hash;
}
4. fair (제3자)
백 엔 드 서버 의 응답 시간 에 따라 요청 을 분배 하고 응답 시간 이 짧 은 우선 분 배 를 합 니 다.이것 은 제3자 모듈 로 추가 설치 가 필요 합 니 다.예:
upstream jochen {
server 192.168.4.221:80;
server 192.168.4.222:80;
fair;
}
5. url_hash (제3자)
url 에 접근 한 hash 결과 에 따라 요청 을 할당 합 니 다. 모든 url 을 같은 백 엔 드 서버 로 지정 하고 백 엔 드 서버 가 캐 시 일 때 유효 합 니 다.이것 은 제3자 모듈 로 추가 설치 가 필요 합 니 다.예:
upstream jochen {
server 192.168.4.221:80;
server 192.168.4.222:80;
hash $request_uri;
hash_method crc32;
}
upstream
모듈 에서 upstream
명령 을 통 해 서버 의 주소 와 기타 인 자 를 정의 할 수 있 습 니 다.주 소 는 도 메 인 이름 이나 IP 주소 (포트 선택 가능, 기본 값 80) 또는 '유 닉 스' 를 접두사 로 하 는 소켓 경 로 를 지정 할 수 있 습 니 다.Context: upstream
자주 사용 하 는 매개 변 수 는:
server
서버 를 영구적 으로 사용 할 수 없 음 으로 표시 down
서버 의 가중치 설정, 기본 값 은 1 weight
서버 를 백업 서버 로 표시 합 니 다.홈 서버 가 사용 할 수 없 을 때 요청 이 전 달 됩 니 다 backup
요청 실패 횟수 를 허용 합 니 다. 기본 값 은 1 max_fails
은 fail_timeout
번 의 실 패 를 겪 은 뒤 서 비 스 를 중단 하 는 시간 을 보 냈 다.max_fails
max_fails
와 함께 사용 가능 upstream jochen {
server backend1.example.com weight=5;
server 192.168.4.222:80 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
server backup1.example.com backup;
}
건강 검진
Nginx 자 체 는 부하 균형 백 엔 드 노드 건강 검진 을 위 한 모듈 이 없고
fail_timeout
부하 균형 건강 검진 을 위 한 제3자 모듈 로 타 오 바 오의 야 오 웨 이 빈 대신 이 개발 해 백 엔 드 nginx_upstream_check_module
의 건강 상 태 를 점검 할 수 있다.server
모듈 은 nginx_upstream_check_module
상 태 를 지속 적 으로 검사 하 며, 어떤 server
이 사용 되 지 않 으 면 요청 이 이 server
에 전달 되 지 않 습 니 다.항목 주소:https://github.com/yaoweibin/... 。 다음은 부하 균형 건강 검사 가 있 는 nginx. conf 설정 입 니 다.
upstream jochen {
server 192.168.4.221:80 weight=5 max_fails=2 fail_timeout=30s;
server 192.168.4.222:80 weight=1 max_fails=2 fail_timeout=30s;
check interval=5000 rise=2 fall=3 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r
\r
";
check_http_expect_alive http_2xx http_3xx;
}
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
proxy_pass http://jochen;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /nginx-status {
stub_status;
access_log off;
allow 192.168.4.220;
deny all;
}
location /check-status {
check_status;
access_log off;
allow 192.168.4.220;
deny all;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
Nginx 설정 을 다시 시작 하면 error. log 로 그 는 다음 과 같은 정 보 를 볼 수 있 습 니 다.
server
모듈 이 정상적으로 실행 되 었 음 을 설명 합 니 다.2018/03/29 15:12:48 [error] 46931#46931: enable check peer: 192.168.4.221:80
2018/03/29 15:12:50 [error] 46931#46931: enable check peer: 192.168.4.222:80
동시에 방문
nginx_upstream_check_module
하면 다음 페이지 를 볼 수 있 습 니 다.위 설정 은 jochen 이 서버 그룹 에 있 는 모든 server 에 대해 5 초 에 한 번 씩 검 측 하고 2 번 정상 을 요청 하면 server 상 태 를 up 으로 표시 하고 3 번 검 측 에 실패 하면 server 상 태 를 다운 으로 표시 하 며 시간 초과 시간 은 1 초 입 니 다.
http://192.168.4.223/check-status
모듈 의 명령 상세 정보 참조https://github.com/yaoweibin/..., 상용 명령 설명 은 다음 과 같다.nginx_upstream_check_module
상류 서버 에 운행 상황 검 사 를 추가 하고 자주 사용 하 는 매개 변 수 는 다음 과 같다.check
백 엔 드 에 보 내 는 건강 검진 팩 의 간격 interval
연속 실패 횟수 fall
를 달성 하면 서버 는 다운 fall_count
연속 성공 횟수 rise
를 달성 하면 서버 는 up rise_count
백 엔 드 건강 요청 시간 초과 timeout
건강 검진 가방 의 유형, tcp, http, ajp, ssl 포함hello、mysql、fastcgi type
HTTP 모니터링 검사 패키지 가 보 내 는 요청 내용 을 설정 하고 전송 데 이 터 량 을 줄 이기 위해 HEAD 방법 을 추천 합 니 다.check_http_send
HTTP 회복 의 성공 상 태 를 지정 하고 기본적으로 2XX 와 3XX 의 상태 가 건강 하 다 고 생각 합 니 다.참고 글:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.