Nginx + Tomcat + Session 고성능 클 러 스 터 구축

11333 단어
IT 업계 의 발전 에 따라 Liux 서버 는 기업 에서 광범 위 하 게 응용 되 고 사람들 이 Liux 의 응용 서비스 에 대한 요구 도 점점 높 아 지고 있다. 예전 의 apache 서버, apache 는 장점 도 있 고 부족 하 다. apache 는 사람들의 요 구 를 만족 시 키 지 못 하고 현재 nginx 는 고성능 웹 서버 로 대량으로 사용 되 고 있다.개인 사이트 든 대형 포 털 사이트 든 nginx 를 웹 서버 구축 의 최 우선 순위 로 사용 하고 있다.다음은 저희 가 직접 고성능 웹 서버 를 만 들 고 고장 이 나 서 자동 으로 이동 하 는 클 러 스 터 와 부하 균형 서버 를 만 듭 니 다.1. Nginx + Tomcat + Session 고성능 클 러 스 터 서비스 구축, 본 고 는 현재 주류 버 전 으로 구축, 구축 환경 및 버 전 은 다음 과 같은 목록: 시스템 버 전: Centos 5.3 64 비트 시스템 Nginx 버 전: nginx - 0.8.54. tar. gzJdk 버 전: 1.6.018_64Tomcat 버 전: Apache Tomcat / 6.0.30 다른 유사 버 전도 가능 합 니 다!설치 서비스 에 필요 한 가방 은 다음 과 같은 다운로드 경로 입 니 다. 본 사이트 의 통합 부분 다운로드: jdk 는 다음 사이트 에서 다운로드 하 십시오. 자신의 시스템 버 전의 jdk 를 선택 하 십시오.https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US / - / USD / ViewFilteredProducts - Single VariationTypeFilter [Tomcat 다운로드 주소]http://blog.mgcrazy.com/download/apache-tomcat-6.0.30.tar.gz[Nginx - 0.8.54 다운로드]http://blog.mgcrazy.com/download/nginx-0.8.54.tar.gzhttp://blog.mgcrazy.com/download/pcre- 8.01. tar. gz 2. 먼저 Nginx 를 설치 합 니 다. nginx 를 설치 하기 전에 pcre 패키지 와 zlib 를 설치 하여 재 작성 을 지원 해 야 합 니 다.정규 및 웹 페이지 압축 등] 필요 한 가방 을 / usr / src 에 다운로드 하여 [자신의 습관 에 따라 경 로 를 바 꿀 수 있 습 니 다] (1) 먼저 pcre 를 설치 합 니 다.
cd /usr/src &&tar xzf pcre-8.01.tar.gz &&cd pcre-8.01 && ./configure --prefix=/usr/local/pcre &&make &&make install

(2) 그리고 nginx 를 설치 합 니 다. [nginx 에 jvmroute 모듈 을 설치 합 니 다.]
cd /usr/src
svn checkout http://nginx-upstream-jvm-route.googlecode.com/svn/trunk/nginx-upstream-jvm-route-read-only 
useradd www
tar xzf nginx-0.8.54.tar.gz
cd nginx-0.8.54
patch -p0 < ../nginx-upstream-jvm-route-read-only/jvm_route.patch 
 ./configure --prefix=/usr/local/nginx-0.8 --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/src/pcre-8.01 --add-module=../nginx-upstream-jvm-route-read-only  --user=www --group=www
make
make install

[nginx 주의 * – with - pcre = / usr / src / pcre - 8.01 은 설치 경로 가 아 닌 원본 패키지 의 압축 을 푸 는 경 로 를 가리 키 며, 그렇지 않 으 면 make [1]: * * [/ usr / local / pcre / makefile] Error 127 오류] Nginx 설치 완료!먼저 nginx 설정 파일 의 설정 을 서 두 르 지 않 고 tomcat 설정 파일 을 수정 합 니 다. 3. Tomcat 설치 설정: (1) 필요 한 가방 을 / usr / src 디 렉 터 리 에 다운로드 합 니 다.먼저 jdk: chmod o + x jdk * &. / jdk * 를 설치 합 니 다.패 키 지 는 Enter 키 를 누 르 는 것 을 알려 줍 니 다. 우 리 는 알림 에 따라 설치 하면 됩 니 다. 압축 을 풀 고 현재 디 렉 터 리 에서 jdk 1.6.0 을 생 성 합 니 다.18 이 폴 더, mkdir - p / usr / java & & mv jdk 1.6.018 / usr / java / 하 vi / etc / profile 맨 뒤에 다음 문장 추가:
export JAVA_HOME=/usr/java/jdk1.6.0_18
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin

