apache + Memcached 부하 균형 실현, session 동기 화

앞에서 말 했 듯 이 * IT 업계 의 발전 에 따라 Liux 서버 는 기업 에서 광범 위 하 게 응용 되 었 고 사람들 이 Liux 의 응용 서비스 에 대한 요구 도 점점 높 아 졌 다. 전편 에 nginx 군집 을 구축 했다. 오늘 우 리 는 현재 가장 많이 사용 되 는 apache 군집 을 구축 했다. 그 다음 에 우 리 는 직접 자신의 고성능 웹 서버, 부하 균형 서버 를 구축 했다.
[color = red] 1. 시스템 환경 [/ color]
    :Centos 5.3 64     
Nginx :httpd-2.2.13.tar.bz2
Jdk :1.6.0_18_64
Tomcat :Apache Tomcat/6.0.30
! : :
jdk : jdk。
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter【Apache、Tomcat , /usr/src 】

cd /usr/src && wget http://blog.mgcrazy.com/download/{httpd-2.2.13.tar.bz2,apache-tomcat-6.0.30.tar.gz }

[color = red] 2. Apache [/ color] 설치
cd /usr/src && tar -jxvf httpd-2.2.13.tar.bz2 && cd httpd-2.2.13/srclib/apr &&./configure --prefix=/usr/local/apr &&make &&make install &&cd ../apr-util/ && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr &&make&&make install && cd ../../ && ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --with-mpm=worker --enable-deflate --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache --enable-proxy --enable-proxy-ajp --enable-proxy-balancer --enable-proxy-http --enable-rewrite --enable-charset-lite --disable-ipv6 --disable-dav --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util 

