제3장 SSH 타입 노드 매니저

내용 목차

3.1. 개요
3.2. 환경설정
3.2.1. SSH 설정
3.3. 노드 설정 및 삭제
3.3.1. SSH 타입 노드 설정
3.3.2. SSH 타입 노드 삭제
3.3.3. SSH 타입 노드 변경

본 장에서는 SSH 타입 노드 매니저를 사용하기 위한 설정 방법에 대해서 설명한다.

3.1. 개요

SSH 타입 노드 매니저는 UNIX 계열의 운영체제에서 사용할 수 있는 노드 매니저 타입으로 해당 노드로 SSH(Secure Shell) 명령을 수행하여 동작한다. 노드에 JEUS 서버를 추가할 때 쉽게 설치할 수 있는 기능을 제공하고 DAS 머신에서 SSH 서버를 실행해서 로컬 노드를 구성할 수도 있다. 그러나 Windows의 경우에는 SSH 타입 노드 매니저를 지원하지 않는다.

참고

본 장에서는 원격 설정과 로컬(DAS 머신) 설정에 대한 혼동을 피하기 위해서 원격 노드, 원격 서버를 기준으로 설명한다.

3.2. 환경설정

SSH 타입 노드 매니저를 사용하기 위해선 몇가지 환경 설정이 필요하다.

3.2.1. SSH 설정

UNIX 계열의 운영체제에서 SSH 타입 노드 매니저 기능을 사용하려면 DAS 머신에서 노드로 SSH 접속이 가능해야 한다. 즉, DAS 머신은 SSH 클라이언트가 되고, 원격 노드는 SSH 서버가 된다.

본 절에서는 SSH 서버의 구동은 별도로 설명하지 않으며, SSH 접속을 위해 필요한 설정들만 설명한다.

[그림 3.1] 원격 노드로의 SSH 접속

원격 노드로의 SSH 접속

JEUS에서 원격 노드로의 SSH 접속은 개인 Key를 이용하는 접속만 허용된다. 개인 Key를 통한 접속을 위해 DAS 머신에서 ssh-keygen을 이용하여 공개 Key와 개인 Key를 생성한다. Key를 생성할 때 개인 Key를 암호화하는 passphrase는 JEUS에서 지원하지 않으므로 설정하지 않는다.

생성한 개인 Key와 공개 Key는 USER_HOME/.ssh 폴더에 "id_rsa", "id_rsa.pub"라는 이름의 파일로 저장된다. 공개 Key "id_rsa.pub"의 내용을 접속하려는 원격 노드의 USER_HOME/.ssh/authorized_keys 파일에 추가하면 개인 Key를 이용한 접속이 가능해진다.

다음과 같이 ssh 명령을 실행해서 개인 Key를 통한 SSH 접속이 가능한지 확인할 수 있다.

ssh <ssh-user-name>@<remote-host-address>

다음은 ssh 명령의 예제이다.

$ ssh test@192.168.23.129

SSH 명령을 사용한 원격 서버 실행을 위해서는 해당 노드에 JAVA_HOME이 환경변수로 설정되어 있어야 한다. SSH는 명령을 수행할 때 원격 머신의 USER_HOME/.bashrc 파일을 통해 설정되는 환경변수를 이용하므로 .bashrc 파일을 다음과 같이 수정한다.

JEUS 에서의 SSH 명령 수행은 기본적으로 non-interactive 모드로 동작한다. non-interactive 모드일 경우 설정한 환경변수가 동작하지 않을 수 있으므로 다음과 같이 최상위에 환경변수를 설정한다.

# ~/.bashrc

export JAVA_HOME='/home/java/jdk/jdk1.6.0_30'
export PATH='/home/java/jdk/jdk1.6.0_30/bin':$PATH

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

...    

Korn shell인 경우에는 USER_HOME/.kshrc에 위의 내용을 설정한다. 그리고 USER_HOME/.ssh/environment 파일을 새로 생성해서 ENV=~/.kshrc를 추가한다.

$ cat ~/.ssh/environment
ENV=~/.kshrc

위의 설정이 제대로 동작하려면 /etc/ssh/sshd_config 파일의 PermitUserEnvironment를 'yes'로 설정하고 sshd를 재시작한다.

원격 노드에 JAVA_HOME 환경변수를 설정한 후 DAS 머신에서 다음의 명령을 통해 설정이 제대로 적용되었는지 확인한다.

$ ssh test@192.168.23.129 java -version
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Server VM (build 20.5-b03, mixed mode)        

위의 명령이 정상적으로 동작한다면 SSH를 사용할 준비가 완료된 것이다.

3.3. 노드 설정 및 삭제

SSH 타입의 노드는 WebAdmin과 콘솔 툴을 사용해서 설정하고 삭제할 수 있다.

