프로젝트를 진행하면서 JBoss의 내부를 샅샅이 살피고 있습니다. 4.X의 Micro Kernel은 볼 생각을 아예 하지 않았었습니다. 닥치면 해야 한다고 지금은 자의반 타의반으로 하다보니 JBoss의 능력에 놀라움을 금하지 못하겠습니다.
저는 지금 레드햇에 다니고 있지만 소위 오픈소스 개발자의 수에 대해서는 관심이 없다가 얼마전 Red Hat 리눅스 관련 오픈 소스 개발자들이 컴퓨니티 포함하여 10만에 육박한다고 하고 JBoss 또한 수만명의 전세계 개발자들이 기능 개선 등을 위해 contibutor가 되거나 커뮤니티에 기여를하고 있습니다.
리눅스는 둘째 치더라도 JBoss만 보게 됐을 경우 초기의 Marc Fleury가 그러한 부분(수많은 프로젝트와 전세계 개발자)을 염두에 두고 초창기부터 서로 다른 프로젝트끼리 손쉽게 loosely coupled 형태로 연결할 수 있는 injection 엔진을 고안한 것이 대단한 발상이라고 생각합니다. 지금 프로젝트를 하면서 타입이 AOP엔진으로 바뀌긴 했지만 MicroKernel의 개념을 확장시킨 것에 불과하니 정말 대단했던 사람임에는 분명합니다.
2006년 당시 BEA는 워낙에 tightly coupled로 묶여진 웹로직 컴포넌트들은 분리시키겠다고 Dev2dev 2006행사에서 발표(http://www.javaworld.com/javaworld/jw-04-2006/jw-0403-iw-bea.html)했지만 아직도 떼어내지 못하고 있는 것이 현실인 걸 보면 초기 JBoss의 모델이 얼마나 유연했는지 알 수 있습니다. 그러고보니 2006년 한국에서 열린 Dev2dev "WebLogic 9 + Tomcat Monitoring, Open Source Support"을 제가 발표했었군요. <-- 자랑입니다. :-(
덕분에 오늘 MicroKernel, MicroContainer를 동시에 섭렵하는 쾌거를 이루었고, 이 유연함은 하루 일과시간 동안에 물리적으로 분리된 서버의 Container 노드간의 클러스터링(JBoss Cache + JBoss JGroups)을 단 자바 코드 15 라인으로 구현하는 놀라움을 경험했습니다.
해당 클러스터에 참여 하는 partition 네임은 같아야 합니다. 위의 정의 에서는 DefaultPartition 이 라설정한 것이 고 다른 이름으로 바꾸시는 것이 좋습니다.
해당 cluster 설정파일에서 설정하지 않으면 서버구동스크립트의 Java Option에서 -Djboss.partition.name=XXX 설정하시면 됩니다. 또는 start script에서 run.sh ?c all ?b 203.231.14.15 ?g XXX 으로 바꾸 시면 됩니다.
클러스터링에 참여하는 서버들은 멀티캐스트 IP 와 port 로 서로의 상태를 복제합니다. 먼저 해당 멀티캐스트 IP 가 통신이 되는지부터 확인 하셔야 됩니다. ================================================================= 멀티캐스트 테스트 하시는 방법은 ★ 멀티캐스트 IP 설정 ? 멀티캐스트 대역에서 선택 - 224.0.0.1 ~ 239.255.255.254 ? -u X.X.X.X ? -Djboss.partition.udpGroup=X.X.X.X
★ JBoss 4.2에서는 multicast port도 설정 가능 (*) ? -Djboss.hapartition.mcast_port=45566 ? -Djboss.webpartition.mcast_port=45577 ? -Djboss.ejb3sfsbpartition.mcast_port=45551 ? -Djboss.ejb3entitypartition.mcast_port=43333
==================================== ? 멀티캐스트 테스트에 실패했을 때 ? 해당 NIC의 멀티캐스트를 활성화 ? ifconfig eth0 MULTICAST ? 해당 NIC로 멀티캐스트 메시지가 가도록 라우팅 ? NIC가 여러 개일 경우 ? route add -net 224.0.0.0 netmask 224.0.0.0 dev eth0 ? OS에 방화벽이 설치되어 있는지 확인 ? OS 방화벽이 있다면 멀티캐스트에 사용할 포트를 열어야 함 "iptables -F" ? Network Switch가 멀티캐스트를 지원하는지 확인 ? 멀티캐스트 테스트는 통과했는데 클러스터 동작이 안될 때 ? /etc/hosts 파일의 127.0.0.1에 호스트가 설정된 경우 이를 제거 127.0.0.1 yourhostname yourhostname.yourdomain localhost.localdomain localhost