강좌

  • 웹서버
  • 아파치
  • 톰켓
HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
[Tomcat] tomcat sticky session (로트밸런스의 연장선)
조회 : 12,712  


1. sticky session이란  mod_jk를 이용하여 로드벨러스를 하는 연장선 상에서 생각할 수 있다.

     로드밸런스를 할 경우 가장 문제가 되는 부분인 "사용자 session을 어떻게 유지할까 ?" 이다

     tomcat의 cluster 기능을 이용을 해도 되지만  앞단에 방화벽등 multicast를 차단하거나

    스위치나 장비에서 지원하지않으면 사용할 벙법이 없다 .

    이렬경우 세션에 따라 지정된 서버로 보내는 역활을 하여 세션이 생선된 서버로 보내는 구조가 되면

    세션의 공유 없이 로드벨러스가 가능하다.


2.  sticky session은  mod_jk에서  세션을 생성할 때 사용자 PC에 생성하는 쿠키에 기록되는 세션 아이디를

    이용하여 구분하여 보내며  기존의 세션 아이디 뒤에  jvmroutid를 붙혀 어느서버로 갈지 결정을 한다.

    다음과 같이 생성된다   

    세션 아이디  BCEA53E7CF8E0E29DECEDCA30FB06C51

    jvmroutid tomcatB

    BCEA53E7CF8E0E29DECEDCA30FB06C51.tomcatB


3.  설정방법

       workers.properties
       ....
       worker.loadbalancer.type=lb
       worker.loadbalancer.balanced_workers=tomcatA,tomcatB
       worker.loadbalancer.sticky_session=1
    worker.loadBalancer.method=T
       #worker.loadBalancer.sticky_session_force=1
       ....


    worker.loadBalancer.method  를 이용하면 다양한 방식으로 로드벨런스를 할 수 있다

    R[equest]  :  기본으로 설정되었으며  요청에 따른 분산
    S[ession]    :  연결된 세션에 따라 분산
    T[raffic]      :  발생되는 트래픽에 따라 분산
    B[usyness]  : 서버의 부하에 따른 분산시 이용한다.


       tomcat1 : server.xml
       ....
      <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatA">
       ....

       tomca12 : server.xml
       ....
      <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatB">
       ....

4. 위와 같이 설정을 한 후  각 서버를 리스타트를 하고 나면 적용이 된다 .

    이후부터  tomcatA에서 세션이 생성되면  tomcatA서버로만 접속을 하며  tomcatB에서 세션이 생성되면  tomcatB서버
   로만 접속을 하게된다.


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1789


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
이재석
본명 : 이재석
e-mail : locli앳superuser.co.kr
소속 : (주)수퍼유저코리아