nginx 부하 균형 및 캐 시 서버 설정

9007 단어 Nginx
1. nginx 부하 균형
nginx 부하 균형 설정 은 매우 간단 하여 7 층 의 부 하 를 실현 할 수 있 으 며, 일부 경량급 방문 량 의 사이트 에 대해 서 는 여전히 실 용적 입 니 다.
1. 구조
    : CentOS 6.6 x86_64
nginx  : 1.10.2  #      
   :
    server   10.0.18.146    80
  web server   10.0.18.144    80  10.0.18.145   80

2. 설정 과정
세 대의 서버 에 nginx 의 yum 원본 을 설정 합 니 다.
#cat /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
    yum  nginx
#yum install nginx -y

세 대의 서버 에 파일 열기 수 를 설정 합 니 다.
#tail -5 /etc/security/limits.conf 
# End of file
* soft nofile 65535
* hard nofile 65535
* soft    nproc     10240         
* hard    nproc     10240

백 엔 드 서버 두 대 설정: 10.0.18.144, 다음 과 같 습 니 다:
#cat /etc/nginx/nginx.conf          #      ,    
events { 
    use epoll;                      #  epoll
    worker_connections  10240;      #     
}
#cat /etc/nginx/conf.d/default.conf #  server_name     
server {
    listen       80;
    server_name  nginx1.test.com;
………………
}
        :
#cat /usr/share/nginx/html/index.html  #  18.144,    
…………

Welcome to nginx 18.144!

………… nginx #service nginx start

물리 적 컴퓨터 에 도 메 인 이름 을 추가 하 는 것 은 다음 과 같 습 니 다.
   hosts  --->C:\Windows\System32\drivers\etc\hosts
10.0.18.144 nginx1.test.com
10.0.18.145 nginx2.test.com
10.0.18.146 balance.test.com

브 라 우 저 에 접근 하면 다음 과 같 습 니 다.
백 엔 드 두 대의 server: 10.0.18.145 를 설정 합 니 다. 방법 은 18.144 와 마찬가지 로 군말 하지 않 고 브 라 우 저 에서 다음 과 같이 방문 합 니 다.
3. 부하 균형 서버 설정
프로필 먼저 보기:
#cat nginx.conf
events {
    use epoll;
    worker_connections  10240;
}

http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    #include /etc/nginx/conf.d/*.conf;
    upstream backend {                      #     server,   1
          server 10.0.18.144 weight=1;
          server 10.0.18.145 weight=1;
   }
   server {
        listen 80;
        server_name balance.test.com;
        location / {
             proxy_set_header Host $host;   #             
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_buffering on;          #    
             proxy_pass    #      
        } 
}
}
    nginx
#service nginx start

브 라 우 저 에서 접근http://balance.test.com테스트 진행:
브 라 우 저 를 계속 새로 고침 하면 18.144 와 18.145 가 돌아 가면 서 해당 하 는 것 을 볼 수 있 습 니 다. 다음 과 같 습 니 다.
이렇게 해서 nginx 의 부하 균형 체 제 를 실현 하 였 습 니 다. 매우 간단 합 니 다!
2. nginx upstream 의 몇 가지 방식:
1. 폴 링
폴 링 은 upstream 의 기본 배분 방식 입 니 다. 즉, 모든 요청 은 시간 순서에 따라 서로 다른 백 엔 드 서버 로 돌아 가 며 분 배 됩 니 다. 만약 에 특정한 백 엔 드 서버 다운 이 떨 어 지면 자동 으로 제거 할 수 있 습 니 다. 다음 과 같 습 니 다.
upstream backend {
            server 192.168.1.101:80;
            server 192.168.1.102:8080;     #          ,       OK
        }

2、weight
 폴 링 의 강화 판 은 폴 링 비율 을 지정 할 수 있 고 weight 와 방문 확률 은 정비례 할 수 있 으 며 주로 백 엔 드 서버 설정 이 다른 장면 에서 다음 과 같다.
upstream backend {
            server 192.168.1.101 weight=1;
            server 192.168.1.102 weight=2;  #    ,  web      
        }
     :
upstream backend {
            server 192.168.1.101:80 weight=1;
            server 192.168.1.102:8080 weight=2;  
        }

3、ip_hash
모든 요청 은 ip (즉, Nginx 의 사전 서버 나 클 라 이언 트 IP) 에 접근 하 는 hash 결과 에 따라 분 배 됩 니 다. 그러면 모든 방문객 이 백 엔 드 서버 를 고정 적 으로 방문 하여 session 일치 문 제 를 해결 할 수 있 습 니 다. 다음 과 같 습 니 다.
upstream backend {
            ip_hash;
            server 192.168.1.101;
            server 192.168.1.102;  
        }

4、fair
fair 는 말 그대로 백 엔 드 서버 의 응답 시간 (rt) 에 따라 공정 하 게 요청 을 분배 합 니 다. 응답 시간 이 짧 으 면 rt 작은 백 엔 드 서버 의 우선 배분 요청 입 니 다. 다음 과 같 습 니 다.
upstream backend {
            server 192.168.1.101;
            server 192.168.1.102;  
            fair;
        }

