제5장 JEUS 클러스터링

내용 목차

5.1. 개요
5.2. 클러스터와 도메인 관계
5.3. 클러스터 기능
5.4. 클러스터 생성
5.5. 클러스터 설정
5.5.1. 서버 공통 설정
5.5.2. 클러스터 설정
5.5.3. Dynamic Servers를 이용한 클러스터 설정
5.6. 클러스터 변경
5.6.1. 클러스터에 서버 추가
5.6.2. 클러스터에서 서버 삭제
5.7. 클러스터 삭제

본 장에서는 도메인 내의 클러스터에 대해 정의하고 클러스터의 구성과 도메인과의 관계에 대해 설명한다. 또한 클러스터를 생성, 설정, 변경 및 삭제하는 방법에 대해 설명한다.

클러스터는 서비스의 확장성을 위한 부하 분산(Load Balancing)과 안정성을 위한 장애 극복(Failover) 기능을 제공하기 위해 동일한 서비스를 수행하는 여러 개 서버들의 집합이다.

같은 서비스를 수행하는 여러 개의 서버가 부하를 나눠서 처리하여 빠른 서비스가 가능하며, 부하의 정도에 따라 클러스터에 동적으로 서버를 추가 또는 삭제할 수 있어 부하 조절이 가능하다. 또한 몇 대의 서버가 서비스를 수행하지 못하는 상황에서도 같은 서비스를 하는 나머지 서버들이 서비스를 처리해주므로 사용자에게 서비스 중단이 노출되지 않는다. 즉, 많은 부하를 무리 없이 소화하고 서비스 불가능 상태가 되지 않는 하나의 서버라고 할 수 있다.

도메인은 관련된 서비스를 수행하는 서버 또는 클러스터들의 집합이다. 클러스터는 같은 서비스를 수행하는 여러 개 서버의 집합으로 하나의 도메인에 여러 개 존재할 수 있다. 클러스터를 구성하는 서버들은 한 머신에 모두 존재할 수도 있고, 각각 다른 머신에 존재할 수도 있다. 일반적으로 머신에 문제가 발생하여 서비스가 안될 경우를 고려하여 다른 머신에 위치한 서버들로 클러스터를 구성한다.

하나의 DAS는 단 하나의 도메인을 관리하므로, 도메인 내에 여러 개의 클러스터가 있다면 각 클러스터도 동일한 DAS의 관리를 받는다.


클러스터는 도메인 내에서 같은 서비스를 수행하는 MS들로 구성된다. 보통 여러 머신에 분산되어 있다. 이렇게 구성된 클러스터는 다음과 같은 기능을 갖는다.

JEUS에서는 이러한 기능을 위해 클러스터 내의 모든 서버에 같은 애플리케이션을 deploy하고, 같은 리소스를 사용하고, 같은 서비스를 등록할 것을 권장한다. Multicast를 사용하여 클러스터 내의 서버들 간에 서로의 위치와 상태를 공유하고, 클러스터 가능한 서비스들의 장애 극복을 위해 서비스의 진행 상태 정보를 서버들 간에 공유한다. 또한 리소스의 효율을 높일 수 있도록 부하에 따라 클러스터에 서버의 추가 및 삭제가 가능하다.

모든 서비스에 대해 클러스터링이 가능한 것은 아니다. 클러스터링이 가능한 서비스는 다음과 같다.

서비스설명
Servlets /Jsps

웹 엔진은 웹 서버에 의한 웹 애플리케이션 클러스터링과 HTTP 세션 클러스터링을 지원한다.

웹 서버에 의한 웹 애플리케이션 클러스터링에 대한 자세한 내용은 JEUS Web Engine 안내서”의 “2.4. 부하 분산을 위한 웹 서버 설정”을 참고하고, HTTP 세션 클러스터링에 대한 자세한 내용은 JEUS 세션 관리 안내서”의 “제2장 세션 서버”를 참고한다.

EJBEJB 엔진에서는 세션, Message Driven, Entity Bean과 Timer Service에서 클러스터링을 지원한다. EJB 엔진에서 제공하는 클러스터링에 대한 자세한 내용은 JEUS EJB 안내서”의 “제6장 EJB 클러스터링”을 참고한다.
JMSJMS에서는 Connection Factory와 Destination, Durable Subscriber의 클러스터링을 지원한다. JMS에서 제공하는 클러스터링에 대한 자세한 내용은 JEUS MQ 안내서”의 “제4장 JEUS MQ 클러스터링”을 참고한다.

