부하방지를위한*L4를이용한웹서버로드밸런싱,그리고나머지는WAS로드밸런싱을 사용 시세션 정보를세션정보를 동기화 해야하는 이슈가있습니다.
이중화는 클러스터링과 연관이있습니다.
아파치모듈중mod_jk, mod_proxy를이용해서 이중화 할 수있다.
아파치와톰캣이연동하기위해선*AJP를통해서로통신을하여야합니다.
L4란, OSI 7계층 중레이어 4의L4ip, session, port 정보를 기반으로 로드밸런싱을 수행한다. 레이어 4에서 패킷을 확인하고 세션을 관리하며, 로드밸런싱을 제공하는 스위치입니다.
AJP란,아파치가웹서버와 외부 서비스(톰캣)를 연동하기위해정한규약(프로토콜)입니다.
AJP(Apache Jserv Protocol)를 통한 로드밸런싱은 Tomcat의부하 증가나있습니다.
L4를이용한로드밸런싱은HAProxy 같은소프트웨어혹은L4하드웨어등으로이중화가가능하다.
한session time동안한WAS에지속적으로접속하게하고싶으면S아파치(웹서버) sticky세션을 된다.
그러나 sticky세션은 한서버가장애 시다른 서버로접속을하게되면세션정보가없어문제가발생한다.
Tomcat의기능 중
1)세션 복제(세션 클러스터) 기능을 켜두면 이중화된 톰캣 간에 multicast 방식으로 공유하고 싶은 정보의 전파가 가능하게 됩니다.
하지만 이 기능이 서로 다른 톰캣에 반영할때 생각보다 시간이 오래 걸립니다.
사용법
<!-- server.xml -->
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
설치 후 기본으로 포함되어 있는 server.xml 파일에서 위 라인의 주석만 제거해주면 설정 끝.
그 다음에 WEB-INF/web.xml 파일에 아래와 같이 한 줄 넣어주면 됩니다.
<!-- web.xml --><distributable/>
multicast 방식으로 동작하며 ex) address는 ‘228.0.0.4’, port는 ‘45564’를 사용하고 서버 IP는java.net.InetAddress.getLocalHost(). getHostAddress()로얻어진 IP 값으로 송출됩니다.
먼저 구동되는 서버부터 4000 ~ 4100 사이의 TCP port를 통해 reqplication message를 listening합니다.