배 워 야 할 Nginx 지식 - 부하 균형 과 캐 시

8913 단어
운영 체제: CentOS - 7.8 nginx 버 전: 1.18.0 Tomcat 버 전: 9.0.36
지난 글 에서 우 리 는 Nginx 에 대해 간단 한 소 개 를 했 고 nginx 의 기본 설정 과 조작 도 배 웠 습 니 다. 오늘 우 리 는 Nginx 가 생산 에서 자주 사용 하 는 기능 부하 균형 과 캐 시 가속 을 배 울 것 입 니 다.지난 글 '배 워 야 할 Nginx 지식'
개념
1. OSI 7 층 네트워크 모델
OSI 7 층 네트워크 모델 은 국제 표준화 기구 (ISO) 가 제정 한 컴퓨터 나 통신 시스템 간 의 상호 연결 에 사용 되 는 표준 시스템 이다.
응용 층.네트워크 서비스 와 최종 사용자 의 인터페이스, 사용자 와 상호작용
응용 층 은 사용자 와 가장 가 까 운 층 으로 응용 층 은 사용자 에 게 상호작용 인 터 페 이 스 를 제공 하여 사용자 에 게 상호작용 서 비 스 를 제공한다.이 층 에서 자주 사용 되 는 프로 토 콜 은 HTTP, HTTPS, FTP, POP 3 등 이 있 습 니 다.
표현 층.데이터 의 표시, 안전, 압축
표현 층 은 데이터 형식 인 코딩 과 복호화 기능 을 제공 하여 요청 단 에서 보 낸 데이터 부터 응답 단 까지 식별 할 수 있 도록 합 니 다.
회화 계층.세 션 생 성, 관리, 소각
세 션 은 요청 에서 응답 을 받 아들 이 는 과정 사이 에 존재 합 니 다. 세 션 층 은 세 션 생 성, 유지, 소각 등 세 션 관리자 역할 을 합 니 다.
전송 계층.데 이 터 를 전송 하 는 프로 토 콜 포트 번호 와 흐름 제어 와 오류 검사 등 기능 을 정의 합 니 다.
전송 층 생 성 및 관리 단 에서 엔 드 로 의 연결, 데이터 전송 서 비 스 를 제공 합 니 다.전송 계층 에서 흔히 볼 수 있 는 프로 토 콜 은 TCP, UDP 프로 토 콜 입 니 다.
네트워크 계층.논리 주소 지정 을 하여 서로 다른 네트워크 간 의 경로 선택 을 실현 합 니 다.
네트워크 층 은 IP 층 이 라 고도 불 린 다. 네트워크 층 에서 IP 주 소 를 통 해 두 노드 간 의 연결 을 구축 하고 적당 한 경로 와 교환 노드 를 선택 하여 주소 에 따라 데 이 터 를 목적 의 운송 층 에 정확하게 전송 한다.
데이터 링크 계층.논리 적 연결 을 구축 하고 하드웨어 주소 찾기, 오류 검사, 미디어 접근 과 링크 관 리 를 제공 합 니 다.
데이터 링크 층 은 컴퓨터 MAC 주 소 를 제공 하고 통신 할 때 휴대 하 며 데이터 의 정확 한 배달 을 확보 하기 위해 MAC 주 소 를 검사 하여 요청 응답 의 신뢰성 을 확보 합 니 다.
물리 층.전송 매체
물리 층 은 말단 통신 과정의 물리 적 매체 로 실제 최종 신호 의 전송 은 모두 물리 층 을 통 해 이 루어 진다.상용 장 치 는 (각종 물리 장치) 집 선 기, 중계기, 모뎀, 네트워크, 쌍 교 선, 동 축 케이블 등 이 있 는데 이것들 은 모두 물리 층 의 전송 매체 이다.
2. 부하 균형
부하 균형 이란 부하 (작업 임무) 를 균형 있 게 하고 여러 작업 단원 에 나 누 어 운행 하 는 것 을 말한다. 인터넷 응용 에 서 는 요청 한 정보 에 따라 트 래 픽 을 어떻게 전달 할 것 인 가 를 결정 하 는 것 이다.
부하 균형 은 기 존의 네트워크 구 조 를 바탕 으로 저렴 하고 효과 적 이 며 투명 한 방법 으로 네트워크 설비 와 서버 의 대역 폭 을 확대 하고 스루풋 을 증가 하 며 네트워크 데이터 처리 능력 을 강화 하 며 네트워크 의 유연성 과 가용성 을 향상 시킨다.
OSI 7 층 네트워크 모델 을 토대 로 부하 균형 도 서로 다른 분류 가 있 는데 주로 다음 과 같은 몇 가지 가 있다
  • 2 층 부하: MAC 주 소 를 바탕 으로 가상 MAC 주 소 를 통 해 요청 을 받 은 다음 에 실제 MAC 주소 로 배정 합 니 다.
  • 3 층 부하: IP 주 소 를 바탕 으로 가상 IP 주 소 를 통 해 실제 IP 로 분배 합 니 다.
  • 4 층 부하: IP 와 포트 를 바탕 으로 가상 기기 의 IP + 포트 를 통 해 요청 을 받 은 다음 에 실제 서버 에 배분 한다. LVS 는 전형 적 인 4 층 부하 균형 응용
  • 이다.
  • 7 층 부하: 응용 정 보 를 바탕 으로 가상 호스트 이름 이나 URL 을 통 해 요청 을 받 은 다음 에 일부 규칙 에 따라 실제 서버 에 배분 한다. nginx 는 전형 적 인 7 층 부하 균형 응용
  • 이다.
    배치
    1. 부하 균형 전략
    폴 링
    폴 링 정책 에서 모든 상류 서버 가 접근 할 확률 이 일치 하고 일정한 순서에 따라 순서대로 요청 되 었 습 니 다.다음 예제 설정, hdh 100: 9001, hdh 100: 9002 와 hdh 100: 9003 대 tomcat 서버 가 순서대로 요청 되 었 습 니 다. 새로 고침 할 때마다 한 번 씩 전환 합 니 다.
    
    #  tomcat  
    upstream www.learn.com{
            server hdh100:9001;
            server hdh100:9002;
            server hdh100:9003;
    }
    
    #       
    server {
            listen 80;
            server_name www.learn.com;
    
            location / {
                    proxy_pass http://www.learn.com;
            }
    }
    
    

    가중 폴 링
    가중 폴 링 전략 에서 모든 상류 서버 가 배정 하 는 가중치 에 따라 처리 하 는 연결 수 도 다 르 고 가중치 가 클 수록 방문 하 는 횟수 가 많 습 니 다.다음 예제 설정, hdh 100: 9001, hdh 100: 9002 와 hdh 100: 9003 의 가중치 는 각각 1, 3, 5 이 고 가중치 가 클 수록 분 배 된 유량 이 많 습 니 다.
    
    #  tomcat  ,  weight      ,   weight ,     1
    upstream www.learn.com{
            server hdh100:9001 weight=1;
            server hdh100:9002 weight=3;
            server hdh100:9003 weight=5;
    }
    
    #       
    server {
            listen 80;
            server_name www.learn.com;
    
            location / {
                    proxy_pass http://www.learn.com;
            }
    }
    
    

    ip_hash
    ip_hash 는 사용자 의 ip 에 따라 hash 해시 요청 을 지정 한 상류 서버 에 할당 합 니 다.사용자 ip 에 변화 가 없 는 상황 에서 상류 서버 가 변경 되 지 않 았 을 때 사용자 의 여러 번 의 요청 은 같은 상류 서버 로 전 송 됩 니 다.
    그리고 ip 사용 중hash 균형 정책 을 담당 할 때 서버 한 대 를 임시로 삭제 하려 면 다운 매개 변 수 를 사용 하여 클 라 이언 트 IP 주소 의 현재 해시 값 을 유지 하도록 표시 해 야 합 니 다.
    
    upstream www.learn.com{
           ip_hash;
           
            server hdh100:9001 weight=1;
            server hdh100:9002 weight=3;
            server hdh100:9003 weight=5;
    }
    
    

    url_hash
    url_hash 정책 은 url 에 따라 hash 해시 요청 을 지정 한 상류 서버 에 할당 하 는 것 입 니 다.같은 url 은 상위 서버 가 변경 되 지 않 은 상태 에서 같은 서버 에 요청 합 니 다.
    
    upstream www.learn.com{
           hash $request_uri;
           
            server hdh100:9001 weight=1;
            server hdh100:9002 weight=3;
            server hdh100:9003 weight=5;
    }
    
    

    last_conn
    last_conn 현재 연결 수가 가장 적은 서버 에 데 이 터 를 나 누 어 주 는 정책
    
    upstream www.learn.com{
           least_conn;
           
            server hdh100:9001 weight=1;
            server hdh100:9002 weight=3;
            server hdh100:9003 weight=5;
    }
    
    
    

    2. 최적화 설정
    max_conns
    상류 서버 의 최대 연결 수 를 제한 합 니 다. 과부하 방지 에 사용 되 며 흐름 제한 역할 을 할 수 있 습 니 다. nginx 1.11.5 이전에 이 설정 은 상업 버 전의 nginx 에 만 사용 할 수 있 습 니 다. 기본 값 은 0 으로 제한 이 없 음 을 표시 합 니 다. 설정 은 다음 과 같 습 니 다.
    
    #       ,          max_conns
    upstream www.learn.com{
            server hdh100:9001 max_conns=200;
            server hdh100:9002 max_conns=200;
            server hdh100:9003 max_conns=200;
    }
    
    

    slow_start
    천천히 시작 합 니 다. 상위 서버 에 가중치 를 설정 할 때 slow 를 설정 합 니 다.start 의 경우 이 서비스의 가중치 는 0 이 설정 한 시간 내 에 설정 한 가중치 로 점점 증가 하 는 것 입 니 다. 이 설정 은 현재 비 즈 니스 버 전의 nginx 에서 유효 합 니 다.
  • slow_start 는 hash 와 random load balancing
  • 이 적용 되 지 않 습 니 다.
  • 상류 서버 가 한 대 밖 에 없 는 경우 이 매개 변수 도 유효 하지 않 습 니 다
  • 다음 설정 은 hdh 100: 9003 이 서 비 스 를 표시 합 니 다. 시작 후 60s 내 가중치 가 0 에서 5 로 천천히 올 라 갑 니 다.
    
    #       , hdh100:9003     5 slow_start 60s,                60s       0  5
    upstream www.learn.com{
            server hdh100:9001 weight=1;
            server hdh100:9002 weight=3;
            server hdh100:9003 weight=5 slow_start=60s;
    }
    
    
    

    down 과 backup
    다운 은 표 시 된 서버 를 현재 서버 클 러 스 터 에서 제거 합 니 다. 표 시 된 서버 는 접근 하지 않 습 니 다.
    backup 은 다른 서버 가 서 비 스 를 제공 할 수 있 을 때 backup 에 표 시 된 서버 에 접근 하지 않 고 다른 서버 가 모두 끊 으 면 backup 에 표 시 된 서비스 가 서 비 스 를 제공 한 다 는 예비 뜻 이다.
    
    #down    ,    , hdh100:9001             ,       
    upstream www.learn.com{
            server hdh100:9001 down;
            server hdh100:9002;
            server hdh100:9003;
    }
    
    #backup    ,    , hdh100:9002 hdh100:9003       ,hdh100:9001      ,            ,hdh100:9001      
    upstream www.learn.com{
            server hdh100:9001 backup;
            server hdh100:9002;
            server hdh100:9003;
    }
    
    
    

    max_fails 와 failtimeout
    max_fails 는 서버 가 정상 적 인 서 비 스 를 제공 할 수 있 는 지 검증 하 는 검사 입 니 다. fail 와 결합 해 야 합 니 다.timeout 을 사용 하면 일정 시간 동안 현재 서비스 에 실패 한 횟수 가 이 값 을 초과 할 때 이 서비스 가 다운 되 는 데 실패 했다 고 생각 되면 이 서 비 스 를 상류 서버 클 러 스 터 를 제거 하고 더 이상 방문 데 이 터 를 분배 하지 않 는 다.
    fail_timeout 은 실패 한 서비스의 재 시도 시간 을 표시 합 니 다. 즉, 이 서버 가 지연 되 어 실패 한 것 으로 여 겨 질 때 지정 한 시간 간격 을 두 고 다시 요청 을 시도 합 니 다. 만약 에 요청 이 실패 하면 지정 한 시간 간격 을 두 고 다시 요청 을 시도 합 니 다. 이러한 행 위 를 계속 반복 합 니 다.
    
    #       ,   30s      hdh100:9001       10  ,   hdh100:9001    ,    30s            ,30s            ,       ,       
    upstream www.learn.com{
            server hdh100:9001 max_fails=10 fail_timeout=30s;
            server hdh100:9002;
            server hdh100:9003;
    }
    
    

    keepalive
    nginx 와 상류 서버 가 직접 유지 하 는 긴 연결 수량 을 설정 하 는 것 은 연결 을 만 들 고 연결 을 닫 는 손실 을 줄 이기 위해 서 입 니 다.
    
    #    ,           32
    upstream www.learn.com{
            server hdh100:9001 max_fails=10 fail_timeout=30s;
            server hdh100:9002;
            server hdh100:9003;
            
            keepalive 32
    }
    
    #  http   1.1,   http1.0      
    #  Connection header  
    server {
            listen 80;
            server_name www.learn.com;
    
            location / {
                    proxy_pass http://www.learn.com;
                    proxy_http_version 1.1;
                    proxy_set_header Connection "";
            }
    }
    
    
    

    3. 캐 시 설정
    nginx 캐 시
    브 라 우 저의 캐 시 는 단일 사용자 브 라 우 저의 접근 속 도 를 가속 화 합 니 다. 캐 시 는 브 라 우 저 로 컬 에 존재 합 니 다.
    
    location / {
                root   html;
                index  index.html;
                
                #         10s
                # expires 10s;
                #        ,               10 30  
             # expires @22h30m;
             #               ,        
             # expires -1h;
             #       
             # expires epoch;
             # nginx  expires,              
             # expires off;
             #          
             # expires max;
            }
            
    

    nginx 역방향 프 록 시 캐 시
    역방향 프 록 시 캐 시 는 프 록 시 할 상류 서버 의 데 이 터 를 nginx 단 에 천천히 존재 시 키 는 것 으로 nginx 단 에 접근 하 는 사용자 의 접근 속 도 를 높이 기 위해 서 입 니 다.
    
    #proxy_cache_path         
    #keys_zone             
    #max_size       
    #inactive        ,         
    #use_temp_path          ,     ,       
    proxy_cache_path /home/local/cache  keys_zone=learncache:5m max_size=2g inactive=60s use_temp_path=off;
    
    server {
            listen 80;
            server_name www.learn.com;
    
           #    
           proxy_cache learncache;
           # 200 304             
           proxy_cache_valid 200 304 1h;
    
            location / {
                    proxy_pass http://www.learn.com;
            }
    }
    
    
    

    개인 공중전화 [꿈 꾸 는 망치]http://te-amo.site관심 을 환영 합 니 다. 더 많은 유용 한 지식 과 제 비밀 사진 을 공유 할 것 입 니 다.
    괜 찮 은 것 같 으 면 좋아요, 큐.

    좋은 웹페이지 즐겨찾기