제4장 서버 Lifecycle

내용 목차

4.1. 서버 시작 준비
4.2. 서버 시작
4.2.1. Domain Administration Server(DAS) 시작
4.2.2. Managed Server(MS) 시작
4.3. 서버 종료
4.3.1. Managed Server(MS) 종료
4.3.2. Domain Administration Server(DAS) 종료
4.4. 서버 Lifecycle 상태 확인

본 장에서는 서버의 시작과 종료, 서버 Lifecycle 확인 방법에 대해 설명한다.

4.1. 서버 시작 준비

서버를 시작하기 전에 준비되어야 하는 몇 가지 사항은 다음과 같다.

  • JEUS가 설치되고, 도메인 및 서버가 생성되어 있어야 한다. 또한 서버를 시작 및 종료할 수 있는 사용자명과 패스워드가 생성되어 있어야 한다. 이러한 사전 작업이 되어 있지 않다면 "JEUS 설치 및 시작하기"를 참고하여 환경을 구축한다.

  • WebAdmin이나 jeusadmin을 사용하여 DAS를 통해 서버를 시작하려면 노드 설정이 추가적으로 필요하다. 노드 설정에 대한 자세한 내용은 "JEUS Node Manager 안내서"를 참고한다.

    각 MS가 위치할 머신에서 사용자가 직접 스크립트로 시작할 때에는 별도의 노드 설정은 필요없다. 하지만 이 경우 노드 매니저의 제어를 받지 못하니 설정해서 사용할 것을 권장한다.

  • 서버에 적용하려는 JVM 설정이 XML에 설정되었는지 확인한다.

    도메인을 생성할 때 설정하지 않았다면, JVM 설정 변경은 재시작이 필요한 설정이기 때문에 DAS를 시작하여 설정을 변경한 후 DAS를 재시작하여 반영한다.

    JVM 설정이 누락된 MS는 WebAdmin이나 콘솔 툴을 사용해서 JVM 설정을 추가한 후에 서버를 시작한다. 변경 방법은 “3.6.2. 서버의 JVM 설정변경”을 참고한다.

4.2. 서버 시작

본 절에서는 Domain Administration Server(DAS)와 Managed Server(MS)를 시작하는 방법에 대해 설명한다.

4.2.1. Domain Administration Server(DAS) 시작

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 명령으로 확인하면 jeus.launcher.Launcher와 jeus.server.admin.DomainAdminServerBootstrapper를 확인할 수 있다.

jps -l
26514 jeus.launcher.Launcher
26515 jeus.server.admin.DomainAdminServerBootstrapper
27582 sun.tools.jps.Jps
26517 jeus.tool.console.ConsoleBootstrapper

서버 시작에 실패한 경우에는 SERVER_HOME/logs/JeusLauncher.log에서 실패 이유를 확인할 수 있다.

참고

1. jps는 Java 프로세스를 조회하는 툴이며, JAVA_HOME/bin에 위치한다.

2. Launcher에 대한 자세한 설명은 JEUS Server 안내서”의 “1.6. Launcher”를 참고한다.

4.2.2. Managed Server(MS) 시작

MS를 시작하는 방법은 DAS를 통해 시작하는 방법과 스크립트로 시작하는 방법이 있다.

DAS를 통해 MS 시작

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.47. start-server”를 참고한다.

스크립트로 MS 시작

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>

4.3. 서버 종료

본 절에서는 DAS와 MS를 종료하는 방법에 대해 설명한다.

4.3.1. Managed Server(MS) 종료

MS를 시작할 때와 마찬가지로 종료하는 방법도 DAS를 통하는 방법과 스크립트를 사용하는 방법이 있다.

DAS를 통해 MS 종료

DAS를 통해 MS를 종료할 경우에는 WebAdmin 또는 콘솔 툴(jeusadmin)을 사용한다.

  • WebAdmin 사용

    WebAdmin 메뉴에서 [Servers]를 선택하면 서버 목록 조회 화면으로 이동한다. 조회된 서버 목록에서 종료할 서버의 [stop] 버튼을 클릭한다.

    현재 수행 중인 요청에 대한 처리를 보장하는 Graceful 서버 종료 기능이 제공되기 때문에 완료되지 않은 요청이 있는 경우에는 'Timeout' 항목에 요청의 완료까지 기다릴 시간을 입력한 다음 [확인] 버튼을 클릭한다.

    [그림 4.1] DAS를 통한 MS 종료 - 설정

    DAS를 통한 MS 종료 - 설정

    화면 상단에 결과 메시지가 표시되고 서버가 정상적으로 종료된 것을 확인할 수 있다.

    참고

    Graceful 서버 종료에 대한 자세한 설명은 JEUS Server 안내서”의 “3.1.3. Managed Server 종료”를 참고한다.

  • 콘솔 툴 사용

    콘솔 툴(jeusadmin)을 사용하여 다음과 같이 stop-server 명령어를 통해 DAS가 운영 중인 경우에 MS를 종료할 수 있다. stop-server 명령어에 대한 자세한 사용법은 JEUS Reference Book”의 “4.2.3.50. stop-server”를 참고한다.

    [DAS]domain1.adminServer>stop-server <server_list>