5、url_hash
와 iphash 는 유사 하지만 url 에 접근 한 hash 결과 에 따라 요청 을 할당 하여 모든 url 을 같은 백 엔 드 서버 로 지정 합 니 다. 주로 백 엔 드 서버 가 캐 시 일 때 사용 하 는 장면 에서 다음 과 같 습 니 다.
upstream backend {
       server 192.168.1.101;
       server 192.168.1.102;
       hash $request_uri;
       hash_method crc32;
}
  ,hash_method    hash  ,        ,server      weight   。

주의: maxfails 와 failtimeout 은 일반적으로 연결 되 어 사용 되 며, 서버 가 fail 에 있다 면timeout 시간 내 max 출현fails 차 연결 에 실 패 했 습 니 다. 그러면 Nginx 는 끊 었 다 고 생각 하고 failtimeout 시간 내 에 요청 하지 않 습 니 다. failtimeout 기본 값 은 10s, maxfails 기본 값 은 1 입 니 다. 즉, 오류 가 발생 하면 서버 가 끊 겼 다 고 생각 합 니 다. max 를fails 를 0 으로 설정 하면 이 검 사 를 취소 하 는 것 을 의미 합 니 다. 다음 과 같 습 니 다.
upstream backend {
       server    backend1.example.com  weight=5;
       server    127.0.0.1:8080  max_fails=3 fail_timeout=30s;
       server    unix:/tmp/backend3;           
}

3. nginx 역방향 프 록 시 설정 웹 캐 시 서버 구현
nginx 는 squid 와 유사 한 웹 캐 시 기능 을 지원 합 니 다. 즉, 웹 페이지 를 url 인 코딩 에 따라 하 드 디스크 에 저장 하 는 것 입 니 다. 많은 자료 에 따 르 면 nginx 의 안정성 과 속 도 는 Squid 보다 못 하지 않 고 성능 적 으로 nginx 가 다 중 핵 cpu 에 대한 이용 도 Squid 를 초과 합 니 다.또한 nginx 는 부하 균형 도 지원 합 니 다. 이것 은 단기 적 으로 갑자기 방 문 량 을 견 디 지 못 하 는 사이트 에 있어 매우 편리 합 니 다. 설정 은 다음 과 같 습 니 다.
          :10.0.18.146
#cat nginx.conf
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    use epoll;
    worker_connections  10240;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    #include /etc/nginx/conf.d/*.conf;
    proxy_temp_path /usr/local/nginx/proxy_temp_dir; # :proxy_temp_path proxy_cache_path            
    proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=30g;
    #  Web      cache_one,         100MB,1             ,         20GB
    upstream backend {
          server 10.0.18.144:80 weight=1;
          server 10.0.18.145:8080 weight=1;
    }
    server {
        listen 80;
        server_name balance.test.com;
        location / {
             #          502、504、       ,        upstream             ,      。
             proxy_next_upstream http_502 http_504 error timeout invalid_header;
             proxy_cache cache_one;
             proxy_cache_valid 200 304 12h;  #    HTTP            
             proxy_cache_key $host$uri$is_args$args; #   、URI、     Web   Key ,Nginx  Key   ,              
             #             
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             #proxy_buffering on; #    
             proxy_pass  #  server 
             expires 1d;  #  ,   cookies,1d  1 ,1m  1  (   )
        }
        #location ~ /purge(/.*) {   #  purge,      ,    ngx_cache_purge
        #   allow 127.0.0.1;
        #   deny all;
        #   proxy_cache_purge cache_one $host$1$is_args$args;
        #}

}
}
    :
#mkdir -pv /usr/local/nginx/{proxy_cache_dir,proxy_temp_dir}
  nginx,    !
#service nginx restart

그리고 18.144 와 18.145 의 웹 저장 경 로 를 각각 test. html 로 만 듭 니 다. 내용 은 다음 과 같 습 니 다.
18.144
#cat /usr/share/nginx/html/test.html 

This is a test page 18.144

18.145 #cat /usr/share/nginx/html/test.html

This is a test page 18.145


그리고 부하 균형 도 메 인 이름 으로 접근 합 니 다.http://balance.test.com/test.html 페이지 는 다음 과 같 습 니 다:
그리고 끊임없이 새로 고치 거나 다른 브 라 우 저 를 교체 합 니 다. 18.145 이 server 응답 은 캐 시 를 설 정 했 기 때문에 처음 방문 한 후에 데 이 터 를 캐 시 합 니 다. 설 정 된 캐 시가 만 료 될 때 까지 입 니 다. 그리고 이때 부하 균형 서비스 기 에서 캐 시 정 보 를 봅 니 다.
#cd /usr/local/nginx/
#ll proxy_cache_dir/9/41/
total 4
-rw------- 1 nginx nginx 444 Nov  4 16:53 b5e4d782cfd84da92097d8ed956fb419
             !

캐 시 내용 보기, 다음 그림:
캐 시 를 볼 수 있 는 것 은 18.145 페이지 입 니 다!
현재 캐 시 를 수 동 으로 삭제 하면 브 라 우 저 접근 을 변경 합 니 다.http://balance.test.com/test.html 18.144 응답 페이지 가 나타 납 니 다. 다음 과 같 습 니 다.
#cd /usr/local/nginx
#rm -rf proxy_cache_dir/*
      :

캐 시 내용 보기, 다음 그림:
여기까지 끝!부족 한 점 은 잘 부탁드립니다!
참조 링크:http://cui.zhbor.com/article/27.html

좋은 웹페이지 즐겨찾기