도메인 설정변경
본 장에서는 도메인 설정 관리에 관련한 배경 지식을 설명하고, 실제로 설정을 변경하는 방법에 대해 설명한다.
1. 개요
도메인에 대한 설정은 각 도메인의 config 디렉터리(DOMAIN_HOME/config)에 존재한다. 설정 파일인 domain.xml에는 도메인에 속한 서버 및 클러스터에 대한 설정과 리소스 및 서비스에 대한 설정, deploy된 애플리케이션의 정보 등이 포함된다.
동적 설정 반영은 서버 운영 중에 설정을 변경하면 서버를 재부팅하지 않아도 실시간으로 반영이 되는 기능을 의미한다. 변경된 설정은 MASTER가 검증하여 MS로 분배하기 때문에 사용자가 직접 XML을 편집하여 변경한 경우는 동적 반영이 되지 않고, 관리 도구를 사용하여 변경한 설정에 대해서만 동적 반영된다.
MASTER를 통한 동적 설정변경을 위해서는 리소스 이름 jeus.domain.<domain-name>, 리소스 액션 DynamicConfiguration 권한이 필요하다. 특히, 보안 설정변경의 경우 사용자는 자신의 동적 설정변경 권한을 삭제할 수 없다. 이는 사용자가 언제나 자신이 설정한 부분을 다시 원래대로 복구할 수 있도록 보장하기 위한 것이다.
JEUS 시스템에서 특정 사용자에 특정 리소스 권한을 부여하는 방법은 JEUS Security 안내서의 보안 시스템 정책 설정을 참고한다. |
2. 설정변경
서버 운영에 필요한 설정은 서버가 속한 도메인마다 하나의 파일로 관리됩니다.
도메인 설정 파일은 MASTER에서 관리 및 유지되고, 성능을 위해 서버가 존재하는 여러 머신에 분배되어 read-only 상태로 로컬 Cache에 존재한다. JEUS는 MASTER를 통해 동적 설정 반영을 지원한다.
3. 설정변경 적용
설정 내용이 변경되면 서버에 적용해야 하는데 설정은 동적 반영이 가능한 설정과 서버의 재시작이 필요한 설정으로 구분된다.
3.1. 동적 반영이 가능한 설정
동적 반영이 가능한 설정은 변경 후 서버의 재시작 없이 즉시 서버에 반영된다.
콘솔 툴 사용
콘솔 툴(jeusadmin)에서 동적 변경이 가능한 항목은 명령어 파라미터 설명에 [Dynamic]이 표시되어 있다.
jeusadmin의 각 명령어에서 lock, save, activate가 자동으로 수행되므로 [Dynamic] 항목에 설정값을 입력하여 해당 명령어를 수행하면 변경 사항이 즉시 반영된다.
[MASTER]domain1.adminServer>help modify-server ... OPTIONS [-removelogdir,--removeLogHomeDirectory] remove the log directory which has all the log files created by this server [-node,--nodeName <node-name>] name of the node this server is located <server-name> the name of server you want to modify configuration of [-jvm,--jvmOptions <jvm-options>] jvm configurations applied to this server jvm [-logdir,--logHomeDirectory <server-log-home-directory>] the log directory which has all the log files created by this server [-a,--actionOnResourceLeak <action-on-resource-leak>] strategy when resource leak is detected. it must be one of AutoClose, NoAction, Warning [-l,--logStdoutToRawFormat <print-stdout-to-raw-format>] [Dynamic] whether stdout is printed in row format or in JEUS Logger format. [-m,--mejb <enable-MEJB>] [Dynamic] whether using MEJB or not .true, false [-c,--classFtp <enable-class-ftp-service>] [Dynamic] whether using class ftp service or not .true, false [-f,--forceLock] Acquires the configuration lock forcibly. [-detail] show detail results
전체 설정에 대한 동적 변경 요소의 자세한 내용은 JEUS Reference 안내서의 jeusadmin을 참고한다. |
3.2. 서버의 재시작이 필요한 설정
서버의 재시작이 필요한 설정과 실시간 동적 변경 반영이 가능한 설정이 함께 변경된 경우는 activate 명령어를 수행하면 후자만 실시간으로 반영된다. 서버의 재시작이 필요한 설정들은 반드시 해당 서버가 재시작되어야 반영된다. 본 절에서는 변경된 설정 중 반영되지 않은 설정 정보를 확인하는 방법에 대해서 설명한다.
콘솔 툴 사용
콘솔 툴(jeusadmin)에서 server-info 명령어를 수행하면 다음과 같이 서버 목록 및 상태 정보가 조회된다. 각 서버의 정보에서 'Need to Restart' 항목이 'true’로 출력된 경우에는 해당 서버의 재시작이 필요하다.
[MASTER]domain1.adminServer>server-info Information about Domain (domain1) =============================================================================================== +--------+---------+-----+-------+-----+----------------+---------+-------------+-------------+ | Server | Status | Node| PID | Clus| Latest Start | Need to | Listen Ports| Running | | | |Name | | ter |Time / Shutdown | Restart | | Engines | | | | | | | Time | | | | +--------+---------+-----+-------+-----+----------------+---------+-------------+-------------+ | adminSe| RUNNING | N/A | 5360 | N/A | 2016-08-23 | false | base-192.168| jms, | |rver(*) |(00:25:52| | | |(화) 오후 | |.34.3:9736 | ejb, web | | |) | | | |03:53:28 KST | | http-server-| | | | | | | | | |0.0.0.0:8088 | | | | | | | | | |jms-internal-| | | | | | | | | |0.0.0.0:9741 | | +--------+---------+-----+-------+-----+----------------+---------+-------------+-------------+ | server1| RUNNING |node1| 6424 | N/A | 2016-08-23 | true | base-192.168| jms, | | |(00:16:15| | | |(화) 오후 | |.34.1:9836 | ejb, web | | |) | | | |04:03:05 KST | | | | +--------+---------+-----+-------+-----+----------------+---------+-------------+-------------+ | server2| RUNNING |node2| 3012 | N/A | 2016-08-23 | true | base-192.168| jms, | | |(00:16:15| | | |(화) 오후 | |.34.2:9936 | ejb, web | | |) | | | |04:03:05 KST | | | | +--------+---------+-----+-------+-----+----------------+---------+-------------+-------------+ ===============================================================================================
4. 설정 로테이션
설정을 변경하면 기존 설정이 백업되는데 이것을 설정 로테이션이라고 한다.
현재 운영 중인 설정은 항상 다음의 경로에 있는 파일들이다.
DOMAIN_HOME/config/domain.xml DOMAIN_HOME/config/security/SECURITY_DOMAIN_NAME/policies.xml DOMAIN_HOME/config/security/SECURITY_DOMAIN_NAME/accounts.xml
동적 변경이 됐을 경우 또는 서버의 재시작이 필요한 경우 모두 포함하여 domain.xml에 대한 변경 사항이 있으면 이전 domain.xml에 대한 백업 파일이 DOMAIN_HOME/config/.history 폴더 안에 'domain_yyyymmdd_hhmmss.xml’의 형식으로 저장된다. jeus.server.configfile.backup.size 프로퍼티를 통해 백업 파일 개수를 지정할 수 있다. (기본값: 50)
5. 도메인 공통 설정변경
다음은 도메인 공통 설정에 대한 예시이다.
<domain> ... <production-mode>true</production-mode> <id>427655071</id> <master-server-name>adminServer</master-server-name> <domain-log-home>${JEUS_HOME}/domain1/logs</domain-log-home> <enable-json-command>false</enable-json-command> <enable-to-resynchronize-applications>false</enable-to-resynchronize-applications> <application-repositories> ... </application-repositories> <system-clustering-framework> <transport-type>HYBRID</transport-type> <trsnsport-address>224.0.0.1</trsnsport-address> <transport-port>12488</transport-port> <leader-discovery-timeout>3000</leader-discovery-timeout> <failure-detection-timeout>3000</failure-detection-timeout> <max-thread-pool-size>10</max-thread-pool-size> <min-thread-pool-size>0</min-thread-pool-size> </system-clustering-framework> <domain-backup> <backup-on-boot>false</backup-on-boot> </domain-backup> ... </domain>
다음은 설정 항목에 대한 설명이다.
항목 | 설명 |
---|---|
Jeus Master Server Name |
MASTER의 ID에 해당하는 값으로 도메인 구성한 후에는 변경할 수 없다. |
Id |
도메인의 ID에 해당하는 값으로 도메인 구성한 후에는 변경할 수 없다. |
Domain Log Home |
도메인 내의 서버들이 공통으로 사용할 log의 폴더명으로 도메인 구성한 후에는 변경할 수 없다. |
Production Mode |
실제 운영환경에 적합한 모드로, 웹 애플리케이션의 auto-reload나 hot-swap과 같은 기능은 제공하지 않는다. |
Enable Json Command |
Json Command 사용 여부를 선택하는 항목으로 기본적으로 꺼져있다. 선택적으로 비활성화할 수 있고 필요한 경우 다시 체크하여 활성화할 수 있다. |
Enable To Resynchronize Applications |
MS가 INDEPENDENT 모드에서 DEPENDENT 모드로 변경된 경우 MS에서 MASTER와 애플리케이션을 동기화할 것인지에 대한 설정이다. (기본값: false, 동기화하지 않음) |
Application Repositories |
서비스할 애플리케이션의 위치를 설정하는 항목으로 동적으로 추가 및 삭제할 수 있다. 이에 대한 자세한 설명은 JEUS Applications & Deployment 안내서의 애플리케이션 저장소 추가/삭제/조회를 참고한다. |
System Clustering Framework |
서버들 간의 내부 통신 및 상태 확인에 사용되는 네트워크 설정으로써 도메인 전체에 걸쳐서 적용되므로 변경할 경우에는 도메인 전체를 다시 시작해야 한다. JEUS에서는 서버 간에 서로의 상태를 공유하기 위해 기본적으로 Multicast를 사용한다. 자세한 내용은 도메인 생성을 참고한다.
아래의 항목들은 대부분의 경우에 특별히 설정할 필요는 없으나, 도메인의 규모에 따라서 적절한 값으로 조절해야 한다.
|
Domain Backup |
JEUS Master Server를 기동할 때 백업 파일을 만들지에 대한 설정이다. 백업 파일의 생성 여부와 디렉터리를 설정할 수 있다. 기본적으로 도메인 백업을 생성하지 않도록 설정은 꺼져있다. 해당 기능에 대한 자세한 설명은 도메인 백업을 이용한 장애 극복을 참고한다. |
'Enable Json Command', 'Enable To Resynchronize Application', 'Application Repositories', 'Domain Backup'을 제외한 도메인 설정 항목은 동적 변경이 불가능하기 때문에 설정을 반영하기 위해서는 도메인 전체를 재시작해야 한다. 도메인 설정은 개별 서버의 설정과는 달리 도메인 구성에 관한 설정이다. 따라서 도메인을 구성할 때 'Jeus Master Server Name', 'Id', 'Domain Log Home' , 'Production Mode', 'System Clustering Framework' 영역의 항목들은 신중하게 설정해야 한다. |
6. 설정변경 예제
본 절에서는 콘솔 툴(jeusadmin)을 사용하여 System Thread Pool의 개수와 서버의 JVM 설정을 변경하는 방법에 대해 설명한다.
6.1. System Thread Pool 개수 변경
본 절에서는 콘솔 툴(jeusadmin)을 사용하여 System Thread Pool 개수를 변경하는 방법에 대해 설명한다.
콘솔 툴 사용
콘솔 툴(jeusadmin)의 modify-system-thread-pool 명령어를 실행하면 System Thread Pool 개수를 변경할 수 있다. modify-system-thread-pool 명령어에 대한 자세한 내용은 JEUS Reference 안내서의 modify-system-thread-pool을 참고한다.
[MASTER]domain1.adminServer>modify-system-thread-pool server1 -max 120 Successfully performed the MODIFY operation for the system thread pool of the server (server1), but all changes were non-dynamic. They will be applied after restarting. Check the results using "modify-system-thread-pool server1 or show-system-thread-pool server1".
6.2. 서버의 JVM 설정변경
본 절에서는 콘솔 툴(jeusadmin)을 사용하여 서버의 JVM 설정을 변경하는 방법에 대해 설명한다.
콘솔 툴 사용
콘솔 툴(jeusadmin)을 사용하여 서버의 JVM 설정을 추가하려면 다음과 같이 add-jvm-option 명령어를 실행한다. add-jvm-option 명령어는 사용자가 입력한 옵션을 jvm-option list와 비교하여 같은 것이 없으면 추가한다.
[MASTER]domain1.adminServer>add-jvm-option -server server1 -opt "-Xmx256m -XX:MaxPermSize=128m" Successfully performed the ADD operation for JVM configuration for the server(server1).. Check the results using "list-jvm-options or add-jvm-option".
콘솔 툴(jeusadmin)을 사용하여 서버의 JVM 설정을 변경하려면 다음과 같이 modify-jvm-option 명령어를 실행한다. modify-jvm-option 명령어는 사용자가 입력한 옵션을 jvm-option list와 비교하여 같은 것을 수정한다.
[MASTER]domain1.adminServer>modify-jvm-option -server server1 -old "-Xmx256m -XX:MaxPermSize=128m" -new "-Xmx512m -XX:MaxPermSize=128m" Successfully performed the MODIFY operation for JVM configuration for the server(server1).. Check the results using "list-jvm-options or modify-jvm-option".
콘솔 툴(jeusadmin)을 사용하여 서버의 JVM 설정을 삭제하려면 다음과 같이 remove-jvm-option 명령어를 실행한다. remove-jvm-option 명령어는 사용자가 입력한 option을 jvm-option list와 비교하여 같은 것을 삭제한다.
[MASTER]domain1.adminServer>remove-jvm-option -server server1 -opt "-Xmx256m -XX:MaxPermSize=128m" Successfully performed the REMOVE operation for JVM configuration for the server(server1).. Check the results using "list-jvm-options or remove-jvm-option".
JVM 설정을 추가하는 경우에는 한번에 하나의 옵션을 추가해서 jvm-option 항목 하나에 하나의 옵션만 추가할 수 있도록 하고, 변경 및 삭제할 경우에는 list-jvm-options 명령어를 통해 설정된 옵션을 주어 수정하는 것을 권장한다. |