nginx 부하 균형 설정 - nginx 학습 의 길

16736 단어 nginx
Nginx  부하 균형
1. Nginx  균형 적 인 기초 지식 nginx 를 탑재 한 upstream 은 현재 4 가지 방식 의 배분 1), 폴 링 (기본) 을 지원 합 니 다. 모든 요청 은 시간 순서에 따라 백 엔 드 서버 에 하나씩 배정 되 며 백 엔 드 서버 다운 이 떨 어 지면 자동 으로 제거 할 수 있 습 니 다.2) weight 는 폴 링 확률 을 지정 하고 weight 와 방문 비율 이 정비례 하여 백 엔 드 서버 의 성능 이 고 르 지 않 은 경우 에 사용 합 니 다.3)、ip_hash 모든 요청 은 ip 에 접근 하 는 hash 결과 에 따라 분 배 됩 니 다. 모든 방문객 이 백 엔 드 서버 에 고정 적 으로 접근 하면 session 문 제 를 해결 할 수 있 습 니 다.4), fair (제3자) 는 백 엔 드 서버 의 응답 시간 에 따라 요청 을 분배 하고 응답 시간 이 짧 은 우선 분 배 를 한다.5)、url_hash (제3자)
2. Nginx  부하 균형 실례 1upstream bbs. linuxtone. org { #부하 균형 장치 의 Ip 및 장치 상 태 를 정의 합 니 다.        server 127.0.0.1:9090 down;     server 127.0.0.1: 8080 weight = 2; server 127.0.0.1: 6060; server 127.0.0.1: 77070 backup;} 부하 균형 이 필요 한 server 에 proxy 를 추가 합 니 다.pass http://bbs.linuxtone.org/;
모든 장치 의 상태 설정: a) down 은 목록 앞의 server 가 부하 b 에 잠시 참여 하지 않 음 을 표시 합 니 다) weight 는 기본적으로 1. weight 가 클 수록 부하 의 가중치 가 커진다.c)  max_fails: 요청 실패 횟수 를 기본 으로 1. 최대 횟수 를 초과 하면 proxy 로 되 돌려 줍 니 다.next_upstream 모듈 정의 오류 d) fail_timeout:max_fails 회 실패 후 일시 정지 시간 입 니 다.e)  backup: 다른 모든 비 backup 기기 다운 이나 바 쁠 때 backup 기 계 를 요청 합 니 다.그래서 이 기계 의 압력 이 가장 가 벼 울 것 이다.
nginx 는 여러 그룹의 부하 균형 을 동시에 설정 하여 사용 하지 않 는 server 에 사용 할 수 있 도록 지원 합 니 다.client_body_in_file_only 는 On 으로 설정 하여 client post 에서 온 데 이 터 를 파일 에 기록 하여 debugclient 로 사용 합 니 다.body_temp_path 에 기록 파일 을 설정 한 디 렉 터 리 는 최대 3 층 디 렉 터 리 location 를 설정 하여 URL 을 일치 시 킬 수 있 습 니 다. 방향 을 바 꾸 거나 새로운 프 록 시 부하 균형 을 이 룰 수 있 습 니 다.
3. Nginx  부하 균형 인 스 턴 스 2 는 url 에 접근 한 hash 결과 에 따라 요청 을 할당 합 니 다. 모든 url 을 같은 백 엔 드 서버 로 지정 합 니 다. 백 엔 드 서버 가 캐 시 일 때 효과 적 이 고 Squid 캐 시 명중률 을 높이 는 데 도 사용 할 수 있 습 니 다. 간단 한 부하 평균 인 스 턴 스: \ # vi nginx. conf / nginx 메 인 프로필 핵심 설정.{ip_hash;server 127.0.0.1:8080;server 192.168.169.136:8080;server 219.101.75.138:8080;server 192.168.169.117;server 192.168.169.118;server 192.168.169.119;}…………..include vhosts/linuxtone_lb.conf;………# vi proxy.confproxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 50m;client_body_buffer_size 256k;proxy_connect_timeout 30;proxy_send_timeout 30;proxy_read_timeout 60;proxy_buffer_size 4k;proxy_buffers 4 32k;proxy_busy_buffers_size 64k;proxy_temp_file_write_size 64k;proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;proxy_max_temp_file_size 128m;proxy_store on;proxy_store_access user:rw group:rw all:r;#nginx cache#client_body_temp_path /data/nginx_cache/client_body 1 2;proxy_temp_path /data/nginx_cache/proxy_temp 1 2;#vi linuxtone_lb.confserver{listen 80;server_name my.linuxtone.org;index index.php;root /data/www/wwwroot/mylinuxtone;if (-f $request_filename) {    break;}if (-f $request_filename/index.php) {   rewrite (.*) $1/index.php break;}error_page 403 http://my.linuxtone.org/member.php?m=user&a=login;location / {   if ( !-e $request_filename) {        proxy_pass http://my.linuxtone.org;        break;   }   include /usr/local/nginx/conf/proxy.conf;}}
부하 균형 을 사용 하면 http 노드 설정 을 다음 과 같이 수정 할 수 있 습 니 다.
#  http   ,                  
http {

    #  mime  ,   mime.type    
    include             /etc/nginx/mime.types;
    default_type    application/octet-stream;

    #      
    access_log        /var/log/nginx/access.log;

    #            
    #。。。。。。。。。。

    #            
    upstream mysvr {
        #weigth      ,             
        server 192.168.8.1x:3128 weight=5;
        #    Squid  3128  ,     squid
        server 192.168.8.2x:80    weight=1;
        server 192.168.8.3x:80    weight=6;
    }
        
    upstream mysvr2 {
        #weigth      ,             
        server 192.168.8.x:80    weight=1;
        server 192.168.8.x:80    weight=6;
    }

    #        
    server {
        #  192.168.8.x 80  
        listen             80;
        server_name    192.168.8.x;

        # aspx           
        location ~ .*\.aspx$ {
            #               
            root     /root; 
            #           
            index index.php index.html index.htm;
            
            #    mysvr         
            proxy_pass    http://mysvr ;

            #               .

            proxy_redirect off;

            #   Web       X-Forwarded-For      IP
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            #                
            client_max_body_size 10m; 

            #                  ,
            client_body_buffer_size 128k;

            #nginx            (      )
            proxy_connect_timeout 90;

            #     ,         (      )
            proxy_read_timeout 90;

            #       (nginx)             
            proxy_buffer_size 4k;

            #proxy_buffers   ,     32k    ,    
            proxy_buffers 4 32k;

            #        (proxy_buffers*2)
            proxy_busy_buffers_size 64k; 

            #         ,     ,  upstream    
            proxy_temp_file_write_size 64k;    

        }
    }
}

좋은 웹페이지 즐겨찾기