클러스터가 가능한 서비스들에 한해서 클러스터를 구성할 때에는 다음의 제약사항을 고려해야 한다.

  • 클러스터로 구성된 모든 서버는 같은 버전의 JEUS를 사용해야 한다.

  • 각 서버는 단 하나의 클러스터에만 포함되어야 한다.

  • 도메인 사이에는 어떤 리소스도 공유가 불가능하기 때문에 클러스터로 구성된 모든 서버는 같은 도메인에 포함되어야 한다.

일반적으로 도메인을 구성할 때 서비스의 종류와 중요도 등을 고려하여 클러스터를 생성한다. 클러스터 생성 방법은 “2.2. 도메인 구성”"클러스터 추가" 부분을 참고한다.

클러스터 설정은 크게 서버 공통 설정과 클러스터 설정, Dynamic Servers를 이용한 클러스터 설정으로 구분된다.

클러스터 설정은 클러스터의 기능인 부하 분산(Load Balance)과 장애 극복(Failover)을 위한 설정으로 클러스터 통신, 세션 서버, Timer Service, JMS 리소스에 대해 설정하고, 데이터소스를 등록 및 제거할 수 있다.

참고

클러스터 설정 중 서버의 재시작이 필요한 항목을 변경한 경우에는 클러스터 전체를 재시작하는 것을 권장한다.

미리 설정된 설정들을 가지고 자동으로 서버를 생성하여 클러스터를 구성할 수도 있다. 이것을 위해서는 서버 템플릿을 미리 작성을하고, 클러스터 생성 화면에서 'Dynamic Servers' 항목을 선택하여 클러스터를 생성해야 한다. Dynamic Servers로 설정한 클러스터의 설정을 변경하려면 클러스터 설정 또는 서버 템플릿을 수정해야 한다. 서버 템플릿에 대한 자세한 설명은 JEUS Server 안내서”의 “2.4. Server Template 설정”을 참고한다.

서버 템플릿을 생성하는 방법은 WebAdmin과 콘솔에서 생성하는 방법 두 가지가 있다.

  • WebAdmin 사용

    1. WebAdmin의 [Servers] 메뉴를 서버와 템플릿 목록 화면으로 이동한다.

    2. 'Server Templates' 항목 오른쪽에 있는 [add] 버튼을 클릭해서 템플릿 추가 화면으로 이동한다.

    3. 'Name' 항목에 템플릿 이름과 각 항목을 설정하고 오른쪽 상단의 [확인] 버튼을 클릭해서 설정을 저장한다.

    4. [Servers] 메뉴에서 새로 추가된 템플릿을 확인할 수 있다.

  • 콘솔 툴 사용

    서버 템플릿의 자세한 추가는 add-server-template 명령어를 사용해서 템플릿의 이름을 주고, 각종 설정을 옵션으로 주어 생성한다. 자세한 설명은 JEUS Reference Book”의 “4.2.4.9. add-server-template” 항목을 참고한다.

Dynamic Servers로 생성된 클러스터의 설정은 클러스터 설정이나 템플릿 설정을 변경하는 것으로만 가능하다. 개별 서버의 설정은 불가능하며 그 경우에는 개별 서버 추가 방식을 사용하여 만든 클러스터를 사용해야 한다. 각 서버들의 이름은 'Server Name Prefix'로 지정된 이름 뒤에 번호가 붙어서 설정된다.

또한 각 서버들의 listen address는 nodes.xml 문서에 기록된 각각의 node 정보를 기반으로 설정된다. 'Node Names'에 Dynamic Servers를 위치시킬 노드를 지정할 때에는 nodes.xml의 설정 정보를 잘 확인하고 지정하여야 한다. 노드 배정은 기본적으로 Round Robin으로 이루어진다.

서버의 추가, 제거를 위해서는 클러스터 설정에서 'Server Count'의 숫자를 변경하여 추가, 제거가 가능하며 서버 개별 추가, 삭제는 불가능하다. 이렇게 생성된 서버들의 세부 설정은 개별적으로 수정이 불가능하며 항상 서버 템플릿의 설정 정보와 동일하도록 유지된다.

