위상 다이어그램
준비 환경:
때문에 컴퓨터 구성 썩어 가상 기계 유한 때문에 한 가상 머신 동시에 대해 다양한 서버 사용 유형.
두 tomcat 노드: 172.16.19.1(tomcatA.luo.com), 172.16.19.21(tomcatB.luo.com)
두 memcached 노드: 172.16.19.21, 172.16.19.22
한 부하 균형 노드(httpd): 172.16.19.1
쌍방이 모두 대한 기본적인 jdk 및 tomcat 설치
설치jdk
패키지 다운로드 설치 및 설치:
# rpm -ivh jdk-7u9-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk ########################################### [100%]
Unpacking JAR files...
rt.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/rt.pack
jsse.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/jsse.pack
charsets.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/charsets.pack
tools.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/lib/tools.pack
localedata.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/ext/localedata.pack
설명: 이 오류 무시 잠시 돼, 안 영향을 사용
설치 디렉터리 보기 java
# ll /usr/java/
total 4
lrwxrwxrwx 1 root root 16 Sep 26 06:03 default -> /usr/java/latest
drwxr-xr-x 10 root root 4096 Sep 26 06:03 jdk1.7.0_09
lrwxrwxrwx 1 root root 21 Sep 26 06:03 latest -> /usr/java/jdk1.7.0_09
latest링크 지정한 최신 버전
수정 환경 변수
# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
# . /etc/profile.d/java.sh
버전 정보 보기
# java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
설치Tomcat
압축을 풀 결코 링크
# tar -xf apache-tomcat-7.0.42.tar.gz -C /usr/local
# cd /usr/local
# ln -sv apache-tomcat-7.0.42 tomcat
`tomcat' -> `apache-tomcat-7.0.42'
수정 환경 변수
# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
# . /etc/profile.d/tomcat.sh
시작tomcat
# catalina.sh start # 혹은 명령어 사용하기 startup.sh, 기본 포트 사용 8080 먼저 포트 결정 안 점용되었다
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
보기 시작 포트
# netstat -tnlp |grep java
tcp 0 0 :::8080 :::* LISTEN 4357/java
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 4357/java
tcp 0 0 :::8009 :::* LISTEN 4357/java
보기 버전
# cd /usr/local/tomcat
# catalina.sh version 또는 version.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/latest
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.42
Server built: Jul 2 2013 08:57:41
Server number: 7.0.42.0
OS Name: Linux
OS Version: 2.6.32-431.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_09-b05
JVM Vendor: Oracle Corporation
테스트 tomcat 성공적으로 실행:
둘째, 설정 대리, 부하 균형, memcached
memcached-session-manager프로젝트 주소, http://code.google.com/p/memcached-session-manager/
다음 파일을 다운로드 jar ~ 각 tomcat 노드 tomcat 설치 디렉터리 아래 lib 디렉터리에 중 소프트웨어 버전 번호 나랑 tomcat 같은 버전 번호.
node, node1 노드:
memcached-session-manager-1.8.2.jar
memcached-session-manager-tc7-1.8.2.jar
msm-javolution-serializer-1.8.2.jar
spymemcached-2.10.2.jar
javolution-5.5.1.jar
각각 두 tomcat 위의 어떤 host 위에 정의 테스트 하는 context 용기 있으며 이 가운데 만듭니다. 세션 관리자, 다음과 같이 하는 지시 (node, node1 노드):
<Context path="/test" docBase="/usr/local/tomcat/webapps/test" reloadable="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.16.19.21:11211,n2:172.16.19.22:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>
</Context>
각각 두 context 제공 테스트 페이지:node(tomcatA):
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
# vim /usr/local/tomcat/webapps/test/index.jsp
다음 컨텐츠 추가:
<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color="red">TomcatA.luo.com</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("luo.com","luo.com"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
node1(tomcatB):
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
# vim /usr/local/tomcat/webapps/test/index.jsp
다음 컨텐츠 추가:
<%@ page language="java" %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><font color="red">TomcatB.luo.com</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("luo.com","luo.com"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>
지금 node 노드 (172.16.19.1) 에서 설정 역방향 대리 부하 균형 내용
새 파일 수 mod_http.con 비슷한 다음과 같다 개 주시기 바랍니다:
설정 apache mod_proxy 모듈 및 Tomcat 연결을 통해서
관련 보기 모듈 사용 여부
[root@node ~]# httpd -M |grep proxy
Syntax OK
proxy_module (shared)
proxy_balancer_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_ajp_module (shared)
proxy_connect_module (shared)
# vim /etc/httpd/conf.d/mod_http.conf
<Proxy balancer://tomcat>
BalancerMember http://172.16.19.1:8080 loadfactor=1
BalancerMember http://172.16.19.21:8080 loadfactor=1
# 사용하면 사용 ajp 은 아래 위 현행 현행 바꿀 수 있다
# BalancerMember ajp://172.16.19.1:8009 loadfactor=1
# BalancerMember ajp://172.16.19.21:8009 loadfactor=1
ProxySet lbmethod=byrequests
</Proxy>
<Location /status>
SetHandler balancer-manager
ProxyPass !
Order allow,deny
Allow from all
</Location>
ProxyPass / balancer://tomcat/
ProxyPassReverse / balancer://tomcat/
mod_jk 있는 부하 균형 기반# yum -y install httpd-devel
# rpm -ql httpd-devel |grep apxs
# tar xf tomcat-connectors-1.2.40-src.tar.gz
# cd tomcat-connectors-1.2.40-src/native
# ./configure --with-apxs=/usr/sbin/apxs
# make && make install
# cat /etc/httpd/conf.d/mod_jk.conf #새 파일 추가, 그 전에 추가 mod_http.conf 잠시 고쳐 후속 개
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/httpd/conf.d/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug #디버그 할 때 사용하는 것을
JkMount /* lbA
JkMount /status/ statA
# cat /etc/httpd/conf.d/workers.properties
worker.list = lbA,statA
worker.TomcatA.type = ajp13
worker.TomcatA.host = 172.16.19.1
worker.TomcatA.port = 8009
worker.TomcatA.lbfactor = 1
worker.TomcatB.type = ajp13
worker.TomcatB.host = 172.16.19.21
worker.TomcatB.port = 8009
worker.TomcatB.lbfactor = 1
worker.lbA.type = lb
worker.lbA.sticky_session = 0
worker.lbA.balance_workers = TomcatA,TomcatB
worker.statA.type = status
지금 양쪽 주 설정 파일에 더하기 jvmRoute 인자를 받음
# cat /usr/local/tomcat/conf/server.xml
<Engine name="catalina" defaultHost="localhost" jvmRoute="TomcatA ">
<Engine name="catalina" defaultHost="localhost" jvmRoute="TomcatB ">
# catalina.sh start
# service httpd restart
세, 설정 node1 및 node2 것이다memcached
# yum install –y install memcached
# service memcached start
# ss –tnl |grep 11211
네, 테스트 결과
브라우저에서 방문, 결과는 다음과 같다 개 보이다, 그 session ID 는 부하 균형 환경에서 바꾸지 않기.
부하 균형 및 session 바인딩 이미 이룰 수 있다
2, 아날로그 node2 고장, 정지 node2 볼 수 있는 memcached, 이미 이동 n1 (memcached1) 위에 거야 그리고 session 바꾸지 않기
[root@node2 ~]# service memcached stop
글쓴이 준호 작성일 2014-10-03 01:22