3.3.1. SSH 타입 노드 설정

SSH 설정이 완료되면 JEUS에 노드의 설정을 적용해야 한다.

노드는 기본적으로 다음의 3가지 기본정보가 필요하고, 이 정보와 함께 노드의 종류별로 필요한 설정을 한다.

  • ID로 사용할 노드의 이름

  • 원격 머신의 주소

  • 원격 머신의 JEUS 설치 디렉터리 정보

SSH 타입 노드 매니저는 UNIX 환경에서만 지원 가능하다. SSH 접속을 위해서 포트 번호, 사용자 이름 그리고 개인 Key 파일 경로 정보를 설정해야 한다. 본 절에서는 WebAdmin과 콘솔 툴을 사용하여 JEUS에 SSH 타입 노드를 설정하는 방법을 설명한다.

WebAdmin 사용

다음은 WebAdmin을 사용해서 SSH 타입 노드를 설정하는 방법이다.

  1. 노드와 관련된 모든 사항은 [Node 설정] 메뉴를 통해 편집 및 동작이 가능하다. WebAdmin 메인 화면에서 [Node 설정]을 선택한다.

  2. Nodes 화면에는 추가된 노드 목록이 조회된다. 사용자가 노드를 추가하지 않아도 노드 목록에는 JEUS를 설치할 때 기본적으로 생성되는 노드가 조회된다. 노드 목록에서는 노드의 이름, 종류, 제어 가능 여부, 해당 노드에 설치된 JEUS 버전 정보 등을 확인할 수 있다. 노드 추가를 위해 [ADD] 버튼을 클릭한다.

    참고

    노드 설정은 [LOCK & EDIT] 버튼을 클릭하여 설정 변경 모드로 전환하거나 [Activate Changes] 버튼을 클릭하여 변경 반영과 같은 동작을 필요로 하지 않는다.

  3. Node 화면에서 노드의 이름, 호스트 주소, JEUS 설치 경로를 입력한다. 노드의 타입으로 'Ssh'를 선택하고 관련 항목을 입력한 뒤 [확인] 버튼을 클릭한다.

  4. Nodes 화면 상단에 노드가 성공적으로 추가되었다는 메시지와 함께 노드 목록에 추가한 노드 정보가 조회된 것을 확인할 수 있다.

    원격 노드에 JEUS 설치가 완료되면 'JEUS version' 컬럼에서 설치된 JEUS 버전을 확인할 수 있다. JEUS가 설치되지 않은 상태라면 'JEUS version' 컬럼에 JEUS 버전이 출력되지 않는다. 제어 가능한 노드인 경우 [install] 버튼을 클릭하여 JEUS를 설치할 수 있다.

  5. JEUS가 설치된 노드에서 서버를 실행하려면 앞에서 정의한 노드를 해당 서버에 매핑시켜야 한다.

    서버 설정 화면의 'Node Name' 항목에 노드 이름을 선택해서 서버에 매핑한다.

    참고

    이 설정은 동적 변경 항목이므로 설정을 변경하기 전에 [LOCK & EDIT] 버튼을 클릭하여 설정 변경 모드로 전환하고, 설정 변경이 완료된 후에는 [Activate Changes] 버튼을 클릭하여 변경 내용을 반영하는 과정이 필요하다.

  6. JEUS가 설치된 노드에 매핑된 서버는 화면 왼쪽의 [Monitoring] > [Servers] 메뉴를 선택하면 조회되는 서버 목록에서 확인할 수 있다.

    조회된 서버 목록에서 원하는 서버 선택한 후 [start] 버튼을 클릭하면 나오는 화면에서 각 항목을 설정한 후 [확인] 버튼을 클릭하면 해당 서버가 시작된다.

    참고

    서버를 기동하는 방법은 [Monitoring] > [Servers] 메뉴 외의 [Servers] 메뉴를 이용할 수도 있다. 해당 메뉴를 사용한 방법은 “제2장 Java 타입 노드 매니저”를 참고한다.

  7. 원격 노드에 서버 실행이 완료되면 화면 상단에 서버가 시작되었다는 메시지와 함께 'Status' 컬럼에 해당 서버의 상태가 'RUNNING'으로 표시된 것을 확인할 수 있다.

콘솔 툴 사용

