Nginx (4) --- 여러 서버 간 부하 균형

5669 단어 nginx
Nginx 는 최근 몇 년 동안 비교적 핫 한 역방향 프 록 시 서버 로 서 목적 호스트 에 설치 되 어 있 으 며 주로 클 라 이언 트 의 요청 을 전달 하 는 데 사 용 됩 니 다. 배경 에는 여러 개의 http 서버 가 서 비 스 를 제공 합 니 다. nginx 의 기능 은 바로 요청 을 뒤의 서버 에 전달 하고 어떤 대상 호스트 가 이전 요청 을 처리 할 지 결정 하 는 것 입 니 다.
1. Nginx 역방향 에이전트
역방향 프 록 시 (Reverse Proxy) 방식 은 프 록 시 서버 로 인터넷 의 연결 요청 을 받 은 후 내부 네트워크 에 있 는 서버 에 요청 을 전달 하고 서버 에서 얻 은 결 과 를 인터넷 에서 연결 을 요청 한 클 라 이언 트 에 게 되 돌려 주 는 것 을 말한다.
쉽게 말 하면 실제 서버 가 외부 네트워크 에 직접 접근 할 수 없고 접근 하려 면 프 록 시 를 통 해 야 합 니 다.
nginx 의 프 록 시 과정 은 nginx 에 요청 을 보 낸 다음 에 요청 을 백 엔 드 웹 서버 에 전달 하 는 것 입 니 다. 백 엔 드 서버 처리 가 끝 난 후에 결 과 를 nginx 에 보 내 고 nginx 는 결 과 를 클 라 이언 트 에 보 냅 니 다.백 엔 드 서버 는 원 격 으로 도 로 컬 에서 도 사용 할 수 있 고 nginx 서버 내부 에서 정의 하 는 다른 가상 호스트 일 수도 있 습 니 다.
nginx 를 대리 로 사용 하 는 목적 중 하 나 는 기초 구조의 규 모 를 확장 하 는 것 이다.
2. Nginx 부하 균형
만약 서 비 스 를 한 대의 웹 서버 에 만 발표한다 면, 첫째, 방 문 량 이 급증 하면 서버 가 끊 길 수도 있 고, 둘째, 웹 서버 가 끊 기거 나 정전 이 되 어 접근 할 수 없 게 될 것 이다.따라서 서 비 스 를 여러 대의 웹 서버 에 발표 하여 분류 하고 한 대의 고장 이 서비스 가 범위 에 있 지 않도록 보장 할 수 있 습 니 다.
nginx 는 대량의 병렬 연결 을 처리 할 수 있 습 니 다. 요청 이 도착 하면 nginx 는 임의의 수량의 배경 서버 에 전송 하여 처리 할 수 있 습 니 다. 이것 은 부하 균형 을 전체 클 러 스 터 에 분산 시 키 는 것 과 같 습 니 다.
3. Nginx 부하 균형 알고리즘
원본 주소 해시 법: 클 라 이언 트 의 IP 주 소 를 가 져 오 는 데 따라 해시 함수 로 계산 하여 하나의 수 치 를 얻 을 수 있 습 니 다. 이 수치 로 서버 목록 의 크기 를 모드 로 연산 하면 고객 센터 에서 서버 에 접근 할 번호 입 니 다.원본 주소 해시 법 으로 부하 균형 을 이 루 고 같은 IP 주소 의 클 라 이언 트 는 백 엔 드 서버 목록 이 변 하지 않 을 때 매번 같은 백 엔 드 서버 에 매 핑 되 어 접근 합 니 다.
폴 링 법: 요청 을 백 엔 드 서버 에 순서대로 배정 합 니 다. 백 엔 드 의 모든 서버 를 균형 있 게 대하 고 서버 의 실제 연결 수 와 현재 시스템 부하 에 관심 이 없습니다.
무 작위 법: 시스템 의 무 작위 알고리즘 을 통 해 백 엔 드 서버 의 목록 크기 에 따라 그 중의 한 서버 를 무 작위 로 선택 하여 접근 합 니 다.
가중 폴 링 법: 서로 다른 백 엔 드 서버 는 기계 의 설정 이 현재 시스템 의 부하 와 다 를 수 있 기 때문에 그들의 항 압 능력 도 다르다.배치 가 높 고 부하 가 낮은 기계 에 더 높 은 가중치 를 설정 하여 더 많은 것 을 처리 하도록 합 니 다.한편, 낮 고 부하 가 높 은 기 계 를 배치 하여 비교적 낮은 가중치 를 분배 하고 시스템 부하 도 낮 추 며 가중 폴 링 은 이 문 제 를 잘 처리 하고 요청 순서 에 따라 가중치 에 따라 백 엔 드 로 분배 할 수 있다.
가중 랜 덤 법: 가중 폴 링 법 과 마찬가지 로 가중 랜 덤 법 도 백 엔 드 기계 의 배치 에 따라 시스템 의 부하 분배 가 서로 다른 가중치 이다.순서 가 아 닌 무 작위 로 백 엔 드 서버 를 요청 하 는 것 이 다르다.
최소 연결 수법: 백 엔 드 서버 의 설정 이 다 르 기 때문에 요청 처리 가 빠 르 고 느 립 니 다. 최소 연결 수법 은 백 엔 드 서버 의 현재 연결 상황 에 따라 현재 적 체 된 연결 수가 가장 적은 서버 를 동적 으로 선택 하여 현재 요청 을 처리 하고 백 엔 드 서비스의 이용 효율 을 최대한 향상 시 킵 니 다.모든 서버 로 합 리 적 으로 분류 하 는 것 을 책임 집 니 다.
	##upstream     ,      ##
    #    1:  .                      ,
    #           ,         ,         
    upstream webhost {
        server 172.36.25.256:6666 ;
        server 172.36.25.257:6666 ;
    }
    #    2:weight(  ).            .             
    upstream webhost {
        server 172.36.25.256:6666 weight=2;
        server 172.36.25.257:6666 weight=3;
    }
    #    3:ip_hash.        IP hash    ,       IP              ,
    #            session    
    upstream webhost {
        ip_hash;
        server 172.36.25.256:6666 ;
        server 172.36.25.257:6666 ;
    }
    #    4:url_hash(        ).      url hash       ,
    #   url           ,                 .
    #Nginx      url_hash ,            ,    Nginx  hash   
    upstream webhost {
        server 172.36.25.256:6666 ;
        server 172.36.25.257:6666 ;
        hash $request_uri;
    }
    #    5:fair(        ).                  .
    #                            ,                    ,
    #          .Nginx      fair ,            ,    Nginx upstream_fair  
    #

