본문 바로가기

나는개발자다!!/서버

Tomcat 세션 클러스터링!!! (6.0기준)

 우선 서버에서 사용하는

로드 밸런싱과 클러스터링에 대해서 간단하게 적어봅니다.

스타에 비유해서 설명을 하겠습니다.

나는 사람이니 테란이라고 지칭하고 적은 저그입니다.

 

로드 밸러싱이란

저그의 기지 A, B, C를 발견한 상황에서 동시다발적으로 전투를 진행중입니다. (A, B, C를 실시간 서비스 중인 서버라고 생각하세요)

내 본진에서 마린이 1마리 생산되었습니다. 이떄 이 마린을 A, B, C 중에서 어디로 보내야 할까요?? (가장 적절한 곳으로 보내야 하겠죠?)

이것이 바로 로드 밸런싱입니다.

 

주가 되는 서버가 있고(스위치 일수도 있고, apache일 수도 있는거고, 다른 장치가 될 수도 있겠죠)

주서버에 요청이 들어왔을때 A, B, C중에서 어디로 요청을 던저 줄 것인가를 분배하는 것을 로드 밸런싱이라고 합니다.

 

 

 

그럼 클러스터링은 뭘까요???

 

클러스터링이란....

이번엔 A, B, C가 내 멀티기지라고 생각합시다.

A, B, C에서 각각 SCV가 각각의 커맨드에 자원을 넣어도?? 어떻게 되죠?

A, B, C 각각에서 자원이 관리되는게 아니라  그냥 한곳에서 관리되죠.

이것이 바로 클러스터링 입니다.

묶어서 관리하겠다 이것이죠.

즉 세션 클러스터링을 예로 들면

A서버에서 A세션을 생성했을때

B서버와 C서버에서도 A세션을 동일하게 사용이 되는 것입니다.

 

 

 

 

 

 

설정법에 대해서 확인 하도록 합시다.

※ 여기서 주의주의!!! 현재 제 설정법은 이클립스 2개안에 각각 Tomcat을 1개씩 잡고 하는 상황입니다.

이클립스에서 띄우는 Tomcat과 그냥 Tomcat을 사용하는 ( 바이너리를 풀어서 설치하거나 install하는 것도 마찬가지) 것은

Path가 다르다.

 

 

이클립스 1번의 서버 1의 Tomcat에서의 설정

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

주석을 해제해주시고

 

<Host> 태그 안에

 

<Membership address="228.0.0.5"
     className="org.apache.catalina.tribes.membership.McastService"
     dropTime="3000" frequency="500" port="45564" />

 

    <Receiver address="자기IP" autoBind="100"
     className="org.apache.catalina.tribes.transport.nio.NioReceiver"
     maxThreads="6" port="4001" selectorTimeout="5000" />

 

넣어주면 된다.

Membership 에서 동일하게 설정한(address겠죠. 저 IP는 아무렇게나 해도 됨. 묶을 곳에서 동일하게만 설정하면 되는 것임)

서버는 클러스터링 되는 것입니다.

 

Receiver 태그를 주의해서 봐야하는데 address부분은 다른 블로그를 보면 auto로 되어 있던데

그게 안 먹는 경우도 종종 있으니 꼭 자신의 IP로 직접 넣어줍시다.

그리고 port를 다르게 주면 됩니다.

ex ) A = 4001 B = 4002 C = 4003으로 해 주면 됩니다. 

그리고 다음으로 web-app안에 있는 web.xml에

<distributable  /> 태그를 넣어만 주면 된다.!!

그러면 끝이다~

쉽다 ㅎ 

 

 

 

 

위에서 말한 이클립스 일때 조심해야하는것이........

<distributable  /> 를 넣는 web.xml을 보면

예를 들어서 이클립스에서 A서버면

주소에 www.내주소/A 이런식으로 나가게 되는데....

실제로는 web.xml의 위치를 www.내주소까지만 잡는다...

그러니 B서버에서는 오류를 내 뿜는다. www.내주소/A 이거 없음!! 이렇게 나옴.

그러니 이클립스에서는 server탭에서 path를 /A를 /로 수정해줘야 먹힌다!!!!!!!!!

 

첨부파일로 A, B를 올리니 각각 이클립스에서 1개씩 올려서 해보면 좋을 것 같다!!

 

※ 물론 이걸 응용하면 그냥 Tomcat에서도 가능하게 만들 수 있어야 한다~

 

※ 정말 중요한 사항으로!!!!! 혹시라도 이클립스에서 내부 브라우저로 하면 안 먹힌다. 세션의 의미에 대해서 다시 생각해보면 된다.

 

 

 

 

A.7z

 

B.7z