다음은 콘솔 툴을 사용해서 노드를 설정하는 방법이다.

  1. add-ssh-node 명령을 사용해서 다음과 같이 JEUS에 SSH 타입 노드를 추가한다.

    [DAS]domain1.adminServer>add-ssh-node node2 -host 192.168.23.129
    -dir /home/test/jeus -user test -privatekey /home/hong/.ssh/id_rsa
    The node [node2] was successfully added.
  2. 추가한 SSH 노드가 정상적으로 동작하는지 여부를 check-ssh-node 명령을 통해 확인할 수 있다. 해당 노드에 SSH를 통해 java 명령을 수행해보는 명령으로 다음과 같이 java를 수행할 수 있다고 나타나면 추가한 노드가 정상적으로 동작한다는 의미이다.

    [DAS]domain1.adminServer>check-ssh-node node2
    The Domain Administration Server can execute the "java" process via SSH. 
  3. 추가된 노드는 nodes.xml에 해당 설정이 저장되며, show-node 명령을 통해 다음과 같이 설정을 확인할 수 있다.

    [DAS]domain1.adminServer>show-node node2
    ================================================================================
    +-----------------------------------+------------------------------------------+
    |              Property             |                   Value                  |
    +-----------------------------------+------------------------------------------+
    | Node name                         | node2                                    |
    | Host                              | 192.168.23.129                           |
    | Mapped servers                    |                                          |
    | Node Type                         | SSH                                      |
    | Installed directory               | /home/test/jeus                          |
    | SSH user name                     | test                                     |
    | SSH private key                   | /home/hong/.ssh/id_rsa                   |
    | SSH port                          | 22                                       |
    +-----------------------------------+------------------------------------------+
    ================================================================================
  4. 이렇게 구성된 노드들은 list-nodes 명령을 통해 노드의 종류, 제어 가능 여부, 설치된 JEUS의 버전 정보를 확인할 수 있다.

    [DAS]domain1.adminServer>list-nodes
    ====================================================================
    +-----------+------+------------------------+----------------------+
    | Node name | Type |      Under control     |     JEUS version     |
    +-----------+------+------------------------+----------------------+
    | node1     | JAVA | N                      | -                    |
    | node2     | SSH  | Y                      | -                    |
    +-----------+------+------------------------+----------------------+
    ====================================================================

    위와 같이 노드가 설정되어 있는 경우 콘솔 툴의 install-jeus 명령을 통해 해당 노드에 JEUS를 설치할 수 있다.

    [DAS]domain1.adminServer>install-jeus node2
    JEUS was successfully installed on the node [node2].

    참고

    install-jeus 명령은 DAS 머신에 설치된 파일을 복사하는 작업이기 때문에 해당 노드가 DAS 머신과 동일한 OS일 경우에만 정상 동작이 가능하고, 다른 OS일 경우 native 라이브러리를 정상적으로 사용할 수 없기 때문에 정상 동작이 불가능하다. 환경에 따라 수행시간이 오래 걸릴 수 있음에 유의한다.

  5. 이렇게 설정된 노드에 서버를 매핑해야 해당 서버가 해당 노드에서 동작할 수 있게 된다. modify-server 명령의 -node 옵션을 사용해서 매핑한다.

    다음은 특정 서버를 특정 노드에 매핑하는 예제이다.

    [DAS]domain1.adminServer>modify-server server1 -node node2
    Successfully performed the MODIFY operation for server (server1).
    Check the results using "list-servers server1 or modify-server server1"
  6. 다음과 같이 show-node 명령을 사용하여 해당 노드를 확인해 보면 서버가 매핑된 것을 확인할 수 있다.

    [DAS]domain1.adminServer>show-node node2
    ================================================================================
    +-----------------------------------+------------------------------------------+
    |              Property             |                   Value                  |
    +-----------------------------------+------------------------------------------+
    | Node name                         | node2                                    |
    | Host                              | 192.168.23.129                           |
    | Mapped servers                    | server1                                  |
    | Node Type                         | SSH                                      |
    | Installed directory               | /home/test/jeus                          |
    | SSH user name                     | test                                     |
    | SSH private key                   | /home/hong/.ssh/id_rsa                   |
    | SSH port                          | 22                                       |
    +-----------------------------------+------------------------------------------+
    ================================================================================
  7. 이렇게 노드에 매핑된 서버는 콘솔 툴의 start-server 명령을 통해 간편하게 시작 및 종료가 가능하고, 서버를 실행하는 데 필요한 모든 정보는 자동으로 설정된다.

    [DAS]domain1.adminServer>start-server server1
    The server [server1] was successfully started.

    만약, 서버가 동작하고 있는 노드에서 kill 명령을 통해 해당 서버를 강제 종료하면, DAS는 해당 서버가 FAILED 상태임을 인지하고 자동으로 해당 서버를 재시작한다.

    다음과 같이 server-info 명령을 통해 해당 서버의 상태 변화를 확인할 수 있다.

    [DAS]domain1.adminServer>server-info
    
    Information about Domain (domain1)
    ================================================================================
    +-------+-------------+-----+-------+-----+--------------+--------+------------+
    | Server|    Status   | Node|  PID  | Clus|    Latest    | Need to|Listen Ports|
    |       |             |Name |       | ter |StartTime/Shut|Restart |            |
    |       |             |     |       |     |   downTime   |        |            |
    +-------+-------------+-----+-------+-----+--------------+--------+------------+
    | adminS| RUNNING (481| N/A | 26441 | N/A | Wed Mar 27   | false  | base-0.0.0.|
    |erver(*|sec)         |     |       |     |12:04:47 KST  |        |0:9736      |
    |)      |             |     |       |     |2013          |        | http-server|
    |       |             |     |       |     |              |        |-0.0.0.0:808|
    |       |             |     |       |     |              |        |8           |
    |       |             |     |       |     |              |        | jms-0.0.0.0|
    |       |             |     |       |     |              |        |:9741       |
    +-------+-------------+-----+-------+-----+--------------+--------+------------+
    |server1| FAILED  (73s|node2| N/A   | N/A | N/A          | N/A    | N/A        | 
    |       |ec)          |     |       |     |              |        |            |
    +-------+-------------+-----+-------+-----+--------------+--------+------------+
    |server2| SHUTDOWN    | N/A | N/A   | N/A | N/A          | N/A    | N/A        |
    +-------+-------------+-----+-------+-----+--------------+--------+------------+
    ================================================================================
    [DAS]domain1.adminServer>server-info
    
    Information about Domain (domain1)
    ================================================================================
    +--------+---------+-----+-------+-----+----------------+--------+-------------+
    | Server |  Status | Node|  PID  | Clus|     Latest     | Need to| Listen Ports|
    |        |         |Name |       | ter |StartTime/Shutdo|Restart |             |
    |        |         |     |       |     |     wnTime     |        |             |
    +--------+---------+-----+-------+-----+----------------+--------+-------------+
    | adminSe| RUNNING | N/A | 26441 | N/A | Wed Mar 27     | false  | base-0.0.0.0|
    |rver(*) |(521 sec)|     |       |     |12:04:47 KST    |        |:9736        |
    |        |         |     |       |     |2013            |        | http-server-|
    |        |         |     |       |     |                |        |0.0.0.0:8088 |
    +--------+---------+-----+-------+-----+----------------+--------+-------------+
    | server1| RUNNING |node2| 27005 | N/A | Wed Mar 27     | false  | base-0.0.0.0|
    |        |(31 sec) |     |       |     |12:12:59 KST    |        |:19736       |
    |        |         |     |       |     |2013            |        | http-server-|
    |        |         |     |       |     |                |        |0.0.0.0:18088|
    |        |         |     |       |     |                |        |jms-0.0.0.0:1|
    |        |         |     |       |     |                |        |9741         |
    +--------+---------+-----+-------+-----+----------------+--------+-------------+
    | server2| SHUTDOWN| N/A | N/A   | N/A | N/A            | N/A    | N/A         |
    +--------+---------+-----+-------+-----+----------------+--------+-------------+
    ================================================================================