3. Nginx 부하 균형 설정
배경:
두 대의 웹 서버 중 하 나 는 웹 서버 이자 ngnx 서버 입 니 다.
172.36.25.256 웹 서버, ngnx 서버 172.36.25.257 웹 서버
nginx. conf 파일 찾기

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	
	upstream webhost {
       server 172.36.25.256:8080 weight=2;
       server 172.36.25.257:8080 weight=2;
   }

    server {
        listen       8099;
        server_name  XXXX;
		
		location /{
			proxy_pass http://webhost;
			proxy_set_header Host $host:8099;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_http_version 1.1;  
			proxy_set_header Upgrade $http_upgrade;  
			proxy_set_header Connection "Upgrade";
			client_max_body_size    100m; 
        }
		
		location /web{
			proxy_pass http://webhost/framework;
			proxy_set_header Host $host:8099;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_http_version 1.1;  
			proxy_set_header Upgrade $http_upgrade;  
			proxy_set_header Connection "Upgrade";
			client_max_body_size    100m; 
        }		 
		
		location /images {
			proxy_pass http://webhost/images;
			proxy_set_header Host $host:8099;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_http_version 1.1;  
			proxy_set_header Upgrade $http_upgrade;  
			proxy_set_header Connection "Upgrade";
			client_max_body_size    100m; 
        }
		
 
    }
        
}


입력: http: XXXX: 8099 / web 접근 가능
이 글 이 도움 이 된다 고 생각 하 시 면 프로필 오른쪽 에 있 는 관심 버튼 을 눌 러 주세요. 감사합니다!
기술 은 교류 에서 진보 하고 지식 은 공유 에서 전파 된다.

좋은 웹페이지 즐겨찾기