다섯 번 째 모듈 Nginx 부하 균형, 동정 분리 - (세 번 째 부분)

7491 단어
Ubuntu 에서 php 7 mysql 5.7 LNMP 환경 구축 다섯 번 째 모듈 참고 Ubunt 14.04 LANMP 환경, Nginx 가상 호스트 설정 - (첫 번 째 부분) 다섯 번 째 모듈 Nginx 부하 균형, 동정 분리 - (세 번 째 부분) 306 - Ubuntu 16.04 LNMP 설치
제1 부 Nginx 부하 균형 서버 의 업무 장면
배포 방향:
  • 도 메 인 이름 은 부하 균형 서버 MS (172.16.0.10) 에 직접 분 석 됩 니 다.
  • 부하 균형 서버 MS 부하 균형 에서:
  • 실제 서버 R1 (172.16.0.20)
  • 실제 서버 R2 (172.16.0.30)

  • VMware 에 Ubuntu16.04 lts 대 를 설치 했다 (Ubuntu14.04 에 도 적용).
        :test.com -> 172.16.0.10
    

    명칭.
    IP
    hostname
    부하 균형 서버
    172.16.0.10
    MS
    실제 서버
    172.16.0.20
    R1
    실제 서버
    172.16.0.30
    R2
    세 대의 서버 모두 Nginx 를 사용 합 니 다.
  • Nginx 서비스 설치
  • sudo apt-get install nginx
    

    메모: Nginx 서버 의 프로필 을 설정 할 때 끝 에 분점 (;) 이 있어 야 합 니 다.
    1. 부하 균형 서버 설정 MS
    ip 사용hash 방식
    IP 주소 해시 가 앞에서 말 한 두 가지 부하 균형 방안 중 같은 클 라 이언 트 의 연속 적 인 웹 요청 은 서로 다른 백 엔 드 서버 에 배 포 될 수 있 기 때문에 세 션 Session 과 관련 되면 세 션 이 복잡 할 수 있 습 니 다.흔히 볼 수 있 는 것 은 데이터베이스 기반 세 션 의 지속 화 입 니 다.위의 어 려 운 문 제 를 극복 하려 면 IP 주소 인 해시 기반 부하 균형 방안 을 사용 할 수 있다.이렇게 되면 같은 클 라 이언 트 의 연속 적 인 웹 요청 은 같은 서버 에 배포 되 어 처 리 됩 니 다.
    Nginx 의 사이트 설정 디 렉 터 리 /etc/nginx/sites-available/ 에서 부하 균형 설정 파일 test.com 설정 을 만 듭 니 다.
    #   test.com  proxy_pass http://test.com   !
    upstream test.com {
      ip_hash;
      server 172.16.0.20:80;
      server 172.16.0.30:80;
    }
    
    server {
            listen 80;
            root /home/scort/www;
            index index.html index.htm;
            server_name test.com;
    
            location / {
                    #   test.com  upstream test.com   !
                    proxy_pass http://test.com;
            }
    }
    

    다음은 Nginx 의 사이트 설정 디 렉 터 리 /etc/nginx/sites-enable/ 에서 소프트 체인 설정 파일 test.com
    cd /etc/nginx/sites-enable/
    sudo ln -s /etc/nginx/sites-available/test.com
    

    서버 다시 시작
    sudo service nginx restart
    

    2. 실제 서버 R1, R2
    실제 서버 두 대 에 Nginx 서버 설정
    Nginx 의 사이트 설정 디 렉 터 리 /etc/nginx/sites-available/ 에서 부하 균형 설정 파일 test.com 설정 을 만 듭 니 다.
    server {
            listen 80;
            root /home/scort/www;
            index index.html index.htm;
            server_name test.com;
    
            location / {
                    try_files $url $uri/ =404;
            }
    }
    

    다음은 Nginx 의 사이트 설정 디 렉 터 리 /etc/nginx/sites-enable/ 에서 소프트 체인 설정 파일 test.com
    cd /etc/nginx/sites-enable/
    sudo ln -s /etc/nginx/sites-available/test.com
    

    다시 시작 nginx 저장
    sudo service nginx restart
    

    두 대의 실제 서버 의 sudo vim /var/www/html/index.html 내용 이 서로 다른 내용 을 표시 하 는 것 을 주의 하 세 요!이렇게 하면 부하 균형 의 효 과 를 볼 수 있다!
    3. 클 라 이언 트
    클 라 이언 트 호스트 가 도 메 인 이름 을 지정 하고 sudo vim /etc/hosts 파일 을 열 어 다음 과 같은 내용 을 추가 합 니 다.
    172.16.0.10 test.com
    

    브 라 우 저 접근: http://test.com두 번 째 부분 부하 균형 서버 MS 설정 Nginx 동정 분리
    레 퍼 런 스http://myangle89.iteye.com/blog/1808293
    부하 균형 서버 (MS) 에서 Nginx 를 설정 합 니 다. Nginx 의 사이트 설정 디 렉 터 리 /etc/nginx/sites-available/ 에서 부하 균형 설정 파일 test.com 설정 은 다음 과 같 습 니 다.
    #   test.com  proxy_pass http://test.com   !
    upstream test.com {
      ip_hash;
      server 172.16.0.20:80;
      server 172.16.0.30:80;
    }
    
    upstream html.com{
      server 172.16.0.20:80;
    }
    
    server {
        listen 80;
        root /home/scort/www;
        index index.html index.htm;
        server_name test.com;
    
        location / {
                try_files $url $uri/ =404;
        }
        
        #  Nginx    ,          Nginx      。
        location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
        {
    
            #   :  
            # root /home/scort/data;
            #expires             3 ,          ,      ,                 
            # expires      3d;
    
            #    :    
            proxy_set_header Host  $host; #    ,  :          ;        ,    proxy_pass       !
            proxy_set_header X-Real-IP $remote_addr; #    IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://html.com;
        }
    
        #      http://test.com,       nginx.conf   upstream test.com   
        location ~ .*\.(php|jsp|cgi)?$
        {
            proxy_set_header Host  $host; #    ,  :          ;        ,    proxy_pass       !
            proxy_set_header X-Real-IP $remote_addr; #    IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://test.com;
        }
    
    }
    

    설명: 설정 시 server 유지name 의 일치 성!
    다음은 Nginx 의 사이트 설정 디 렉 터 리 /etc/nginx/sites-enable/ 에서 소프트 체인 설정 파일 test.com
    cd /etc/nginx/sites-enable/
    sudo ln -s /etc/nginx/sites-available/test.com
    

    첨부: Nginx 부하 균형의 4 가지 방안 설정 실례
  • 폴 링 폴 링 즉 Round Robin 은 Nginx 설정 파일 의 순서에 따라 클 라 이언 트 의 웹 요청 을 다른 백 엔 드 서버 에 순서대로 배포 합 니 다.설정 의 예 는 다음 과 같 습 니 다:
  • http{
     upstream sampleapp {
       server <>;
       server <>;
     }
     ....
     server{
       listen 80;
       ...
       server sampleapp;
       location / {
        proxy_pass http://sampleapp;
       } 
     }
    

    위 에 DNS 입구 가 1 개 만 upstream 절, 즉 sampleapp 에 삽입 되 었 고 뒤에 있 는 proxy패스 절 다시 언급.
  • 최소 연결 웹 요청 은 연결 수가 가장 적은 서버 로 전 송 됩 니 다.설정 의 예 는 다음 과 같 습 니 다:
  • http{
      upstream sampleapp {
        least_conn;
        server <>;
        server <>;
      }
      ....
      server{
        listen 80;
        ...
        location / {
         proxy_pass http://sampleapp;
        } 
      }
    

    위의 예 는 upstream 절 에 least 를 추가 한 것 뿐 입 니 다.conn 설정.다른 설정 은 폴 링 설정 과 같 습 니 다.
  • IP 주소 해시 가 말 한 두 가지 부하 균형 방안 에서 같은 클 라 이언 트 의 연속 적 인 웹 요청 은 서로 다른 백 엔 드 서버 에 배 포 될 수 있 기 때문에 세 션 Session 과 관련 되면 세 션 이 복잡 할 수 있 습 니 다.흔히 볼 수 있 는 것 은 데이터베이스 기반 세 션 의 지속 화 입 니 다.위의 어 려 운 문 제 를 극복 하려 면 IP 주소 인 해시 기반 부하 균형 방안 을 사용 할 수 있다.이렇게 되면 같은 클 라 이언 트 의 연속 적 인 웹 요청 은 같은 서버 에 배포 되 어 처 리 됩 니 다.설정 의 예 는 다음 과 같 습 니 다:
  • http{
      upstream sampleapp {
        ip_hash;
        server <>;
        server <>;
      }
      ....
      server{
        listen 80;
        ...
        location / {
         proxy_pass http://sampleapp;
        } 
      }
    

    위의 예 는 upstream 절 에 ip 를 추가 한 것 뿐 입 니 다.hash 설정.다른 설정 은 폴 링 설정 과 같 습 니 다.
  • 가중치 기반 부하 균형 은 가중치 기반 부하 균형 인 Weighted Load Balancing 을 기반 으로 합 니 다. 이 방식 에서 우 리 는 Nginx 를 설정 하여 높 은 설정 의 백 엔 드 서버 에 요청 을 더 많이 나 누 어 주 고 상대 적 으로 적은 요청 을 저 배합 서버 에 나 누 어 줄 수 있 습 니 다.설정 의 예 는 다음 과 같 습 니 다:
  • http{
      upstream sampleapp {
        server <> weight=2;
        server <>;
        server <> weight=1 max_fails=2 fail_timeout=30s; 
      }
      ....
      server{
        listen 80;
        ...
        location / {
         proxy_pass http://sampleapp;
        }
     }
    

    위의 예 는 서버 주소 와 포트 후 weight = 2 의 설정 입 니 다. 이 는 3 개의 요청 을 받 을 때마다 앞의 2 개의 요청 이 첫 번 째 서버 에 배포 되 고 세 번 째 요청 은 두 번 째 서버 에 배 포 됩 니 다.또한 가중치 기반 부하 균형 과 IP 주소 기반 해시 의 부하 균형 을 조합 하여 사용 할 수 있다 는 점 을 설명 한다.

    좋은 웹페이지 즐겨찾기