스크립트로 MS 종료

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> 

4.3.2. Domain Administration Server(DAS) 종료

DAS의 종료는 jeusadmin이나 스크립트를 사용한다.

콘솔 툴로 DAS 종료

MS를 모두 종료한 후 DAS를 종료할 수 있다. local-shutdown 명령어를 다음과 같이 실행한다.

[DAS]domain1.adminServer>local-shutdown

스크립트로 DAS 종료

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> 

4.4. 서버 Lifecycle 상태 확인

MS의 Lifecycle은 DAS의 판단에 의해 여러 가지 상태로 구분된다.

[그림 4.2] DAS의 판단에 의한 서버의 Lifecycle

DAS의 판단에 의한 서버의 Lifecycle


각 상태에 대한 설명은 다음과 같다.

상태설명
SHUTDOWN시작되지 않은 상태 또는 정상 종료된 상태를 나타낸다.
STARTING서버를 시작하는 중으로 아직 서비스는 할 수 없는 상태를 나타낸다.
STANDBY시작 중에 등록된 애플리케이션을 Distribute하던 중 실패한 것이 있어 RUNNING 상태로 이동하지 못하고 머무르는 상태를 나타낸다. 이 상태에서 문제의 모듈을 수정하여 다시 시작을 하거나, 그 모듈을 무시하고 서비스를 하기 위해서는 force 옵션을 주고 start 명령을 수행한다.
RUNNING서버 시작이 완료되어 서비스를 할 수 있는 상태를 나타낸다.
SHUTTING_DOWN서버가 종료 중인 상태를 나타낸다.
SUSPENDINGRUNNING 상태에서 모든 deploy된 애플리케이션의 서비스를 중단하기 위해 Suspend를 수행 중인 상태를 나타낸다.
RESUMINGSUSPENDED 상태에서 다시 모든 정지된(Stopped) 애플리케이션의 서비스를 재기하기 위해 Resume을 수행 중인 상태를 나타낸다.
SUSPENDED관리자가 의도적으로 모든 애플리케이션을 정지하도록 Suspend를 수행한 상태를 나타낸다. 이 상태에서는 새롭게 애플리케이션을 추가하고 싶은 경우에도 해당 애플리케이션을 Distriibute만 가능하고 시작할 수는 상태이다.
FAILURE_SUSPECTEDDAS가 판단하기로 MS와 연결되지 않아 해당 MS의 비정상 종료를 의심하는 상태를 나타낸다.
FAILEDDAS가 판단하기로 MS와 일정 시간동안 계속 연결되지 않아 해당 MS의 비정상 종료를 확신한 상태를 나타낸다.

다음의 3가지 방법으로 서버의 Lifecycle 상태를 확인할 수 있다.

  • MBean 사용

    J2EEDomain#getServerState(String serverName)로도 서버의 상태를 모니터링할 수 있다. MBean의 사용 방법에 대한 자세한 내용은 "JEUS JMX 안내서"를 참고한다.

  • WebAdmin 사용

    WebAdmin의 왼쪽 메뉴에서 [Monitoring] > [Servers]를 선택하면 다음과 같이 도메인 내의 서버 목록과 정보가 조회되고, Lifecycle의 상태는 'Status' 컬럼을 통해 확인할 수 있다.

    [그림 4.3] 서버 Lifecycle 상태 확인 - 서버 모니터링

    서버 Lifecycle 상태 확인 - 서버 모니터링

  • 콘솔 툴(jeusadmin) 사용

    다음과 같이 콘솔 툴에서 serverinfo 명령어를 사용하여 서버의 Lifecycle 상태를 확인할 수 있다.

    [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  | N/A | 5360  | N/A | Fri Mar 22    | false   | base-192.168| jms,        |
    |rver(*) |(320 sec) |     |       |     |10:41:25 KST   |         |.34.3:9736   | ejb, web    |
    |        |          |     |       |     |2013           |         | http-server-|             |
    |        |          |     |       |     |               |         |0.0.0.0:8088 |             |
    |        |          |     |       |     |               |         |jms-internal-|             |
    |        |          |     |       |     |               |         |0.0.0.0:9761 |             |
    +--------+----------+-----+-------+-----+---------------+---------+-------------+-------------+
    | server1| RUNNING  |node1| 6424  | clus| Fri Mar 22    | false   | base-192.168| jms,        |
    |        |(232 sec) |     |       |ter1 |10:42:17 KST   |         |.34.1:9836   | ejb, web    |
    |        |          |     |       |     |2013           |         |             |             |
    +--------+----------+-----+-------+-----+---------------+---------+-------------+-------------+
    | server2| SHUTDOWN |node2| N/A   | N/A | N/A           | N/A     | N/A         | N/A         |
    |        |(4 sec)   |     |       |     |10:46:05 KST   |         |             |             |
    |        |          |     |       |     |2013           |         |             |             |
    +--------+----------+-----+-------+-----+---------------+---------+-------------+-------------+
    ===============================================================================================

    참고

    serverinfo 명령어에 대한 자세한 내용은 JEUS Reference Book”의 “4.2.3.43. server-info”를 참고한다.