본문으로 건너뛰기

17.2 관리 서비스

JBoss EAP 6에는 JBoss의 기반 서비스 중에 Management라고 불리는 관리 서비스가 포함되었다. 관리 인터페이스는 네이티브 매니지먼트 엔드 포인트, HTTP 관리 엔드 포인트의 두 가지 있다.

  • 네이티브 매니지먼트 엔드 포인트 JBoss EAP 6의 네이티브 프로토콜을 사용한 애플리케이션 서버의 관리 레이어에 접속하기 위한 엔드 포인트. 관리 CLI, 및 JConsole등에서 사용.
  • HTTP 매니지먼트 엔드 포인트 HTTP 프로토콜을 이용하여 애플리케이션 서버의 관리 레이어에 접속하기 위한 엔드 포인트. 관리 콘솔에서 사용.

JBoss EAP 6에서 제공되는 각 관리도구는 위의 매니지먼트 엔드 포인트를 통해 관리서비스에 요청을 보내고 결과를 가져온다.

개요

JBoss EAP 6를 운영하고 관리할 때 현재 자원에 대한 조회, 등록 등 다양한 오퍼레이션이 필요하다. JBoss EAP 6에서는 관리 서비스에 오퍼레이션을 요청하는 형태로 처리한다. 오퍼레이션 요청 내용은 JBoss DMR(Dynamic Model Representation)이라는 모델(이후 DMR 모델)로 표현되며, 오퍼레이션 요청을 하면 내부적으로 DMR 모델로 정의하여 관리 서버에 요청하게 된다.

그림 2. DMR 모델 구조

위의 DMR 모델 구조를 살펴 보면, JBoss에서 운영 모니터링에서 조작할 수 있는 관리 리소스를 주소로 지정하여 해당 주소의 리소스에 대해서 관리 명령을 실행한다. : 다음에 오퍼레이션을 지정한다. 어떤 리소스인지 ‘주소’에 따라 사용 가능한 오퍼레이션이 다르다. 또 오퍼레이션 실행 시 넘겨줄 파라미터 값들을 오퍼레이션 다음의 괄호 안에 컴마로 구분한 name=value 형태로 지정하여 해당 리소스에 대해 오퍼레이션을 실행한다.

서버 측에서는 DMR 모델에 있는 오퍼레이션을 처리하는 핸들러를 이용해 처리하게 된다. 오퍼레이션을 처리할 핸들러는 서비스 컨트롤러를 통해 서비스 컨테이너에 있는 서비스에서 밸류 오브젝트(Value Object)를 얻는다. 그 밸류 오브젝트에 포함되는 정보를 참조하거나, 변경해 그 처리 결과를 응답용 DMR 모델로 설정하고 결과를 클라이언트에 반환한다.

도메인 모드 관리

도메인 모드에서 관리 인터페이스를 설명한다.

그림 3. 도메인 모드의 관리 인터페이스

JBoss EAP 6 관리자 관리

관리자 등록

JBoss EAP 6 의 관리 사용자는 $JBOSS_HOME/bin/add-user.sh 스크립트를 실행하여 등록한다.

스크립트의 실행 방법은 다음과 같다.

$ ./add-user.sh
What type of user do you wish to add?
{empty}a) Management User (mgmt-users.properties)
{empty}b) Application User (application-users.properties)
(a): a
Enter the details of the new user to add.
Realm (ManagementRealm) :
Username : admin
Password : [패스워드 입력]
Re-enter Password : [패스워드 입력]
About to add user 'jboss' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'jboss' to file '/EAP6book/jboss/jboss-eap-6.2/standalone/configuration/mgmt-users.properties'
Added user 'jboss' to file '/EAP6book/jboss/jboss-eap-6.2/domain/configuration/mgmt-users.properties'
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 or for a Remoting connection for server to server EJB calls.
yes/no? yes
To represent the user add the following to the server-identities definition <secret value="b3Blbm5hcnUhMjM0" />

JBoss EAP 6에서 스탠드얼론 모드, 도메인 모드 모두 관리 인터페이스(네이티브 관리 인터페이스와 HTTP 관리 인터페이스)는 ‘ManagementRealm’라는 시큐리티 범위에 포함되었다. 이 시큐리티의 구조를 시큐리티 영역이라고 말한다. 시큐리티 영역은 인증 및 접근 등의 방법을 정의한 것으로, 관리 인터페이스에서는 정의된 시큐리티 영역명을 지정하면 된다. 이 때문에 관리 사용자를 추가할 때, add-user.sh 스크립트 실행시 ‘ManagementRealm’ 보안 영역을 선택해야 한다. ManagementRealm 은 기본적으로 다음 파일에 정의된 사용자를 사용하여 인증한다.

add-user.sh 스크립트를 실행하여 관리자를 추가하면 다음의 두 개의 파일에 [사용자명=암호화된 패스워드] 의 형식으로 관리자가 추가된다.

  • $JBOSS_HOME/standalone/configuration/mgmt-users.properties
  • $JBOSS_HOME/domain/configuration/mgmt-users.properties