source / etc / profile / / 환경 변 수 를 즉시 적용 자바 – version / / 자바 버 전 보기, 디 스 플레이 버 전 은 1.6.018, 그리고 64 비트 의 증명 설치 성공![Java HotSpot (TM) 64 - Bit Server VM (build 16.0 - b10, mixed mode)] cd / usr / src & & tar xzf apache - tomcat - 6.0.30. tar. gz 압축 해제 완료 실행: mv apache - tomcat - 6.0.30 / usr / local / tomcat1 && cp /usr/local/tomcat_1 /usr/local/tomcat_2 - r [/ usr / local 로 이동 하여 tomcat 1 폴 더 로 이름 을 바 꾸 고 cp 하나의 tomcat 2] 두 개의 Tomcat 군집 을 부하 균형 용 으로 배치 합 니 다!(2), tomcat 의 자바 변수 cd / usr / local / tomcat 설정1 / bin / & vi setenv. sh 는 setenv. sh 스 크 립 트 파일 을 만 들 고 다음 문 구 를 추가 하면 됩 니 다.
JAVA_HOME=/usr/java/jdk1.6.0_18
JAVA_JRE=/usr/java/jdk1.6.0_18/jre

그리고 setenv. sh 파일 을 tomcat 로 복사 합 니 다.2 / bin / 하: cp - p / usr / local / tomcat1/bin/setenv.sh /usr/local/tomcat_2 / bin 이면 됩 니 다!두 tomcat 아래 빈 디 렉 터 리 의 *. sh 파일 을 저장 하고 실행 가능 한 권한 이 있 는 지 확인 합 니 다. 없 으 면 해당 디 렉 터 리 에 들 어가 chmod o + x *. sh 를 실행 하면 됩 니 다!두 tomcat 에 각각 다른 디 렉 터 리 를 만 듭 니 다. mkdir - p / usr / webapps / {www 1, www 2} (3), Tomcat 의 server. xml 파일 을 설정 합 니 다.[다음은 제 tomcat 프로필 의 구체 적 인 내용 입 니 다. 첨부 파일 형식 으로 보 내 려 고 했 는데 본 블 로 그 는 아직 첨부 파일 기능 을 지원 하지 않 습 니 다. 중요 한 수정 부분 을 참고 하 시기 바 랍 니 다. 모든 설정 을 여기에 붙 여 놓 으 면 문제 가 있 습 니 다. 두 개의 웹 링크 를 사 용 했 습 니 다! 이렇게 하면 일부 해석 에 영향 을 미 쳤 습 니 다. 모 르 는 환영 댓 글 입 니 다]이것 은 완전한 server. xml 파일 다운로드 주소 입 니 다:http://blog.mgcrazy.com/download/server.xml.tgztomcat_2의 프로필 다운로드 주소:http://blog.mgcrazy.com/download/server2.xml.tgz두 Tomcat 가 설정 한 cluster 안의 포트 는 각각 4000, 4001 이 므 로 서로 다른 포트 로 설정 해 야 합 니 다. 또한 각각 두 개의 jvmroute 이름 을 설정 해 야 합 니 다. 이따가 nginx 에서 사용 할 것 입 니 다.도착! Tomcat session 세 션 복사 설정: 각각 두 개의 tomcat conf 아래 웹. xml 파일 에 다음 줄 을 추가 하면 됩 니 다. 설정 이 끝 난 후에 라디오 를 테스트 합 니 다.
java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1
java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2

잘못 보고 하지 않 으 면 tomcat - replication. jar 를 정상적으로 방송 할 수 있 습 니 다.http://cvs.apache.org/~ fhanik / tomcat - replication. jar 두 대의 기계 라면 tcpdump 로 가방 을 잡 아 보 세 요!
Tomcat    ,    tomcat,   tomcat1,tomcat_1      :
  : Initializing Coyote HTTP/1.1 on http-8080
2011-3-18 19:56:21 org.apache.catalina.startup.Catalina load
  : Initialization processed in 1088 ms
2011-3-18 19:56:21 org.apache.catalina.core.StandardService start
  : Starting service Catalina