부하의 변화에 따라 클러스터에 존재하는 서버를 추가, 삭제해서 개수를 조정할 수 있다.

해당 서비스의 부하가 증가하여 클러스터 사이즈를 늘리기 위해 클러스터에 서버를 추가할 수 있다. 추가할 서버는 기존의 서버와 동일한 서비스를 수행할 것이므로 기존 서버들의 설정과 동일하게 설정하는 것을 권장한다.

본 절에서는 WebAdmin과 콘솔 툴(jeusadmin)을 사용하여 클러스터에 서버를 추가하는 방법에 대해 설명한다.

WebAdmin 사용

WebAdmin을 사용하여 클러스터에 서버를 추가하는 방법은 다음과 같다.

  1. WebAdmin의 왼쪽 메뉴에서 [Servers]를 선택하면 서버 목록 조회 화면으로 이동한다.

  2. [LOCK & EDIT] 버튼을 클릭해서 설정변경 모드로 전환한다. WebAdmin의 설정변경 모드에 대한 자세한 설명은 JEUS WebAdmin 안내서”의 “2.3.2. 메뉴 영역”을 참고한다.

  3. 클러스터에 서버를 추가하는 방법은 서버를 직접 생성, 선택하여 클러스터를 생성했을 경우와 Dynamic Servers를 이용하여 클러스터를 생성했을 경우가 다르다.

    • 서버를 직접 생성, 선택하여 클러스터를 생성한 경우

      다음은 클러스터에 추가할 서버를 생성하고 클러스터에 추가하는 방법이다. 서버에 원하는 설정을 적용하여 생성한 이후에 만들어진 서버를 목록에서 선택하여 클러스터에 추가한다.

      1. Servers 화면에서 [ADD] 버튼을 클릭하면 [Basic] > [Basic Info] 메뉴로 이동한다. Server 화면에서 추가할 서버의 정보를 입력한 후 [확인] 버튼을 클릭힌다.

      2. 서버 추가가 완료되면 해당 서버를 클러스터에 추가해야 한다. WebAdmin의 [Clusters] 메뉴를 선택하면 클러스터 조회 목록 화면으로 이동한다. 조회된 클러스터 목록에서 생성한 서버를 추가할 클러스터를 선택한다.

      3. Cluster 화면'Servers' 항목에서 생성한 서버를 체크하고 [확인] 버튼을 클릭한다.

    • Dynamic Servers 설정을 이용하여 클러스터를 생성한 경우

      다음은 클러스터를 Dynamic Servers를 이용하여 생성한 경우이다. 이 경우에는 클러스터 설정 항목에서 서버의 추가가 가능하다. 클러스터 설정을 바꾸는 것만으로 자동으로 생성된 서버가 추가된다.

      1. 클러스터 설정 변경을 위해 WebAdmin의 [Clusters] 메뉴를 선택하면 클러스터 조회 목록 화면으로 이동한다.

      2. Cluster 화면'Dynamic Servers' 항목에서 'Server Count'에 현재 설정되어 있는 서버보다 더 큰 숫자를 입력하고 [확인] 버튼을 클릭한다. 늘어난 숫자만큼의 서버가 더 생성된다.

  4. 클러스터의 설정이 변경되었다는 메시지를 확인한 후 [Activate Chages] 버튼을 클릭하여 변경된 설정을 반영한다.

  5. 서버가 생성되고 클러스터에 서버가 추가가 반영되었다는 결과 메시지를 확인할 수 있다.

  6. 추가한 서버를 시작하기 위해 WebAdmin 화면 왼쪽의 [Clusters] 메뉴를 선택하고, 조회된 클러스터 목록에서 클러스터의 [start] 버튼을 클릭한다.

  7. WebAdmin의 [Monitoring] > [Servers] 메뉴를 선택해서 이동한 화면에서 서버가 클러스터로 묶여 잘 운영되고 있음을 확인할 수 있다.

콘솔 툴 사용

콘솔 툴(jeusadmin)을 사용하여 클러스터에 서버를 추가할 수 있다. 서버 직접 선택으로 클러스터를 만든 경우와 Dynamic Servers 항목을 이용하여 자동 생성한 서버들로 클러스터를 만든 경우가 있다.