apache 를 직접 복사 하여 설치 할 수 있 습 니 다.
[주의 * 여기에 mod proxy 처리 Tomcat jsp 페이지 모듈 을 설치 하고 apr, apr - util 을 설치 하여 Tomcat 처리 성능 을 증가 시 킵 니 다. 물론 mod jk 방식 도 사용 할 수 있 습 니 다. mod jk 방식 이 라면 이 글 을 참고 하 십시오.
http://bbs.linuxtone.org/thread-1195-1-1.html 】
[color = red] 3. Tomcat 설치 설정: [/ color]
1. 필요 한 가방 을 / usr / src 디 렉 터 리 에 다운로드 합 니 다.먼저 jdk 설치:
chmod o+x jdk* && ./jdk* ;패 키 지 는 Enter 키 를 누 르 는 것 을 알려 줍 니 다. 우 리 는 알림 에 따라 설치 하면 됩 니 다. 압축 을 풀 고 현재 디 렉 터 리 에서 jdk 1.6.0 을 생 성 합 니 다.이 폴 더
mkdir -p /usr/java && mv jdk1.6.0_18 /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 //
java –version // java
cd /usr/src && tar xzf apache-tomcat-6.0.30.tar.gz

mv apache-tomcat-6.0.30 /usr/local/tomcat_1 && 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/tomcat_1/bin/setenv.sh /usr/local/tomcat_2/bin !

tomcat bin *.sh , chmod o+x *.sh !
tomcat :mkdir -p /usr/webapps/{www_1,www_2}

3. Tomcat 의 server. xml 파일 설정
두 Tomcat 가 설정 한 cluster 안의 포트 는 각각 4000, 4001 이 므 로 서로 다른 포트 로 설정 해 야 합 니 다.그리고 각각 두 개의 jvmroute 이름 을 설정 해 야 합 니 다. 나중에 apache 설정 파일 에서 사용 할 것 입 니 다!
[color = red] 4. Tomcat 세 션 세 션 복사 [/ color]
[quote] 각각 두 tomcat 의 conf 아래 웹. xml 파일 에 다음 줄 을 추가 하면 됩 니 다.
웹 애플 리 케 이 션 에 있 는 WEB - INF 디 렉 터 리 에 있 는 웹. xml 파일 을 수정 하고 탭 을 추가 하 며 응용 웹. xml 에 다음 과 같이 추가 할 수 있 습 니 다.
그냥 그 전에 넣 으 면 돼 요.
이것 은 tomcat 에 가입 한 session 복사 입 니 다. tomcat 클 러 스 터 를 만 들 려 면 이 단계 가 필요 합 니 다. 그렇지 않 으 면 사용자 의 session 을 정상적으로 사용 할 수 없습니다.
설정 이 끝 난 후, 우 리 는 방송 을 테스트 합 시다.
java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1
java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2[/quote]
잘못 보고 하지 않 으 면 정상적으로 방송 할 수 있다.
tomcat - replication. jar 다운로드:http://cvs.apache.org/~fhanik/tomcat-replication.jar
두 대의 기계 라면 tcpdump 로 가방 을 잡 아 보 세 요!
Tomcat 설정 완료, tomcat 2 개 시작, tomcat 1, tomcat 시작1. 시작 로 그 는 다음 과 같 습 니 다.
[quote] information: http - 8080 에서 Coyote HTTP / 1.1 초기 화
2011-3-18 19:56:21 org.apache.catalina.startup.Catalina load
정보: 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
정보: 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
정보: 클 러 스 터 mcast soTimeout to 500
2011-3-18 19:56:21 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers
정보: 클 러 스 터 멤버 십 을 설정 하기 위해 1000 밀리초 동안 잠 자기, 시작 수준: 4
2011-3-18 19:56:22 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers
정보: 완료 수면, 회원 설립, 시작 수준: 4
2011-3-18 19:56:22 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers
정보: 클 러 스 터 멤버 십 을 설정 하기 위해 1000 밀리초 동안 잠 자기, start level: 8
2011-3-18 19:56:23 org.apache.catalina.tribes.membership.McastServiceImpl waitForMembers
정보: 완료 수면, 회원 설립, 시작 수준: 8
2011-3-18 19:56:23 org.apache.catalina.ha.deploy.FarmWarDeployer start
심각: FarmWarDeployer 는 호스트 클 러 스 터 하위 요소 로 만 작 동 할 수 있 습 니 다!
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 \ #]: 상태 전송 건 너 뛰 기. 클 러 스 터 그룹 에 활성 화 된 구성원 이 없습니다.
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
정보: http - 8080 에서 Coyote HTTP / 1.1 시작
2011-3-18 19:56:24 org.apache.jk.common.ChannelSocket init
정보: JK: ajp 13 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
정보: 서버 시작 2676 ms [/ quote]
Tomcat_2 의 로 그 는 다음 과 같다.
[quote]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={}, ]. This operation will timeout if no session state has been received within 60 seconds.
2011-3-18 19:57:48 org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor report
정보: ThroughputInterceptor Report [
Tx Msg:1 messages
Sent:0.00 MB (total)
Sent:0.00 MB (application)
Time:0.01 seconds
Tx Speed:0.04 MB/sec (total)
TxSpeed:0.04 MB/sec (application)
Error Msg:0
Rx Msg:1 messages
Rx Speed:0.00 MB/sec (since 1st msg)
Received:0.00 MB]
2011-3-18 19:57:48 org.apache.catalina.ha.session.DeltaManager waitForSendAllSessions
정보: Manager [localhost \ #];session state send at 11 - 3 - 18 오후 7: 57 수신 125 ms.
2011-3-18 19:57:48 org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor report
정보: ThroughputInterceptor Report [
Tx Msg:2 messages
Sent:0.00 MB (total)
Sent:0.00 MB (application)
Time:0.05 seconds
Tx Speed:0.02 MB/sec (total)
TxSpeed:0.02 MB/sec (application)
Error Msg:0
Rx Msg:2 messages
Rx Speed:0.00 MB/sec (since 1st msg)
Received:0.00 MB]
2011-3-18 19:57:49 org.apache.catalina.ha.session.JvmRouteBinderValve start
정보: JvmRouteBinderValve started
2011-3-18 19:57:49 org.apache.coyote.http11.Http11Protocol start
정보: Starting Coyote HTTP / 1.1 on http - 8081
2011-3-18 19:57:49 org.apache.jk.common.ChannelSocket init
정보: JK: ajp 13 listening on / 0.0.0.0: 8412
2011-3-18 19:57:49 org.apache.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 [/ quote]
잘못 보고 하거나 원인 을 확인 하 세 요!
skipping state transfer. No members active in cluster group.”
mcastBindAddress 가 추가 되 지 않 았 거나 잘못 추가 되 었 습 니 다.
위 에서 보고 한 바 와 같이 만약 에 그 중의 한 신문 을 시작 하 는 것 이 잘못 되 었 고 mcastBindAddress 가 수정 되 었 습 니 다. 이때 오류 가 발생 했 습 니 다. 우 리 는 상관 하지 않 아 도 됩 니 다. 다른 tomcat 를 시작 해 보 세 요. 두 번 째 tomcat 는 No members active in cluster group 이 없 으 면 두 개의 tomcat 가 정상적으로 통 하 는 것 을 표시 합 니 다.
[color = red] 5. Apache + Session [/ color] 설정
vi vhosts. conf proxy. conf 파일 을 httpd. conf 파일 마지막 줄 에 추가 합 니 다.
Include conf/vhosts.conf  
Include conf/proxy.conf

위의 두 줄 과 같 으 면 된다!
다음 내용 을 vhosts. conf 에 기록 합 니 다:
 
ServerAdmin [email protected]
DocumentRoot "/usr/webapps/www”
ServerName 192.168.2.79

AllowOverride None
Options None
Order allow,deny
Allow from all

RewriteEngine On
ProxyPreserveHost On
RewriteRule ^$ balancer://wwwCluster/ [P,L,NC]
RewriteRule ^/(.*)$ balancer://wwwCluster/$1 [P,L,NC]
ProxyPass / balancer://wwwCluster/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://wwwCluster/


BalancerMember ajp://localhost:8411 loadfactor=1 route=tomcat1 smax=5 max=20 ttl=120 retry=300 timeout=15
BalancerMember ajp://localhost:8412 loadfactor=1 route=tomcat2 smax=5 max=20 ttl=120 retry=300 timeout=15


메모: * / usr / webapps / www 내용 은 사실 / usr / webapps / www1 은 같다.마지막 빨간색 부분 은 session 복사 부분 입 니 다.녹색 글꼴 부분 은 tomcat 요청 을 처리 합 니 다.이 코드 는 가상 호스트 에 넣 어야 합 니 다. proxy. conf 에 넣 으 면 session 바 인 딩 이 적용 되 지 않 습 니 다.httpd. conf 에 Include conf / proxy. conf 설정 을 설명 합 니 다.
[color = red] 6. 세 션 공유 Memcache [/ color] 설정
다음 memcache 패키지 다운로드: 본 사이트 통합 다운로드:
http://blog.mgcrazy.com/download/session-memcache/javolution-5.4.3.1.jar  
http://blog.mgcrazy.com/download/session-memcache/memcached-2.5.jar
http://blog.mgcrazy.com/download/session-memcache/memcached-session-manager-1.3.0.jar
http://blog.mgcrazy.com/download/session-memcache/msm-javolution-serializer-1.3.0.jar
http://blog.mgcrazy.com/download/session-memcache/msm-javolution-serializer-cglib-1.3.0.jar
http://blog.mgcrazy.com/download/session-memcache/msm-javolution-serializer-jodatime-1.3.0.jar


http://chinaapp.sinaapp.com//download/memcached-session/memcached-session-manager.tar.gz

다운로드 후 각각 두 개의 tomcat lib 아래 에 놓 으 면 됩 니 다: [/ usr / local / tomcat 1 / lib 아래 에 놓 으 면 됩 니 다]
그리고 각각 두 개의 tomcat 설정 파일: server. xml 마지막 줄 에 다음 코드 를 추가 합 니 다.
        memcachedNodes=”n1:192.168.0.84:11211″      
requestUriIgnorePattern=”.*\.(png|gif|jpg|css|js)$”
sessionBackupAsync=”false”
sessionBackupTimeout=”100″
transcoderFactoryClass=”de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory”
copyCollectionsForSerialization=”false” />

만약 여러 개의 memcache 캐 시 서버 가 있다 면, 위의 192.168.0.84: 11211 이후 에 빈 칸 으로 분리 할 수 있 습 니 다!예 를 들 면:
n1: 192.168.084: 1211 n2: 192.168.084: 1213 이면 됩 니 다!
tomcat_1. 발표 디 렉 터 리 index. jsp 내용 은:
 
%>
http://blog.mgcrazy.com



[/quote]
tomcat_2 index.jsp :
[quote]
%>
http://wgkgood.gicp.net




그래서 설정 이 완료 되면 tomcat 와 apache 를 다시 시작 하면 됩 니 다!
마지막 테스트!같은 ie 브 라 우 저 창 에서 ctrl + f5 새로 고침 은 같은 tomcat 내용 입 니 다. 다른 tomcat 로 이동 하지 않 습 니 다.
http://192.168.2.79 결 과 는 다음 과 같다.
http://wgkgood.gicp.net  
org.apache.catalina.session.StandardSessionFacade@2d7aece8
JSESSIONID=FEB19E24719ED666D1C9C50A7A09A2BA.tomcat2
firefox :
http://blog.mgcrazy.com
org.apache.catalina.session.StandardSessionFacade@259e215b
rtime=0; ltime=1298014951125; cnzz_eid=85744900-1298010049-; Hm_lvt_0e74098a87be059a433e5a74f1b5fecf=1298014951312; Hm_lvt_b7c035fd79b2c378053e06c86493de76=1300439158373; JSESSIONID=B2574ABB491F50F37162479BD3FE761C.tomcat1

네가 아무리 같은 창 을 새로 고침 해도 변 하지 않 을 거 야!
마지막 으로 본 환경 은 한 대의 기계 일 수도 있 고 여러 대의 기계 일 수도 있 으 며 부하 ip 만 수정 하면 된다.
apache + tomcat + session 은 고장 전 이 를 실현 하지 못 하고 nginx + tomcat + session 으로 고장 전 이 를 실현 하거나 LVS + 백 엔 드 apache 균형 을 실현 할 수 있 습 니 다.또한 session 바 인 딩 을 제거 하면 apache + tomcat 부하 가 균형 적 이 고 고장 으로 전 이 될 수 있 습 니 다.
본문 참고:
[url]http://blog.mgcrazy.com/thread-976-1.html[/url]
[url]http://bbs.linuxtone.org/thread-1195-1-1.html[/url]
[url]http://wenku.baidu.com/view/9be81bd376a20029bd642d6f.html[/url]
[url]http://wgkgood.blog.51cto.com/1192594/546223[/url]

좋은 웹페이지 즐겨찾기