본문으로 건너뛰기

5.1 스탠드얼론 모드와 도메인 모드

JBoss EAP 6에는 두 가지 운영방식이 있다. 하나는 스탠드얼론 모드이고 다른 하나는 도메인 모드로 서버 운영의 요구사항에 따라 선택하여 이용할 수 있다. 스탠드얼론 모드는 이전의 버전과 같이 서버 인스턴스마다 관리 기능을 제공하는 방식이지만, 도메인 모드에서는 여러 개의 서버 인스턴스를 그룹으로 묶어 관리하는 방식이어서 설정 변경이나 애플리케이션 배포를 중앙에서 한번에 관리할 수 있다.

  • 스탠드얼론 모드

    JBoss EAP 5 버전까지 인스턴스 관리방법은 개별적으로 관리해야 하는 스탠드얼론 모드였다. 지금까지 대부분의 JBoss도입 사례가 스탠드얼론 모드로 구축되었으며 JBoss EAP 6 인스턴스도 스탠드얼론 모드로 실행할 수 있다. 스탠드얼론 모드로 인스턴스를 실행 하는 스크립트는 standalone.sh 또는 standalone.bat 를 사용한다. 여러 개의 스탠드얼론 모드 서버들을 대상으로 HA 클러스터로 묶어 사용할 수 있다.

  • 도메인 모드

    도메인 모드는 도메인 컨트롤러로 불리는 프로세스가 전체 도메인 관리를 담당하며 각 머신 상에서 동작하는 호스트 컨트롤러에서 실제 서비스를 담당하는 서버 인스턴스를 관리(설정, 애플리케이션 배포, 서버 라이프사이클) 한다.

아래의 표에서는 스탠드얼론 모드와 도메인 모드에 대해 주요 차이점에 대해 비교한 것이다.

구분스탠드얼론 모드도메인 모드
JBoss 인스턴스를 묶는 서버 그룹 지원불가지원
클러스터 구성서버 간 별도 클러스터링 구성서버 그룹 단위로 자동 클러스터링 구성
애플리케이션 배포 스캐너지원불가
프로파일인스턴스 기동 시 지정운영 중 변경 가능
프로세스서버 별로 개별 프로세스
서버를 관리하는 프로세스 컨트롤러와 구성 정보 동기화를 위한 호스트 컨트롤러
관리 도구서비스는 인스턴스와 동일별도의 인스턴스로 도메인 컨트롤러에 의해 관리
구성 파일standalone.xmldomain.xml / host.xml
실행 스크립트$ **$JBOSS_HOME/bin/standalone.sh --server-config=standalone-ha.xml**$ **$JBOSS_HOME/bin/domain.sh --server-config=domain.xml**

표 1. 스탠드얼론 모드와 도메인 모드의 비교

스탠드얼론 모드와 도메인 모드는 단지 관리 모델의 차이가 있을 뿐이며, 제공되는 서브시스템은 거의 같기 때문에 기능의 차이는 없다고 할 수 있다.

스탠드얼론 모드에는 특정 디렉터리에 있는 애플리케이션들을 배포하는 서브시스템이 하나 더 있다. 또, 클러스터링 기능에 있어서도 스탠드얼론 모드와 도메인 모드는 차이점이 없이 동일하게 사용할 수 있다.

관리 방법 비교

스탠드얼론 모드는 하나의 Java VM 프로세스로 JBoss 인스턴스를 구성하는 관리 모델로

이전 버전의 JBoss 아키텍처를 그대로 사용하는 것으로 Java 프로세스 내에 관리 모듈이 로딩된다.

JBoss 시작 스크립트를 실행하면 하나의 JBoss 인스턴스가 실행되고, 각 인스턴스마다 관리 작업을 수행한다. 만약 스탠드얼론 모드로 여러 개의 독립적인 인스턴스가 시작되어 서버들을 관리해야 하는 경우에 관리자는 각각의 인스턴스를 개별적으로 관리할 수 밖에 없다. 예를 들어, 스탠드얼론 모드에서 전체 서버를 대상으로 애플리케이션을 배포하거나 서버의 설정을 변경하는 경우 관리자가 개별적으로 각 서버에 접속하여 반영해야 한다. 그림1처럼 스탠드얼론 모드에서는 두 개의 머신에 있는 4개의 인스턴스를 관리하기 위해서는 각 인스턴스의 관리 콘솔을 통해서 각각 4번 작업을 해주어야 한다.

도메인 모드는 하나의 도메인 컨트롤러를 통해서 관리된다. 도메인 컨트롤러는 ‘단일 관리 포인트’를 제공하는 자바 프로세스로 관리자가 웹 콘솔, CLI등의 관리도구를 사용하여 도메인 컨트롤러에 접속하여 도메인 전체의 관리 작업을 수행할 수 있다.

도메인 모드에는 각 머신 즉 호스트 별로 호스트 컨트롤러라는 프로세스가 존재한다. 이 호스트 컨트롤러는 도메인 컨트롤러에 연결하여 도메인 컨트롤러의 오퍼레이션(각종 설정 값의 관리, 배포 등)을 자신이 관리하는 서버에 반영하는 역할을 한다.