클러스터의 크기를 줄이기 위해 클러스터에 포함된 서버를 삭제할 수 있다. 이때에는 삭제할 서버를 종료하여, 진행 중이던 서비스가 모두 완료된 것을 확인한 후 클러스터에서 삭제한다. 본 절에서는 WebAdmin과 콘솔 툴(jeusadmin)을 사용하여 클러스터에서 서버를 삭제하는 방법에 대해 설명한다.

WebAdmin 사용

WebAdmin을 사용하여 클러스터에서 서버를 삭제하는 방법은 다음과 같다.

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

  2. 클러스터 변경을 위해서는 [LOCK & EDIT] 버튼을 클릭하여 설정변경 모드로 전환한다. WebAdmin의 설정변경 모드에 대한 자세한 설명은 JEUS WebAdmin 안내서”의 “2.3.2. 메뉴 영역”을 참고한다.

  3. WebAdmin의 [Clusters] 메뉴를 선택하면 클러스터 목록 조회 화면으로 이동한다. 조회된 클러스터 목록에서 삭제하려는 서버가 포함된 클러스터를 선택한다.

  4. 클러스터에 서버를 제거하는 방법은 서버를 직접 선택하여 클러스터를 생성했을 경우와 Dynamic Servers를 이용하여 클러스터를 생성했을 경우가 다르다.

    • 서버를 선택하여 클러스터를 생성한 경우

      다음은 서버를 직접 생성하여 클러스터를 생성했을 경우의 서버 제거 방법이다. 서버 목록에서 서버를 선택 해제하여 클러스터에서 제거한다.

      1. 클러스터 설정 변경을 위해 WebAdmin의 [Clusters] 메뉴를 선택하면 클러스터 조회 목록 화면으로 이동한다.

      2. Cluster 화면'Servers' 항목에서 서버의 체크를 해제한 후 [확인] 버튼을 클릭한다.

      3. 클러스터에서 삭제한 서버를 단독 서버로 사용할 계획이 없다면 삭제한다. WebAdmin 화면 왼쪽의 [Servers] 메뉴를 선택하고, 조회된 서버 목록에서 [DEL] 버튼을 클릭한다.

    • Dynamic Servers 설정을 이용하여 클러스터를 생성한 경우

      다음은 클러스터를 Dynamic Servers를 이용하여 생성한 경우이다. 이 경우에는 클러스터 설정 항목에서 서버의 제거가 가능하다. 클러스터 설정을 바꾸는 것만으로 자동으로 생성된 서버가 제거된다.

      1. 클러스터 설정 변경을 위해 WebAdmin의 [Clusters] 메뉴를 선택하면 클러스터 조회 목록 화면으로 이동한다.

      2. Cluster 화면'Dynamic Servers' 항목에서 'Server Count'에 현재 설정되어 있는 서버보다 더 작은 숫자를 입력하고 [확인] 버튼을 클릭한다. 줄어든 숫자만큼 서버가 제거된다.

  5. 클러스터 설정 변경 완료 메시지 후에 [Activate Changes] 버튼을 클릭하여 변경 내용을 반영한다.

  6. 서버를 클러스터에서 삭제한 것과 단독 서버로서 삭제한 것이 반영되었다는 결과 메시지를 확인할 수 있다.

콘솔 툴 사용

콘솔 툴(jeusadmin)을 사용하여 클러스터에 서버를 삭제할 수 있다. 위와 마찬가지로 서버 직접 선택으로 클러스터를 만든 경우와 Dynamic Servers 항목을 이용하여 자동 생성한 서버들로 클러스터를 만든 경우가 다르다.

해당 서비스를 더 이상 사용할 필요가 없을 경우에는 클러스터를 삭제할 수 있다. 클러스터를 삭제할 때에는 삭제할 클러스터를 종료하여 진행 중이던 서비스의 완료를 확인한 후 삭제해야 한다. 본 절에서는 WebAdmin과 jeusadmin을 사용하여 클러스터를 삭제하는 방법에 대해 설명한다.

WebAdmin 사용