시스템 프로퍼티(jboss.server.base.dir, jboss.domain.base.dir)를 사용해 베이스 디렉터리를 변경해 JBoss 를 시작하는 경우, 이 두 파일을 설정한 시스템 프로퍼티 디렉터리 아래의 configuration/mgmt-users.properties 로 복사해야 한다.

호스트 컨트롤러와 도메인 컨트롤러간 통신 보안 설정

관리 콘솔 및 CLI로부터 호스트 컨트롤러로 접근은 호스트의 mgmt-users.properties 파일에 정의된 관리자를 사용해 인증한다.

아래와 같이 host.xml파일에서 <authentication>에서 관리자가 저장된 파일을 지정한다.

<management>
<security-realms>
<security-realm name="ManagementRealm">
<authentication>
<local default-user="$local" />
<properties path="*mgmt-users.properties*" relative-to="jboss.domain.config.dir"/>
</authentication>
</security-realm>

</management>

host.xml 파일에 관리자가 등록되지 않은 경우에는 관리 콘솔 또는 CLI 에서 호스트 컨트롤러에 접속할 수 없다. 다만, 호스트와 동일한 IP에서 실행한 CLI 에서는 인증 없이 접근할 수 있도록 정의되어 있어 호스트 컨트롤러에 접근(이하 로컬 접근) 하는 것이 가능하다.

Host1, Host2, Host3의 각 호스트에서 각각 user1, user2, user3 의 관리자를 정의했을 경우, 이 사용자는 각각 자신이 정의한 호스트에서 가동하는 호스트 컨트롤러에만 접근 가능하다. 다만, user1 는 도메인 컨트롤러를 경유해 Host2, Host3 에 대한 관리 오퍼레이션이 가능하고, 각 호스트가 실행되는 같은 IP에서 시작한 CLI 에서는 호스트 컨트롤러에 로컬 접근하는 것도 가능하다.

도메인 모드에서는 마스터가 되는 도메인 컨트롤러상에 작성된 관리자가 같은 도메인에 포함된 모든 호스트를 관리한다. 이 때문에 슬레이브가 되는 호스트에 관리자를 추가할 필요는 없다. 또, 슬레이브 측의 관리 콘솔을 위한 HTTP 관리 인터페이스(http-interface)를 없애 버리는 것도 가능하다. 슬레이브 측의 native-interface(9999 포트에 바인드)는 도메인 컨트롤러로부터 접근할 필요가 있기 때문에 삭제할 수 없다.

관리 인터페이스의 바인드 주소

운영환경에서는 보안을 고려하여 애플리케이션이 서비스되는 서버 인스턴스의 리슨 주소 설정인 ‘public’ 인터페이스를 애플리케이션 사용자가 액세스 가능한 네트워크 주소에 바인드하며, ‘management’ 인터페이스는 애플리케이션 사용자가 접근할 수 없는(관리용의 네트워크 세그먼트) 주소에 바인드한다.

관리 자원 구조

JBoss EAP 6의 구축 및 설정 시, 특히 관리 CLI를 사용하는 경우엔 관리 자원이 어떤 형태의 트리로 구성되는지 파악해야 한다. 기본적으로 스탠드얼론 모드에서는 standalone.xml등의 설정 파일의 schema에 따라 트리가 구성되지만, 도메인 구성에서는 도메인 모델에 맞는 트리가 구성된다.

관리 자원들은 JBoss EAP 6 시작시 설정 파일을 바탕으로 구축되어 관리 인터페이스를 통해 자원에 접근할 수 있다. 또, 관리 자원이 변경되었을 경우에는 설정 파일에 변경사항이 반영되고 관리된다.

관리 자원 요소

관리 자원은 루트에서 시작되는 계층 트리로 구성되어 트리 상의 각 관리 자원은 노드로 표현된다. 관리 자원은 노드를 구성하는 중요 요소로 다음 표의 항목들을 갖추고 있어 부모 노드가 되는 관리 자원이 자식 노드를 생성할 수 있는 형태가 정해진다.

구분작업
노드명관리 자원을 나타내는 이름
형태(Type)관리 자원 자체의 형태 부모 노드의 관리 자원에 대해 자식 노드 형태(Child)로 정의되어 있어야 한다.
오퍼레이션(Operations)관리 자원에 대한 조작 관리 자원의 추가 및 삭제, 속성을 읽어 변경하는 등의 조작
속성(Attribute)관리 자원의 속성(각종 정보)을 나타내는 이름의 변수 속성마다 다음 항목들이 정의되었다 * 속성명 * 속성값의 형태 * 읽기 전용/읽고 쓰기 가능 * 저장되는 값으로 실행 시만 이용 가능한 값
자식노드형(Child-Type)자식 노드를 가질 수 있는 관리 자원의 형태

표 1. 관리 자원 구성요소

관리 리소스 계층 트리

관리 자원은 루트 노드로부터 시작되는 계층 트리로 구성되었다. 계층 트리는 관리 모델에 따라 일부 다르지만 기본적으로는 같은 형태이다.

스탠드얼론 모드의 경우, 루트 바로 아래에 childrens-types 관리 자원이 구성되었다.

그림 4. 관리 리소스의 계층 구조