본문 바로가기

Session clustering (udp/tcp), sticky session

2018. 11. 1.

세션 클러스터링 기본
- JBoss Node Name
Node 별로 Unique하게 설정: -Djboss.node.name

- jvmRoute
Node별로 jvmRout 또는 instance-id 설정
UseJK=true로 설정
 
- 클러스터링 관련 네트웍 설정
Clustering 방식 설정: -Djboss.default.jgroups.stack
UDP멀티캐스트 주소설정: -Djboss.default.multicast.address
UDP멀티캐스트 포트: 45688 (standalone-ha.xml)
최초 연결할 클러스터 멤버: -Djgroups.tcpping.initial_hosts
TCPPING 설정: standalone-ha.xm
 
- 기본 사용포트 확인
configuration/standalone-ha.xml

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
    <socket-binding name="ajp" port="8009"/>
    <socket-binding name="http" port="8080"/>
    <socket-binding name="https" port="8443"/>
    <socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
    <socket-binding name="jgroups-tcp" port="7600"/>
    <socket-binding name="jgroups-tcp-fd" port="57600"/>
    <socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
    <socket-binding name="jgroups-udp-fd" port="54200"/>
    <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
    <socket-binding name="remoting" port="4447"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>


세션 클러스터링 설정

1) TCP / UDP 공통사항

NODE_NAME설정
Node별로 Name을 Unique하게 설정을 한다.


env.sh

-Djboss.node.name=$NODE_NAME"

 

jvmRoute 또는 instance-id 설정


env.properties

    ...

    jvmRoute=server1


    또는 instance-id 지정




    설정파일

    <subsystem xmlns="urn:jboss:domain:web:2.1" default-virtual-server="default-host" instance-id="server1" native="true">


useJK 설정

env.properties
    ...
    UseJK=true






2) UDP방식 설정


env.sh
export MULTICAST_ADDR=230.1.0.1   # Default로 45688 사용 (standalone-ha.xml)
 
# jgroups setting
export JAVA_OPTS=" $JAVA_OPTS -Djboss.default.jgroups.stack=udp"
export JAVA_OPTS=" $JAVA_OPTS -Djboss.default.multicast.address=$MULTICAST_ADDR"

 

3) TCP방식 설정


env.sh
# jgroups setting
export JAVA_OPTS=" $JAVA_OPTS -Djboss.default.jgroups.stack=tcp"
export JAVA_OPTS=" $JAVA_OPTS -Djgroups.tcpping.initial_hosts=192.168.0.56[7600],192.168.0.56[7700], "

standalone-ha.xml
<stack name="tcp">
    <transport type="TCP" socket-binding="jgroups-tcp"/>
    <protocol type="TCPPING" socket-binding="jgroups-mping">
        <property name="initial_hosts">
            ${jgroups.tcpping.initial_hosts:localhost:7600,localhost:7600}
        </property>
        <property name="port_range">
            0
        </property>
        <property name="timeout">
            3000
        </property>
        <property name="num_initial_members">
            3
        </property>
    </protocol>
    <protocol type="MERGE2"/>
    <protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/>
    <protocol type="FD"/>
    <protocol type="VERIFY_SUSPECT"/>
    <protocol type="pbcast.NAKACK"/>
    <protocol type="UNICAST2"/>
    <protocol type="pbcast.STABLE"/>
    <protocol type="pbcast.GMS"/>
    <protocol type="UFC"/>
    <protocol type="MFC"/>
    <protocol type="FRAG2"/>
    <protocol type="RSVP"/>
</stack>


 Sticky Session 설정

env.properties

jvmRoute=server1    # 위에 언급된 instance-id를 통해서도 설정 가능
UseJK=true



※ Application별 클러스터링 설정


어플리케이션 의 web.xml

<distributable/>

라인 추가 시 enable
주석시 disable

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>simple test</display-name>
  <distributable/>


  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <session-config>
    <session-timeout>10</session-timeout>
  </session-config>
  <!--
        <filter>
           <filter-name>Set Character Encoding</filter-name>
           <filter-class>filter.SetCharacterEncodingFilter</filter-class>
           <init-param>
               <param-name>encoding</param-name>
               <param-value>UTF-8</param-value>
           </init-param>
        </filter>

        <filter-mapping>
           <filter-name>Set Character Encoding</filter-name>
           <url-pattern>/*</url-pattern>
        </filter-mapping>
         -->
</web-app>




댓글