JBoss EAP 7.2를 도메인 모드로 구성하여 중앙 집중식 관리 환경을 구축합니다. Windows Server 환경에서 마스터(Master)와 슬레이브(Slave) 호스트를 설정하고,
add-user를 통해 보안 인증(Secret Value)을 처리하는 과정, 그리고 CLI를 이용한 제어 방법을 다룹니다.
0. 배경 지식 (Context)
도메인 모드는 Domain Controller(Master)가 전체 정책을 관리하고, Host Controller(Slave)들이 실제 서버 인스턴스를 구동하는 구조입니다.
- Master: 설정 및 배포 중앙 관리 (서버 인스턴스를 직접 띄우지 않는 것을 권장)
- Slave: 실제 애플리케이션이 구동되는 서버 그룹 관리
Test Environment
- OS: Windows NT (10/Server)
- Version: JBoss EAP 7.2
- Topology: One-Box 구성 (하나의 서버에 Master/Slave 디렉토리 분리)
1. 관리자 계정 생성 및 인증 토큰 확보
도메인 컨트롤러(Master)와 호스트 컨트롤러(Slave) 간의 통신을 위해서는 보안 인증이 필요합니다. add-user.bat를 통해 계정을 생성하고 Secret Value를 확보해야 합니다.
실행 절차
F:\app\Redhat\JBoss7.2\bin> add-user.bat
# 1. 관리자 계정 선택
What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): a
# 2. 계정 정보 입력 (Username: admin / Password 설정)
# ... (중략) ...
# 3. 프로세스 간 연결 승인 (중요!)
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master ...
yes/no? yes
# 4. 결과값 복사
To represent the user add the following to the server-identities definition
<secret value="..." /> 문자열을 반드시 복사해 두십시오. Slave 설정 시 사용됩니다.
2. 설정 파일 수정 (Configuration)
Master와 Slave 각각의 host.xml 파일을 수정하여 역할을 정의합니다.
1) Master 설정 (host-master.xml)
자신이 도메인 컨트롤러임을 명시합니다.
<host xmlns="urn:jboss:domain:8.0" name="test-master">
<domain-controller>
<local/>
</domain-controller>
...
</host>
2) Slave 설정 (host-slave.xml)
Master에 연결하기 위한 인증 정보와 고유한 호스트 이름을 설정합니다. 한 장비에서 띄울 경우 포트 충돌 방지를 위해 관리 포트를 변경해야 합니다.
<host xmlns="urn:jboss:domain:8.0" name="slave-node01">
<server-identities>
<secret value="YWRtaW4xMiMk" />
</server-identities>
<domain-controller>
<remote security-realm="ManagementRealm">
<discovery-options>
<static-discovery name="primary" protocol="${jboss.domain.master.protocol:remote}" host="${jboss.domain.master.address}" port="${jboss.domain.master.port:9990}"/>
</discovery-options>
</remote>
</domain-controller>
<management-interfaces>
<http-interface security-realm="ManagementRealm">
<http-upgrade enabled="true"/>
<socket interface="management" port="${jboss.management.http.port:19990}"/>
</http-interface>
</management-interfaces>
</host>
3. 도메인 기동 (Start Scripts)
디렉토리(domain/base/dir)를 분리하여 운영하는 환경을 가정한 기동 스크립트입니다.
Master 기동
F:\app\Redhat\JBoss7.2\bin\domain.bat ^
-Djboss.domain.base.dir="F:\app\Redhat\JBoss7.2\master" ^
-b=192.168.0.6 ^
-bmanagement=192.168.0.6 ^
--host-config=host-master.xml
Slave 기동 (Node 01 & 02)
Slave는 --master-address 옵션으로 Master를 바라보며, -Djboss.socket.binding.port-offset으로 서비스 포트 충돌을 방지합니다.
:: Slave Node 01 (Port Offset: 1000)
F:\app\Redhat\JBoss7.2\bin\domain.bat ^
-Djboss.domain.base.dir="F:\app\Redhat\JBoss7.2\node01" ^
-b=192.168.0.6 ^
-bmanagement=192.168.0.6 ^
--host-config=host-slave.xml ^
--master-port=9990 ^
--master-address=192.168.0.6 ^
-Djboss.socket.binding.port-offset=1000
:: Slave Node 02 (Port Offset: 2000)
F:\app\Redhat\JBoss7.2\bin\domain.bat ^
-Djboss.domain.base.dir="F:\app\Redhat\JBoss7.2\node02" ^
-b=192.168.0.6 ^
-bmanagement=192.168.0.6 ^
--host-config=host-slave.xml ^
--master-port=9990 ^
--master-address=192.168.0.6 ^
-Djboss.socket.binding.port-offset=2000
4. CLI를 이용한 서버 제어 (Management)
도메인 모드에서는 jboss-cli를 통해 특정 호스트의 특정 서버 인스턴스만 제어할 수 있습니다.
기본 구문
/host=[HOST_NAME]/server-config=[SERVER_NAME]:[start|stop|restart]
실행 예시
:: 접속 (Master Controller IP로 접속)
F:\app\Redhat\JBoss7.2\bin> jboss-cli.bat --connect controller=192.168.0.6:9990
:: 특정 서버(test01) 정지
[domain@192.168.0.6:9990 /] /host=slave-node01/server-config=test01:stop
{
"outcome" => "success",
"result" => "STOPPING"
}
:: 특정 서버(test01) 기동
[domain@192.168.0.6:9990 /] /host=slave-node01/server-config=test01:start
{
"outcome" => "success",
"result" => "STARTING"
}
Next Step:
구성이 완료되었다면 관리 콘솔(http://192.168.0.6:9990)에 접속하여 Runtime 탭에서 Topology가 정상적으로 인식되는지 확인하십시오.