블로그 이미지
분무기로 구름을 만들어 비가 내리다. 비내리는사막

카테고리

분류 전체보기 (28)
Cloud (9)
IT용어 (1)
뽐뿌 (1)
개인 (1)
Total
Today
Yesterday

달력

« » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

공지사항

최근에 올라온 글



출처 : http://www.programkr.com/blog/MQjM2ADMwYTy.html


session 세션 유지 의 session 서버 -tomcat + msm + memcached

위상 다이어그램

image

준비 환경: 
때문에 컴퓨터 구성 썩어 가상 기계 유한 때문에 한 가상 머신 동시에 대해 다양한 서버 사용 유형. 
두 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 성공적으로 실행: 
image

둘째, 설정 대리, 부하 균형, 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 는 부하 균형 환경에서 바꾸지 않기.

image
부하 균형 및 session 바인딩 이미 이룰 수 있다

2, 아날로그 node2 고장, 정지 node2 볼 수 있는 memcached, 이미 이동 n1 (memcached1) 위에 거야 그리고 session 바꾸지 않기
[root@node2 ~]# service memcached stop

image

글쓴이 준호 작성일 2014-10-03 01:22


Posted by 비내리는사막
, |

최근에 달린 댓글

글 보관함