nginx + tomcat session 공유 및 nginx upstream 에서 realserver 상태 모니터링
4100 단어 session 공유Nginx+Tomcatnginx
[root@jyfxapp1 tomcat610]#/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.2.9
built by gcc 4.4.7 20120313 (Red Hat4.4.7-4) (GCC)
TLS SNI support enabled
configure arguments: --user=www --group=www--prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module--with-http_flv_module --with-http_gzip_static_module--with-google_perftools_module
2. nginx - upstream - jvm - route - 0.1. tar. gz 모듈 다운로드
nginx_upstream_jvm_route 는 쿠키 기반 의 SessionSticky 기능 을 구현 하 는 Nginx 확장 모듈 입 니 다.
Wget https://nginx-upstream-jvm-route.googlecode.com/files/nginx-upstream-jvm-route-0.1.tar.gz
upstreamserver status 모듈 추가
wget https://nodeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
3. 이 모듈 패 치 를 nginx 에 맞 추기
Tar xzvf nginx-upstream-jvm-route-0.1.tar.gz
Cd nginx-XXXXX
patch -p0<../nginx_upstream_jvm_route/jvm_route.patch
patching file src/http/ngx_http_upstream.c
Hunk #1 succeeded at 4135 (offset 398lines).
Hunk #2 succeeded at 4227 (offset 398lines).
Hunk #3 succeeded at 4267 (offset 398lines).
Hunk #4 succeeded at 4320 (offset 398lines).
Hunk #5 succeeded at 4366 (offset 398lines).
patching file src/http/ngx_http_upstream.h
Hunk #1 succeeded at 90 (offset 5 lines).
Hunk #2 succeeded at 103 (offset 5 lines).
Hunk #3 succeeded at 118 (offset 5 lines).
성공 하 다.
Status 모듈 패 치:
patch �Cp1<../nginx_upstream_check_module-master/check_1.2.6+.patch
patching filesrc/http/modules/ngx_http_upstream_ip_hash_module.c
patching filesrc/http/modules/ngx_http_upstream_least_conn_module.c
patching filesrc/http/ngx_http_upstream_round_robin.c
Hunk #8 succeeded at 572 (offset 2 lines).
patching file src/http/ngx_http_upstream_round_robin.h
성공 하 다.
4. 원래 의 매개 변 수 를 사용 하여 nginx 를 다시 컴 파일 하고 jvm - route 모듈 을 추가 합 니 다.
./configure --user=www --group=www--prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module--with-http_flv_module --with-http_gzip_static_module--with-google_perftools_module --add-module=/usr/local/src/nginx_upstream_jvm_route --add-module=/usr/local/src/nginx_upstream_check_module-master
Make (make 만 있 으 면 됩 니 다. Makeintal 을 사용 하지 않 으 면 덮어 쓰기 설치 입 니 다)
5. nginx 바 이 너 리 파일 을 교체 해 야 합 니 다. 먼저 시작 스 크 립 트 를 백업 하 십시오.
[[email protected]]# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
6. nginx 프로 세 스 를 죽여 야 합 니 다. 그렇지 않 으 면 복사 가 잘못 될 수 있 습 니 다.
[[email protected]]# killall nginx
[[email protected]]# killall nginx
nginx: no processkilled
[[email protected]]# cp ./objs/nginx /usr/local/nginx/sbin/
cp: overwrite`/usr/local/nginx/sbin/nginx'? yes
7. nginx 프로필 수정
upstream T1{
server 192.168.133.20:8010srun_id=tomcat610;
server 192.168.133.20:8020srun_id=tomcat620;
server 192.168.133.20:8030srun_id=tomcat630;
server 192.168.133.20:8040srun_id=tomcat640;
server 192.168.133.20:8050srun_id=tomcat650;
jvm_route$cookie_JSESSIONID|sessionid reverse;
checkinterval=3000 rise=2 fall=5 timeout=1000;
}
증가 상태:
location /status{
check_status;
access_log off;
#allowSOME.IP.ADD.RESS;
#denyall;
}
주해: check interval = 3000 ise = 2 fall = 5 timeout = 1000;
interval 검 측 간격, 단 위 는 밀리초 입 니 다.
rsie 가 두 번 정상 을 요청 하면 이 realserver 의 상 태 를 up 으로 표시 합 니 다.
fall 은 요청 이 5 번 이나 실 패 했 을 때 이 realserver 의 상 태 를 다운 으로 표시 합 니 다.
timeout 은 시간 초과, 단 위 는 밀리초 입 니 다.
8. tomcat 의 server. xml 수정:
프로필 에 추가:
Tomcat1:
Tomcat2:…
.
.
.
Jvmroute = "tomcatxxx" 를 순서대로 유추 하면 됩 니 다. 또한 nginx 의 srun id = tomcatxxx 와 일일이 대응 해 야 합 니 다!
9. nginx 를 시작 하고 모든 tomcat 를 다시 시작 합 니 다.