고성능 고가 용 프로젝트 Nginx (3) Upstream (부하 균형)

1. 이론 부분
1.1 nginx 의 부하 균형
nginx 의 부하 균형 은 upstream 모듈 에서 이 루어 집 니 다.
1.2 nginx 의 모듈
1.2.1 nginx 의 모듈 분류
nginx 모듈 은 세 가지 유형 으로 나 뉜 다.
1)handler
2)filter
3) upstream (상류)
1.2.2 모듈 의 역할
handler & filter - 단기 작업 완료 에 사용
upstream - 단기 제한 을 뛰 어 넘 고 네트워크 데이터 수신, 처리, 퍼 가기 완료
1.2.3 upstream 의 의미
nginx 에 게 단일 기 계 를 뛰 어 넘 는 가로 처리 확장 능력 을 제공 하여 nginx 를 단말기 노드 로 만 벗 어 나 게 하고 네트워크 응용 등급 의 분할, 패 키 징 과 통합 전략 기능 을 갖 추 게 합 니 다.
1.3, upstream 의 사용 방법
1.3.1 upstream 그룹 과 호출 정의
http {
  upstream myproject {
    server 127.0.0.1:8000 weight=3;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    server 127.0.0.1:8003;
  }

  server {
    listen 80;
    server_name www.domain.com;
    location / {
      proxy_pass http://myproject;
    }
  }
}

1.3.2 upstream 의 배분 방식
1) 라운드 로 빈 (기본 값)
폴 링, 모든 요청 은 시간 순서에 따라 하나씩 분배 되 며, 백 엔 드 서버 가 다운 되면 자동 으로 삭 제 됩 니 다.
2)weight
가중 폴 링 은 백 엔 드 서버 의 성능 이 고 르 지 않 은 상황 을 해결 하 는 데 사용 된다.
정의 방법:
upstream cmdschoolSer {
server 10.168.0.185 weight=10;
server 10.168.0.186 weight=10;
}

3)ip_bash
모든 요청 은 ip 에 접근 하 는 bash 결과 에 따라 배정 되 기 때문에 방문객 은 백 엔 드 서버 를 고정 적 으로 방문 하면 session 장기 유지 문 제 를 해결 할 수 있 습 니 다.
정의 방법:
upstream cmdschoolSer {
ip_hash;
server 10.168.0.185:8080;
server 10.168.0.186:8080;
}

4) fair (제3자)
백 엔 드 서버 의 응답 시간 에 따라 응답 시간 이 짧 은 우선 분 배 됩 니 다.
정의 방법:
upstream cmdschoolSer {
fair;
server 10.168.0.185:8080;
server 10.168.0.186:8080;
}

5)url_bash (제3자)
정의 방법:
upstream cmdschoolSer {
server 10.168.0.185:8080;
server 10.168.0.186:8080;
hash $request_uri;
hash_method crc32;
}

6)tips
upstream cmdschoolSer {#         ip     
ip_hash;
server 10.168.0.185:8080 down;
server 10.168.0.185:8081 weight=2;
server 10.168.0.186:8080;
server 10.168.0.186:8081 backup;
}

1.3.3 설비 의 상태
1)down
현재 server 가 부하 에 잠시 참여 하지 않 음 을 표시 합 니 다.
2)weight
수치 가 클 수록 권한 이 커진다 (기본 값 1)
3)max_fails
요청 실패 횟수 를 허용, 실패 횟수 를 초과, proxy 로 돌아 가기next_upstream 모듈 정의 오류 (기본 1)
4)fail_timeout
max_fails 회 실패 후 일시 정지 시간
5)backup
다른 모든 비 backup 기기 다운 또는 바 쁠 때 backup 기기 요청 (압력 이 가장 가 벼 운)
2. 실험 부분
2.1 실험 정보
2.1.1 실험 기초
당신 은 이미 다음 과 같은 실험 을 마 쳤 습 니 다.
http://cmdschool.blog.51cto.com/2420395/1703299
2.1.2 호스트 정보
lbSer
ip address=10.168.0.183
hostname=lbSer
proxySer:
ip address=10.168.0.185
hostname=proxySer
tomcatSer:
ip address=10.168.0.188
hostname=tomcatSer
client:
ipaddress=10.168.0.8
hostname=client
2.1.3 yum 패키지 설치
In lbSer
yum -y install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum -y install nginx

2.2 설정 부분
In lbSer
2.2.1、step
vim 편집 / etc / nginx / nginx. conf
원래 http {} 부분 을 삭제 하고 다음 코드 로 바 꿉 니 다.
http {
  upstream cmdschool {
    server 10.168.0.185:81;
    server 10.168.0.185:82;
  }

  server {
    listen 80;
    server_name www.cmdschool.org;
    location / {
      proxy_pass http://cmdschool;
    }
  }
}

2.2.2、step
서 비 스 를 시작 하고 시작 으로 설정 합 니 다.
/etc/init.d/nginx restart
chkconfig nginx on

2.2.3、step
vim 편집 / etc / sysconfig / iptables
다음 코드 추가:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

2.2.4、step
방화벽 재 부팅
 /etc/init.d/iptables restart

In client
2.2.5、step
테스트 부하 균형
curl http://10.168.0.182
curl http://10.168.0.182
curl http://10.168.0.182
curl http://10.168.0.182

----------------------------------------------------------
이론 부분 은 자 료 를 참조한다.
1) 공식:
http://www.nginx.org
2)Tengine:
http://tengine.taobao.org
실험 부분 은 자 료 를 참조한다.
1) Nginx 공식 다운로드 경로:
http://nginx.org/en/download.html
2) Nginx + Tomcat 부하 균형 설정 (업 스 트림 모듈)
https://www.nginx.com/resources/wiki/start/topics/examples/loadbalanceexample/
http://tengine.taobao.org/book/chapter_5.html
http://www.cnblogs.com/xiaogangqq123/archive/2011/03/04/1971002.html
http://onlyzq.blog.51cto.com/1228/557848/
http://developer.51cto.com/art/201407/446626.htm
http://www.myhack58.com/Article/sort099/sort0102/2011/31642.htm

좋은 웹페이지 즐겨찾기