WebAdmin을 사용하여 클러스터를 삭제하는 방법은 다음과 같다.

  1. 클러스터 삭제를 위해서는 우선 [LOCK & EDIT] 버튼을 클릭하여 설정변경 모드로 전환해야 한다. WebAdmin의 설정변경 모드에 대한 자세한 설명은 JEUS WebAdmin 안내서”의 “2.3.2. 메뉴 영역”을 참고한다.

  2. WebAdmin 화면 왼쪽의 [Clusters] 메뉴를 선택하면 클러스터 목록 조회 화면으로 이동한다. 조회된 클러스터 목록에서 삭제할 클러스터의 [stop] 버튼을 클릭하여 클러스터를 종료한다.

  3. 삭제할 클러스터가 종료되면 [DEL] 버튼을 클릭하여 삭제한다.

    • 삭제한 클러스터에 포함되었던 서버들을 단독 서버로 사용하지 않는 경우 삭제하려면 WebAdmin 화면의 왼쪽 메뉴에서 [Servers]를 선택해서 서버 목록 조회 화면으로 이동한다. 조회된 서버 목록에서 삭제한 클러스터에 포함되어 있던 서버들의 [DEL] 버튼을 클릭한다.

    • Dynamic Servers 설정으로 만든 클러스터의 경우 클러스터를 삭제하면 서버들도 자동으로 삭제된다.

  4. 클러스터에 포함되었던 서버들이 성공적으로 삭제되었다는 메시지를 확인한 후 [Activate Changes] 버튼을 클릭하여 변경된 내용을 반영한다.

  5. 클러스터(cluster1)을 삭제한 것과 클러스터에 포함되었던 서버를 삭제한 것이 반영되었다는 결과 메시지를 확인할 수 있다.

콘솔 툴 사용

콘솔 툴(jeusadmin)을 사용하여 클러스터를 삭제하는 방법은 다음과 같다.

  1. stop-cluster 명령어를 사용하여 삭제할 클러스터를 종료한다. 본 예제에서는 server1과 server2로 구성된 cluster1이라는 클러스터를 삭제한다. stop-cluster 명령어에 대한 자세한 사용법은 JEUS Reference Book”의 “4.2.3.44. stop-cluster”를 참고한다.

    [DAS]domain1.adminServer>stop-cluster cluster1
    The cluster [cluster1] was successfully stopped.

    serverinfo 명령어를 사용하여 종료한 클러스터(cluster1)에 포함된 서버(server1, server2)의 상태가 SHUTDOWN 상태임을 확인할 수 있다.

    [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 | 2016-08-23     | false  | base-192.168| jms,        |
    |rver(*) |(00:09:48|     |       |     |(화) 오후        |        |.34.3:9736   | ejb, web    |
    |        |)        |     |       |     |03:53:28 KST    |        | http-server-|             |
    |        |         |     |       |     |                |        |0.0.0.0:8088 |             |
    |        |         |     |       |     |                |        |jms-internal-|             |
    |        |         |     |       |     |                |        |0.0.0.0:9741 |             |
    +--------+---------+-----+-------+-----+----------------+--------+-------------+-------------+
    | server1| SHUTDOWN|node1| N/A   | clus| 2016-08-23     | N/A    | N/A         | N/A         |
    |        |(00:00:11|     |       |ter1 |(화) 오후        |        |             |             |
    |        |)        |     |       |     |04:03:05 KST    |        |             |             |
    +--------+---------+-----+-------+-----+----------------+--------+-------------+-------------+
    | server2| SHUTDOWN|node2| N/A   | clus| 2016-08-23     | N/A    | N/A         | N/A         |
    |        |(00:00:11|     |       |ter1 |(화) 오후        |        |             |             |
    |        |)        |     |       |     |04:03:05 KST    |        |             |             |
    +--------+---------+-----+-------+-----+----------------+--------+-------------+-------------+
    ==============================================================================================
  2. 종료한 클러스터를 다음과 같이 remove-cluster 명령어를 사용해서 삭제한다. remove-cluster 명령어에 대한 자세한 사용법은 JEUS Reference Book”의 “4.2.4.34. remove-cluster”를 참고한다.

    [DAS]domain1.adminServer>remove-cluster cluster1
    Successfully performed the REMOVE operation for cluster (cluster1).
    Check the results using "list-clusters or remove-cluster"
  3. 클러스터를 해제한 이후 사용하지 않는 서버는 각 상황에 따라 다른 처리가 필요하다.