블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
04-26 07:42
 

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 

최근에 올라온 글

최근에 달린 댓글

'클러스터링'에 해당되는 글 2건

  1. 2010.05.23 JBoss 5.1.0 GA 클러스터링 - 2 Nodes on Multi-Servers
  2. 2010.05.23 JBoss 5.1.0 GA 세션 클러스터링 1

실제로 서비스를 하는 운영환경이라면 WAS 서버를 여러 대를 두어 가용성을 높일 수도 있습니다.

이러한 경우에는 L4 스위치가 로드 밸런싱을 하도록 구성되는 경우가 많습니다.


[그림 1] 2 Nodes on Multi-Servers 구성도

[그림 1] 의 구성은 L4 스위치가 두 개의 HTTP Server 앞단에서 로드밸런싱을 수행하며, 각 서버마다 두 개의 WAS 노드(인스턴스) 가 있습니다. 이와 같은 구성을 위해 앞에서 소개했던 클러스터링에서 몇 가지의 추가적인 설정이 필요로 합니다.

JBoss 의 노드(인스턴스) 구성은 node3, node4 로 설정된다는 점과 실행 옵션에서 -Djboss.service.binding.set=ports 의 값이 node3 은 ports-default, node4 는 ports-01 이라는 점만 유념하시면 됩니다.

실제로 가장 중요한 부분은 Apache HTTP Server 의 workers.properties 설정입니다.

<APACHE_HOME>/conf/workers.properties
# Define list of workers that will be used
# for mapping requests
worker.list=loadbalancer,status

# Define Node1
worker.node1.port=8009
worker.node1.host=192.168.0.11
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.cachesize=10

# Define Node2
worker.node2.port=8109
worker.node2.host=192.168.0.11
worker.node2.type=ajp13
worker.node2.lbfactor=1
worker.node2.cachesize=10

# Define Node3
worker.node3.port=8009
worker.node3.host=192.168.0.12
worker.node3.type=ajp13
worker.node3.lbfactor=1
worker.node3.cachesize=10

# Define Node4
worker.node4.port=8109
worker.node4.host=192.168.0.12
worker.node4.type=ajp13
worker.node4.lbfactor=1
worker.node4.cachesize=10


# Load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2,node3,node4
worker.loadbalancer.sticky_session=1
#worker.list=loadbalancer

# Status worker for managing load balancer
worker.status.type=status

각 서버의 Apache HTTP Server 설정을 위와 같이 바꾸어주면 자신의 서버에 올려져 있는 인스턴스 뿐만 아니라 다른 서버의 인스턴스까지 요청이 가능하게 됩니다.

단, 이러한 구성의 경우 세션 복제로 인한 오버헤드가 발생할 수 있습니다. buddy-replication 설정을 통해 근접한 인스턴스에게만 세션 복제를 할 수 있게 설정할 수 있습니다.
node1 -> node2, node2 -> node3, node3 -> node4, node4 -> node1  이런 방식으로 buddy-replication 을 설정하면 하나의 노드가 죽더라도 buddy 노드가 해당 세션을 복제 받을 수 있을 것 입니다. 하지만 이러한 경우 sticky-session 설정이 되어야 할 것으로 생각되네요...

쉬울지 알고 접근했던 JBoss 클러스터링인데, 역시 뭐든지 실제로 해보고 느껴봐야 할 것 같습니다.
안해봤으면 말을 하지 마요~ 어후...

Posted by 자수씨
, |

JBoss 에서 고가용성(High Availability) 환경을 구성하기 위해서는 세션 클러스터링이 필요합니다.

테스트에 사용된 환경은 다음과 같습니다.
System: VMWare
OS: CentOS 5.5 x86-64
HTTP Server: Apache HTTP Server 2.2.3
WAS: JBoss 5.1.0 GA



[그림 1] 서버 구성

위의 [그림 1] 에서 보는 것 처럼 하나의 시스템에 하나의 Apache HTTP Server 와 두 개의 JBoss Web Application Server 로 구성할 것 입니다.








 

어떻게 보면 테스트 환경은 쉽게 구성될 수 있지만, 실제로 운영환경에서는 각 설정값을 변경해주어야 재대로 성능을 발휘할 수 있습니다. 그리고 방화벽이 있는 경우 세션 복제를 위한 멀티캐스트 송수신이 정상적으로 안될 수도 있습니다.

간단한 웹 어플리케이션이 포함된 JBoss 인스턴스 하나 띄우는데 메모리가 600 메가 정도 사용하는 것 같습니다. 한 시스템에 2개의 인스턴스를 띄우려면 적어도 인스턴스당 1.5 기가의 메모리가 필요하지 않을까 생각이 됩니다.

이외에도 많은 변수가 있기에 실제 운영 환경에 배포하기 위해서는 많은 공수가 들 것으로 생각됩니다.


참고자료
http://www.jboss.org/file-access/default/members/jbossclustering/freezone/docs/cluster_guide/5.1/pdf/Clustering_Guide.pdf
http://community.jboss.org/wiki/ConfigurationChangesforClusteredWebApplicationsinAS5
http://www.datadisk.co.uk/html_docs/java_app/jboss5/jboss5_clustering.htm

Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백