2011-3-18 19:56:21 org.apache.catalina.core.StandardEngine start
  : Starting Servlet Engine: Apache Tomcat/6.0.18
2011-3-18 19:56:21 org.apache.catalina.ha.tcp.SimpleTcpCluster start
  : Cluster is about to start
2011-3-18 19:56:21 org.apache.catalina.tribes.transport.ReceiverBase bind
  : Receiver Server Socket bound to:/192.168.2.79:4000
2011-3-18 19:56:21 org.apache.catalina.tribes.membership.McastServiceImpl setupSocket

  : Setting cluster mcast soTimeout to 500

2011-3-18 19:56:21 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers

  : Sleeping for 1000 milliseconds to establish cluster membership, start level:4

2011-3-18 19:56:22 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers

  : Done sleeping, membership established, start level:4

2011-3-18 19:56:22 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers

  : Sleeping for 1000 milliseconds to establish cluster membership, start level:8

2011-3-18 19:56:23 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers

  : Done sleeping, membership established, start level:8

2011-3-18 19:56:23 org.apache.catalina.ha.deploy.FarmWarDeployer start

  : FarmWarDeployer can only work as host cluster subelement!

2011-3-18 19:56:23 org.apache.catalina.ha.session.DeltaManager start

  : Register manager to cluster element Engine with name Catalina

2011-3-18 19:56:23 org.apache.catalina.ha.session.DeltaManager start

  : Starting clustering manager at