스탠드얼론 모드에서는 각각의 인스턴스 별로 관리와 서비스를 하게 되지만 도메인 모드에서는 인스턴스는 단독으로는 존재하지 않고, 호스트 컨트롤러(또는 도메인 컨트롤러)와 세트로 존재하고 호스트 컨트롤러의 관리를 통해 운영된다 그림1의 도메인 모드에서 관리자는 2개의 머신에서 운영되는 4개 서버 인스턴스를 관리하기 위해서 웹 콘솔를 통해 도메인 컨트롤러에 작업을 지시하는 형태로 운영하게 된다.

그림 1. 도메인모드와 스탠드얼론 모드의 관리 방법 비교

도메인 모드와 관리 기능을 비교하면 스탠드얼론 모드는 중앙 관리 기능을 사용할 수 없어 부족한 점이 많지만, 서버 인스턴스 구성 방법이 매우 간단하여 사용 사례는 더 많다. 기본적으로 Eclipse등의 IDE와 연계하여 사용하는 개발 환경이나, 몇 개의 JBoss 인스턴스만을 사용하는 운영 환경에서는 스탠드얼론 모드가 더 적합하다.

또한 대규모 환경에서도 배포 방법도 편리하고, 개별 인스턴스에 대해 상세한 제어를 할 수 있기 때문에 스탠드얼론 모드를 선택하는 경우가 많이 있다.

스탠드얼론 모드는 개발 환경이나 소규모 시스템 영역으로부터 미션 크리티컬한 환경까지 다양한 환경에서 사용하고 있다.

프로파일 비교

스탠드얼론 모드는 프로파일이라고 불리는 설정 파일을 읽어 사용한다. 기본적으로 standalone.xml, standalone-ha.xml, standalone-full.xml, standalone-full-ha.xml 4가지 종류의 설정 파일이 준비되어 있다.

도메인 모드에서는 프로파일에 대한 설정을 domain.xml 파일 하나에 정의하고 관리한다. 사용되는 모든 프로파일은 domain.xml 파일 안에 default, ha, full, full-ha로 정의되어 있다.

다음 그림은 스탠드얼론 모드와 도메인 모드에서 프로파일을 비교 정리한 것이다.

그림 2. 스탠드얼론 모드와 도메인 모드의 프로파일 비교

설정 파일은 JBoss EAP 6 시작 스크립트에 옵션을 지정하여 변경할 수 있다.

아래의 예제는 ha프로파일(설정 파일 standalone-ha.xml)을 지정해 스탠드얼론 모드로 JBoss EAP 6를 시작한 것이다.

$ ./standalone.sh --server-config=standalone-ha.xml

사용할 설정 파일은 JBoss EAP 6에 배포되는 애플리케이션이 필요로 하는 기능에 맞추어 적합한 프로파일 파일을 선택해 이용한다. 예를 들어, 배포할 애플리케이션이 messaging(JMS) 기능을 사용하는 것이라면 full, full-ha 프로파일을 선택해야 한다. 또 클러스터링을 사용하려면 뒤에 -ha 가 붙은 프로파일을 선택해야 한다. 만약 적합한 것이 없다면 새로운 설정 파일을 작성하여 사용하는 것도 가능하다.

클러스터 구성 비교

스탠드얼론 모드에서 클러스터 구성은 각각의 인스턴스 별로 지정하여 클러스터를 묶는다. 클러스터를 구성하고 있는 인스턴스들은 상호간의 정보 교환이나 중앙화된 관리 방법은 없다.

클러스터내의 인스턴스들이 동일한 애플리케이션 배포나 설정 정보들의 유지는 관리자의 운영 방법으로 동기화해야 한다.

스탠드얼론 모드에서 클러스터링을 활성화하려면 $JBOSS_HOME/bin/standalone.sh -server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME 과 같이 시작 옵션을 주어 실행해야 한다.

도메인 모드에서는 동일한 구성을 적용하는 인스턴스의 그룹을 서버 그룹이라고 부른다. 도메인 컨트롤러와 호스트컨트롤러가 연결되어 도메인에 포함되는 서버 그룹과 그 서버 그룹에 포함되는 서버 인스턴스 정보를 관리한다.

서버 그룹은 자동적으로 클러스터로서 구축되기 때문에 스탠드얼론 모드와 같이 클러스터를 별도로 정의할 필요가 없다. 어플리케이션은 서버 그룹(클러스터) 단위로 에 애플리케이션 배포 관리를 한다.

도메인 모드로 시작된 서버들에 대해서 클러스터링을 활성화하려면 domain.xml**을 업데이트하고 **ha**프로필과 ha-sockets 소켓 바인딩 그룹을 사용하도록 서버 그룹을 지정한다.

<server-groups>
<server-group name="*server-group_1*" profile="*ha*">
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="*ha-sockets*"/>
</server-group>
</server-groups>

그림 3. 스탠드얼론 모드와 도메인 모드에서의 클러스터링 차이점