3.3.2. SSH 타입 노드 삭제

SSH 타입 노드는 WebAdmin이나 콘솔 툴을 사용해서 삭제할 수 있다. 삭제 방법은 Java 타입 노드의 방법과 동일하므로 본 절에서는 설명을 생략한다. 자세한 내용은 “2.4.2. Java 타입 노드 삭제”를 참고한다.

3.3.3. SSH 타입 노드 변경

SSH 타입 노드는 WebAdmin이나 콘솔 툴을 사용해서 변경할 수 있다.

  1. modify-ssh-node 명령이나 modify-node 명령을 사용해서 노드를 변경할 수 있다.

    [DAS]domain1.adminServer>modify-ssh-node node2 -host 192.168.23.128
    The node [node2] was modified successfully. Check the results using "show-node"
    [DAS]domain1.adminServer>modify-node node2 -host 192.168.23.127
    The node [node2] was modified successfully. Check the results using "show-node"
  2. 변경된 노드 정보를 확인하려면 show-node 명령을 사용해서 해당 노드의 설정을 조회한다.

    [DAS]domain1.adminServer>show-node node2
    ================================================================================
    +---------------------+--------------------------------------------------------+
    |       Property      |                          Value                         |
    +---------------------+--------------------------------------------------------+
    | Node Name           | node2                                                  |
    | Host                | 192.168.23.127                                         |
    | Mapped Servers      | server2                                                |
    | Node Type           | SSH                                                    |
    | Installed directory | /Users/kimsuok/Documents/jeus/jeus7/jeus7-b100-SNAPSHOT|
    | SSH User Name       | shoky                                                  |
    | SSH Private Key     | C:\Users\kimsuok\.ssh\id_rsa                           |
    | SSH Port            |                                                     23 |
    +---------------------+--------------------------------------------------------+
    ================================================================================