• 부하 방지를 위한 *L4 이용한 웹서버 로드밸런싱, 그리고 나머지는  WAS 로드밸런싱을 사용 시세션 정보를세션정보를 동기화 해야하는 이슈가 있습니다.

  • 중화는 클러스터링과 연관이 있습니다.
    • 아파치 모듈  mod_jk, mod_proxy 이용해서 이중화 할  있다.
    • 아파치와 톰캣이 연동하기 위해선 *AJP 통해 서로 통신을 하여야 합니다.

  • L4란, OSI 7계층  레이어 4의 L4 ip, 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/>
  1. multicast 방식으로 동작하며 ex) address는 ‘228.0.0.4’, port는 ‘45564’를 사용하고 서버 IP는 java.net.InetAddress.getLocalHost(). getHostAddress()로얻어진 IP 값으로 송출됩니다.
  2. 먼저 구동되는 서버부터 4000 ~ 4100 사이의 TCP port를 통해 reqplication message를 listening합니다.
  3. Listener는 ClusterSessionListener, interceptor는 TcpFailureDetector MessageDispatchInterceptor가 설정됩니다.

 

  • 아파치 톰켓
    • 동적인 데이터를 처리하는 
    • 대표적인 WAS가 아파치톰캣(톰캣이라고도 부름)입니다.
  •  Jetty
    • 서블릿과 JSP 지원하는 자바 기반의 WAS이다. Jetty 다른 was에 비해가볍고 빠르다, 설정도 쉽다.

    • ant maven빌드 툴과 연동이 쉽고 was 코드에 임베딩 시켜 동작시킬  있다.

    • Jetty was에서도 세션 공유가 가능하다.

    • Jetty는 공유 데이터베이스에 세션을 유지하여 세션 클러스터링을 지원할 수 있습니다. 

    •  Jetty 인스턴스는 요청을받은 세션을 로컬로 캐시하여 요청이 서버를 종료 할 때 데이터베이스를 통해 세션에 대한 변경 사항을 기록합니다

  • 세션은 직렬화 계약을 준수해야하며 서블릿은 변경 사항이 지속되도록 Session.setAttribute () 메서드를 호출해야합니다.
    • 이러한 유형의 솔루션에서 데이터베이스는 병목 현상과 단일 실패 지점이 될 수 있습니다.

  • 세션 ID 관리자는 Jetty 인스턴스에서 호스팅되는 모든 웹앱에서 세션 ID가 고유하도록 보장하므로 Jetty 인스턴스 당 하나의 세션 ID 관리자 만있을 수 있습니다.

  • 세션 관리자는 웹 애플리케이션을 대신하여 세션 라이프 사이클 (생성 / 업데이트 / 무효화 / 만료)을 처리하므로 웹 애플리케이션 인스턴스 당 하나의 세션 관리자가 있습니다.

  • WAS 단에서 세션 클러스터링 2가지 방법에 대해 알아보았습니다.

 

+ Recent posts