WAS/JBoss

[Tips] Sticky 세션 기반 부하분산

투칼론 2016. 5. 18. 13:41
반응형

Sticky 세션 기반 부하분산이 설정되어 있지 않는 경우에는 L4 또는 웹서버 플러그인에서 HTTP 요청 전달 시에 Apache에서 연결된 JBoss 인스턴스에 Round-Robin 방식으로 부하분산을 하며 요청한다.


Round-Robin 방식의 단점은 기존에 TCP 세션이 L4/웹서버와 JBoss 사이에 기 생성되어 있어도, 다른 JBoss 인스턴스로 전달될때는 또 다른 TCP 세션을 연결하는 오버헤드가 발생하는 것이다. Sticky 세션 기반 부하분산은 기존 요청된 JBoss 인스턴스로 계속 전달함으로써 불필요한 TCP 세션을 재성성하지 않는  부하분산 방식이다.


이러한 Sticky 세션 기반 부하분산을 설정하기 위해서는 Apache와 JBoss 구성 파일에 몇가지 옵션을 설정할 필요가 있다. 별도 쿠키 명을 설정하지 않았다면, jsessionid라는 기본 쿠키를 통해 JBoss 인스턴스별로 유일한 이름을 설정하고, 이를 활용하도록 설정하면 된다.



1. Apache 설정


설정파일 : worker.properties 


worker.list=router 


# Define workers using ajp13

worker.worker1.port=8009 

worker.worker1.host=192.1.1.2 

worker.worker1.type=ajp13 

worker.worker1.lbfactor=1 


worker.worker2.port=8009 

worker.worker2.host=192.1.1.3 

worker.worker2.type=ajp13 

worker.worker2.lbfactor=1 


# Define the LB worker

worker.router.type=lb 

worker.router.balanced_workers=worker1,worker2 

worker.router.method=Session

worker.router.sticky_session=True

 



2. JBoss 설정


1) jvmRoute 설정

설정파일 : server.xml


<Engine name="jboss.web" defaultHost="localhost" jvmRoute="worker1">

... ...

</Engine>



2) <use-jk>true</use-jk> 설정

설정파일 : jboss-web.xml 


 <jboss-web>

 ...


     <replication-config>

           <replication-trigger>SET</replication-trigger>

            <use-jk>true</use-jk>

     </replication-config>


 </jboss-web>