내용 목차
본 장에서는 서버의 시작과 종료, 서버 Life Cycle을 확인하는 방법에 대해 설명한다.
JEUS 서버는 2가지 모드로 기동될 수 있다. 한 가지 모드는 여러 서버들을 관리하여 운영하는 도메인 관리 모드이고, 나머지 하나는 클라우드 환경에서 단 하나의 서버만을 운영하는 클라우드 서버는 모드이다.
클라우드 서버 모드(Cloud Server)
클라우드 환경에서는 도메인 관리와 같은 중앙 관리 기능이 필요하지 않을 수 있다. 이런 경우 JEUS 8.5은 단독 서버로 기동 및 운영할 수 있다.
클라우드 서버는 하나의 서버로 모든 동작을 보장해주기 때문에 DAS와 MS의 기능을 모두 포함하고 있다. 하나 이상의 클라우드 서버를 기동하여 관리하려면 전적으로 사용자가 여러 서버들간의 관리를 해야 한다. 예로 특정 애플리케이션을 모든 클라우드 서버들에 배치하려면 사용자가 개별 서버에 애플리케이션을 배치해야 한다.
클라우드 서버는 startCloudServer 스크립트로 기동할 수 있다. 클라우드 서버는 Linux 계열에서만 지원한다.
도메인 관리 모드(Managed Domain)
여러 개의 서버를 같은 도메인(Domain)으로 묶어 도메인 관리 서버를 통해 중앙에서 관리할 수 있다.
서버를 시작하기 전에 준비되어야 하는 몇 가지 사항은 다음과 같다.
JEUS가 설치되고, 도메인 및 서버가 생성되어 있어야 한다. 또한 서버를 시작 및 종료할 수 있는 사용자명과 패스워드가 생성되어 있어야 한다. 이러한 사전 작업이 되어 있지 않다면 "JEUS 설치 및 시작하기"를 참고하여 환경을 구축한다.
WebAdmin이나 jeusadmin을 사용하여 DAS를 통해 서버를 시작하려면 노드 설정이 추가적으로 필요하다. 노드 설정에 대한 자세한 내용은 "JEUS Node Manager 안내서"를 참고한다.
각 MS가 위치할 머신에서 사용자가 직접 스크립트로 시작할 때에는 별도의 노드 설정은 필요없다. 하지만 이 경우 노드 매니저의 제어를 받지 못하니 설정해서 사용할 것을 권장한다.
서버에 적용하려는 JVM 설정이 XML에 설정되었는지 확인한다.
도메인을 생성할 때 설정하지 않았다면, JVM 설정 변경은 재시작이 필요한 설정이기 때문에 DAS를 시작하여 설정을 변경한 후 DAS를 재시작하여 반영한다.
JVM 설정이 누락된 MS는 WebAdmin이나 콘솔 툴을 사용해서 JVM 설정을 추가한 후에 서버를 시작한다. 변경 방법은 “3.6.2. 서버의 JVM 설정변경”을 참고한다.
서버에 적합한 라이선스를 가지고 있는지 확인한다.
온 프레미스 서버(On-Premise Server)와 클라우드 서버(Cloud Server)에 따라 라이선스가 다르고, 시작하려는 서버에 적합하지 않은 라이선스로는 서버를 시작할 수 없다.
본 절에서는 Domain Administration Server(DAS), Managed Server(MS), Cloud Server를 시작하는 방법에 대해 설명한다.
DAS를 시작하는 스크립트는 startDomainAdminServer로 DAS의 도메인 이름, JEUS를 시작할 수 있는 권한을 가진 사용자명과 패스워드가 필요하다.
JEUS_HOME/bin 하위에서 실행할 경우에는 이 모든 값이 필요하지만, DAS의 DOMAIN_HOME 하위에서 실행할 때에는 도메인 이름을 생략할 수 있다.
위치에 따라 다음과 같이 실행한다.
JEUS_HOME/bin
JEUS_HOME/bin$ startDomainAdminServer -domain <domain_name> -u <user_name> -p <password>
DOMAIN_HOME/bin
DOMAIN_HOME/bin$ startDomainAdminServer -u <user_name> -p <password>
SERVER_HOME/bin
SERVER_HOME/bin$ startDomainAdminServer -u <user_name> -p <password>
기본적으로는 DAS가 RUNNING 상태가 된 이후에는 파일로만 서버의 로그(SERVER_HOME/logs/JeusServer.log)가 남게 된다. 서버의 로그를 콘솔 툴 화면에서 모니터링하려면 추가적으로 -verbose 옵션을 설정한다. 이 경우 서버 프로세스 외에도 Launcher 프로세스가 함께 운영된다. Luncher 프로세스는 서버 프로세스를 운영하고 서버의 로그를 콘솔 툴에 출력한다.
다음과 같이 jps 명령어로 확인하면 LauncherBootStrapper와 DomainAdminServerBootstrapper를 확인할 수 있다.
jps -l 399092 jeus.server.LauncherBootstrapper 409880 sun.tools.jps.Jps 398868 jeus.server.NodemanagerBootstrapper 399352 jeus.server.admin.DomainAdminServerBootstrapper
서버 시작에 실패한 경우에는 SERVER_HOME/logs/JeusLauncher.log에서 실패 이유를 확인할 수 있다.
1. jps는 Java 프로세스를 조회하는 툴이며, JAVA_HOME/bin에 위치한다.
2. Launcher에 대한 자세한 설명은 “JEUS Server 안내서”의 “1.5. Launcher”를 참고한다.
MS를 시작하는 방법은 DAS를 통해 시작하는 방법과 스크립트로 시작하는 방법이 있다.
DAS를 통해 MS를 시작하는 방법은 DAS가 운영 중이고, 시작하려는 MS에 대한 노드 정보가 설정된 경우에만 가능하다.
다음은 WebAdmin이나 콘솔 툴을 사용해서 DAS를 통해 MS시작하는 방법이다.
WebAdmin 사용
WebAdmin 메뉴에서 [Servers]를 선택하면 서버 목록 조회 화면으로 이동한다. 조회된 서버 목록에서 시작하려는 서버의 [start] 버튼을 클릭한다. 화면 상단에 결과 메시지가 표시되고 서버가 정상적으로 시작된 것을 확인할 수 있다.
콘솔 툴 사용
콘솔 툴(jeusadmin)을 사용하여 다음과 같이 start-server 명령어를 통해 MS를 시작한다.
[DAS]domain1.adminServer>start-server server1
The server [server1] was successfully started.
start-server에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.3.43. start-server”를 참고한다.
DAS를 통하지 않고 MS가 위치하는 머신에 설치된 스크립트를 이용하여 MS를 시작할 수 있다.
도메인 내에 여러 서버가 여러 머신에 분포한다면 각 머신에 접속하여 MS가 위치하는 머신에서 스크립트를 수행해야 한다. 스크립트 이름은 startManagedServer이고, DAS와 설정을 동기화하기 위해 dasurl 옵션을 추가로 설정해야 한다.
dasurl을 설정하지 않으면 INDEPENDENT 모드로 MS가 시작되고, 시작 후 DAS가 MS를 찾으면 다시 DAS의 관리를 받게 된다. DAS가 시작하지 않은 경우 INDEPENDENT 모드로 MS를 시작하기 위해 dasurl을 생략할 수 있으나, 그 외 경우는 명시하기를 권장한다. INDEPENDENT 모드에 대한 설명은 “6.1.3. INDEPENDENT 모드의 Managed Server(MS)”를 참고한다.
startManagedServer 스크립트는 위치에 따라 다음과 같이 실행한다.
JEUS_HOME/bin
JEUS_HOME/bin$ startManagedServer -dasurl <das_ip:das_baseport> -domain <domain_name> -server <server_name> -u <user_name> -p <password>
DOMAIN_HOME/bin
DOMAIN_HOME/bin$ startManagedServer -dasurl <das_ip:das_baseport> -server <server_name> -u <user_name> -p <password>
SERVER_HOME/bin
SERVER_HOME/bin$ startManagedServer -dasurl <das_ip:das_baseport> -u <user_name> -p <password>
클라우드 서버(Cloud Server)를 시작하는 스크립트는 startCloudServer로 서버의 도메인 이름, 서버의 이름, JEUS를 시작할 수 있는 권한을 가진 사용자명과 패스워드가 필요하다. 도메인이 하나만 있을 경우 도메인, 서버은 옵션 생략가능하다. 도메인이 여러 개일 경우 도메인 옵션을 설정해 주어야 하며 서버 옵션은 생략 가능하다.
JEUS_HOME/bin 하위에서 실행할 경우에는 이 모든 값이 필요하지만, DOMAIN_HOME 하위에서 실행할 때에는 도메인, 서버은 옵션 생략가능하다.
위치에 따라 다음과 같이 실행한다.
JEUS_HOME/bin
JEUS_HOME/bin$ startCloudServer -domain <domain_name> -u <user_name> -p <password>
DOMAIN_HOME/bin
DOMAIN_HOME/bin$ startCloudServer -u <user_name> -p <password>
SERVER_HOME/bin
SERVER_HOME/bin$ startCloudServer -u <user_name> -p <password>
기본적으로는 클라우드 서버가 RUNNING 상태가 된 이후에는 파일로만 서버의 로그(SERVER_HOME/logs/JeusServer.log)가 남게 된다. 서버의 로그를 콘솔 툴 화면에서 모니터링하려면 추가적으로 -verbose 옵션을 설정한다.
다음과 같이 jps 명령어로 확인하면 DomainAdminServerBootstrapper를 확인할 수 있다.
jps -l 409880 sun.tools.jps.Jps 398868 jeus.server.NodemanagerBootstrapper 399352 jeus.server.admin.DomainAdminServerBootstrapper
서버 시작에 실패한 경우에는 SERVER_HOME/logs/JeusServer.log에서 실패 이유를 확인할 수 있다.
1. jps는 Java 프로세스를 조회하는 툴이며, JAVA_HOME/bin에 위치한다.
2. 클라우드 서버는 Launcher를 사용하지 않는다.
본 절에서는 Domain Administration Server(DAS), Managed Server(MS), Standalone Server, Cloud Server를 종료하는 방법에 대해 설명한다.
DAS의 종료는 콘솔 툴(jeusadmin)이나 스크립트를 사용한다.
MS를 모두 종료한 후 DAS를 종료할 수 있다(“4.4.2. Managed Server(MS) 종료” 참고). local-shutdown 명령어를 다음과 같이 실행한다.
[DAS]domain1.adminServer>local-shutdown
DAS가 위치하는 머신에 설치된 스크립트를 이용하여 종료할 수 있다. stopServer 스크립트는 위치에 따라 다음과 같이 실행한다.
JEUS_HOME/bin
JEUS_HOME/bin$ stopServer -host <server_ip:server_baseport> -u <user_name> -p <password>
DOMAIN_HOME/bin
DOMAIN_HOME/bin$ stopServer -host <server_ip:server_baseport> -u <user_name> -p <password>
SERVER_HOME/bin
SERVER_HOME/bin$ stopServer -host <server_ip:server_baseport> -u <user_name> -p <password>
MS를 시작할 때와 마찬가지로 종료하는 방법도 DAS를 통하는 방법과 스크립트를 사용하는 방법이 있다.
DAS를 통해 MS를 종료할 경우에는 WebAdmin 또는 콘솔 툴(jeusadmin)을 사용한다.
WebAdmin 사용
WebAdmin 메뉴에서 [Servers]를 선택하면 서버 목록 조회 화면으로 이동한다. 조회된 서버 목록에서 종료할 서버의 [stop] 버튼을 클릭한다.
현재 수행 중인 요청에 대한 처리를 보장하는 Graceful 서버 종료 기능이 제공되기 때문에 완료되지 않은 요청이 있는 경우에는 'Timeout' 항목에 요청의 완료까지 기다릴 시간을 입력한 다음 [확인] 버튼을 클릭한다.
화면 상단에 결과 메시지가 표시되고 서버가 정상적으로 종료된 것을 확인할 수 있다.
Graceful 서버 종료에 대한 자세한 설명은 “JEUS Server 안내서”의 “3.1.3. Managed Server 종료”를 참고한다.
콘솔 툴 사용
콘솔 툴(jeusadmin)을 사용하여 다음과 같이 stop-server 명령어를 통해 DAS가 운영 중인 경우에 MS를 종료할 수 있다. stop-server 명령어에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.3.46. stop-server”를 참고한다.
[DAS]domain1.adminServer>stop-server <server_list>
MS가 위치한 머신에 설치된 스크립트를 이용하여 MS를 종료할 수 있다. 즉, 도메인 내에 여러 서버가 여러 머신에 분포한다면 각 머신에 접속하여 MS가 위치하는 머신에서 스크립트를 수행해야 한다.
stopServer 스크립트는 위치에 따라 다음과 같이 실행한다.
JEUS_HOME/bin
JEUS_HOME/bin$ stopServer -host <server_ip:server_baseport> -u <user_name> -p <password>
DOMAIN_HOME/bin
DOMAIN_HOME/bin$ stopServer -host <server_ip:server_baseport> -u <user_name> -p <password>
SERVER_HOME/bin
SERVER_HOME/bin$ stopServer -host <server_ip:server_baseport> -u <user_name> -p <password>
서버 이름을 이용하여 MS를 종료할 수도 있다. 이 경우 DAS의 주소를 지정해주어야 한다. 지정하지 않을 경우에는 DAS의 주소를 localhost:9736 으로 지정하여 동작한다.
JEUS_HOME/bin
JEUS_HOME/bin$ stopServer -server <server_name> -dasurl <server_ip:server_baseport> -u <user_name> -p <password>
DOMAIN_HOME/bin
DOMAIN_HOME/bin$ stopServer -server <server_name> -dasurl <server_ip:server_baseport> -u <user_name> -p <password>
SERVER_HOME/bin
SERVER_HOME/bin$ stopServer -server <server_name> -dasurl <server_ip:server_baseport> -u <user_name> -p <password>
클라우드 서버(Cloud Server)의 종료는 콘솔 툴(jeusadmin)이나 스크립트를 사용한다.
local-shutdown 명령어를 다음과 같이 실행한다.
[DAS]domain1.adminServer>local-shutdown
서버가 위치하는 머신에 설치된 스크립트를 이용하여 종료할 수 있다. stopServer 스크립트는 위치에 따라 다음과 같이 실행한다.
JEUS_HOME/bin
JEUS_HOME/bin$ stopServer -host <server_ip:server_baseport> -u <user_name> -p <password>
DOMAIN_HOME/bin
DOMAIN_HOME/bin$ stopServer -host <server_ip:server_baseport> -u <user_name> -p <password>
SERVER_HOME/bin
SERVER_HOME/bin$ stopServer -host <server_ip:server_baseport> -u <user_name> -p <password>
MS의 Life Cycle은 DAS의 판단에 의해 여러 가지 상태로 구분된다.
각 상태에 대한 설명은 다음과 같다.
DAS가 MS의 상태에 대해서 판단할 때는 SCF(System Clustering Framework)의 기능을 이용한다.
SCF는 도메인을 구성하는 여러 서버들간에 서로의 상태를 모니터링하거나 서로간의 메시징을 담당하는 모듈로써 네트워크를 통해서 원격에 존재하는 다른 서버의 상태를 파악하도록 디자인되어 있다. 네트워크를 통하기 때문에 원격 서버의 부하등의 원인으로 통신이 지연되거나 할 경우 장애로 오감지 될 수 있으며 이 경우 실제 장애가 아니기 때문에 원인이 해소되면 다시 정상 상태로 인식된다.
SCF는 기본적으로 Multicast를 사용하지만, 이를 지원하지 않는 환경이거나 다른 필요나 요구사항이 있을 경우 Virtual Multicast 모드를 사용하도록 설정할 수도 있다. Virtual Multicast는 Multicast를 대신하여 도메인을 구성하는 각 서버들간에 Socket 연결을 맺어서 통신하는 방식이다.
다음의 3가지 방법으로 서버의 Life Cycle 상태를 확인할 수 있다.
MBean 사용
J2EEDomain#getServerState(String serverName)로도 서버의 상태를 모니터링할 수 있다. MBean의 사용 방법에 대한 자세한 내용은 "JEUS JMX 안내서"를 참고한다.
WebAdmin 사용
WebAdmin의 왼쪽 메뉴에서 [Monitoring] > [Servers]를 선택하면 다음과 같이 도메인 내의 서버 목록과 정보가 조회되고, Life Cycle의 상태는 'Status' 컬럼을 통해 확인할 수 있다.
콘솔 툴(jeusadmin) 사용
다음과 같이 콘솔 툴에서 serverinfo 명령어를 사용하여 서버의 Life Cycle 상태를 확인할 수 있다.
[DAS]domain1.adminServer>serverinfo 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 |node1|399352 | N/A | 2016-08-23 | false | base-0.0. | jms, | |rver(*) |(01:40:40| | | |(화) 오후 | |0.0:9736 | ejb, web | | |) | | | |03:53:28 KST | | http-server-| | | | | | | | | |0.0.0.0:8088 | | | | | | | | | |jms-0.0.0 | | | | | | | | | |.0:9741 | | +--------+---------+-----+-------+-----+----------------+---------+-------------+-------------+ | server1| RUNNING |node1| N/A | clus| 2016-08-23 | N/A | base-192.168| jms, | | |(01:31:03| | |ter1 |(화) 오후 | |.34.1:9836 | ejb, web | | |) | | | |04:03:05 KST | | | | +--------+---------+-----+-------+-----+----------------+---------+-------------+-------------+ | server2| SHUTDOWN|node1| N/A | clus| 2016-08-23 | N/A | N/A | N/A | | |(01:31:03| | |ter1 |(화) 오후 | | | | | |) | | | |04:03:05 KST | | | | +--------+---------+-----+-------+-----+----------------+---------+-------------+-------------+ ===============================================================================================
serverinfo 명령어에 대한 자세한 내용은 “JEUS Reference Book”의 “4.2.3.38. server-info”를 참고한다.