2011-3-18 19:56:23 org.apache.catalina.ha.session.DeltaManager getAllClusterSessions

  : Manager [localhost#]: skipping state transfer. No members active in cluster group.
2011-3-18 19:56:23 org.apache.catalina.ha.session.JvmRouteBinderValve start
  : JvmRouteBinderValve started
2011-3-18 19:56:23 org.apache.coyote.http11.Http11Protocol start
  : Starting Coyote HTTP/1.1 on http-8080
2011-3-18 19:56:24 org.apache.jk.common.ChannelSocket init
  : JK: ajp13 listening on /0.0.0.0:8411
2011-3-18 19:56:24 org.apache.jk.server.JkMain start
  : Jk running ID=0 time=0/42 config=null
2011-3-18 19:56:24 org.apache.catalina.startup.Catalina start
  : Server startup in 2676 ms

Tomcat 2 의 로 그 는 다음 과 같 습 니 다: 000, {- 64, - 88, 2, 79}, 4000, alive = 86901, id = {78 42 25 - 19 - 102 3 64 10 - 76 93 69 - 43 45 76 95 - 112}, payload = {}, command = {}, domain = {}세 션 상태 가 60 초 이내 에 수신 되 지 않 은 경우 이 작업 은 시간 초과 됩 니 다. 2011 - 3 - 18 19: 57: 48 org. apache. catalina. tribes. group. interceptors. ThroughputInterceptor 보고서 정보: ThroughputInterceptor 보고서 [Tx Msg: 1 messagesSent: 0.00 MB (총) 보 내기: 0.00 MB (응용 프로그램) 시간: 0.01 secondsTx 속도: 0.04 MB / sec (총) TxSpeed: 0.04 MB / sec(응용 프로그램) 오류 Msg: 0Rx Msg: 1 messagesRx 속도: 0.00 MB / sec (since 1st msg) 받 은: 0.00 MB] 2011 - 3 - 18 19: 57: 48 org. apache. catalina. ha. session. DeltaManager waitForSendAllSessions 정보: Manager [localhost \ #]세 션 상 태 는 11 - 3 - 18 오후 7: 57 에 보 내 125 ms. 2011 - 3 - 18 19: 57: 48 org. apache. catalina. tribes. group. interceptors. ThroughputInterceptor 보고서 정보: ThroughputInterceptor 보고서 [Tx Msg: 2 messagesSent: 0.00 MB (총) 보 내기: 0.00 MB (응용 프로그램) 시간: 0.05 초 Tx 속도: 0.02MB / sec (총) TxSpeed: 0.02MB / sec (응용 프로그램)Error Msg:0Rx Msg:2 messagesRx Speed:0.00 MB/sec (since 1st msg)Received:0.00 MB]2011 - 3 - 18 19: 57: 49 org. apache. catalina. ha. session. JvmRouteBinderValve 시작 정보: JvmRouteBinderValve started 2011 - 3 - 18 19: 57: 49 org. apache. coyote. http11. Http 11 Protocol 시작 정보: http - 80812011 - 3 - 18 19: 57: 49 org. apache. jk. comon. ChannelSocket init 정보: JK: ajp 13 listening on / 0.0.0.0: 84122011 - 3 - 18 19: 57: 49 org. apache. jk. comon. ChannelSocket init 정보: JK: ajp 13 listening on / 0.0.0.0: 84122011 - 3 - 18 19: 57: 49 org. apachee. jk. server. JkMain start 정보: Jk running ID = 0 time = 0 / 34 config = null 2011 - 3 - 18 19: 57: 49 org. apache. catalina. startup. Catalina start 정보: 2962 ms 의 서버 startup 오류 가 발생 하거나 원인 을 확인 하 십시오! skipping state transfer. cluster 그룹 에 활성 화 된 구성원 이 없습니다. "mcastBindAddress 에 추가 되 거나 추가 되 지 않 았 습 니 다.[위 에서 보고 한 바 와 같이 만약 에 그 중의 한 신문 을 시작 하 는 것 이 잘못 되 었 고 mcastBindAddress 가 수정 되 었 습 니 다. 이때 오류 가 발생 했 습 니 다. 우 리 는 상관 하지 않 아 도 됩 니 다. 다른 tomcat 를 시작 해 보 세 요. 두 번 째 tomcat 는 No members active in cluster group 이 없 으 면 두 개의 tomcat 통신 이 정상 적 이라는 것 을 표시 합 니 다.] 4. 마지막 으로 Nginx 를 설정 합 니 다.[nginx. conf 프로필 의 내용 을 붙 이 고 다운로드 주 소 는 다음 과 같 습 니 다.]http://blog.mgcrazy.com/download/nginx.conf.tgz설정 파일 에 주의 할 점: http {upstream backend {server 192.168.2.79: 8080 srun id = tomcat 1; \ # [tomcat 1 은 내 tomcat 1 server. xml 에 설 치 된 jvmroute = tomcat 1] server 192.168.2.79: 8081 srun id = tomcat 2; \ #[tomcat 2 는 제 tomcat 2 server. xml 에 설 치 된 jvmroute = tomcat 2] jvm route $cookie JSESSIONID | sessionid reverse; \ # [jvmroute, session 세 션 설정]} 설정 이 완료 되면 새 / usr / webapps / www 1 / index. jsp 테스트 페이지 를 만 듭 니 다.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
%>
http://blog.mgcrazy.com
<%out.print(request.getSession()) ;%>
<%out.println(request.getHeader("Cookie")); %>
tomcat_2     index.jsp   :
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
%>
http://wgkgood.gicp.net
<%out.print(request.getSession()) ;%>
<%out.println(request.getHeader("Cookie")); %>

nginx 를 시작 하면 됩 니 다! 마지막 테스트! 같은 브 라 우 저 창 에서 ctrl + f5 새로 고침 은 같은 tomcat 내용 입 니 다. 다른 t 로 이동 하지 않 습 니 다.omcathttp://192.168.2.79:81 결 과 는 다음 과 같다.http://wgkgood.gicp.netorg.apache.catalina.session.StandardSessionFacade@ 2d7aece8JSESSIONID = FEB19E24719ED666D1C9C50A7A09A2BA. tomcat 2 다른 브 라 우 저 창 은: http: / /blog.mgcrazy.comorg.apache.catalina.session.StandardSessionFacade@259e215brtime= 0; ltime = 1298014951125; cnnz eid = 85744900 - 12980010049 -; Hm lvt me74098a87be059a433e5a74f1b5fecf = 1298014951312; Hm lvt b7c035fd79b2c378053e06c86493de 76 = 130439158373; JSESSIONID = B2574ABB491F50F 37162479 BD3FE 761. tomcat 1 아무리 같은 창 을 새로 고침 해도 변 하지 않 습 니 다.! 그리고 tomcat 하 나 를 내 려 놓 으 면 자동 으로 세 션 을 다른 tomcat 로 옮 깁 니 다! 사용 자 는 서비스 가 끊 어 지 는 것 을 느끼 지 못 합 니 다! 두 서비스 가 정상 일 때 부하 균형 이 잡 히 고 서비스 다운 이 떨 어 지면 자동 으로 제거 하고 세 션 을 복사 할 수 있 습 니 다!

좋은 웹페이지 즐겨찾기