내용 목차
본 장에서는 도메인 내의 클러스터에 대해 정의하고 클러스터의 구성과 도메인과의 관계에 대해 설명한다. 또한 클러스터를 생성, 설정, 변경 및 삭제하는 방법에 대해 설명한다.
클러스터는 서비스의 확장성을 위한 부하 분산(Load Balancing)과 안정성을 위한 장애 극복(Failover) 기능을 제공하기 위해 동일한 서비스를 수행하는 여러 개 서버들의 집합이다.
같은 서비스를 수행하는 여러 개의 서버가 부하를 나눠서 처리하여 빠른 서비스가 가능하며, 부하의 정도에 따라 클러스터에 동적으로 서버를 추가 또는 삭제할 수 있어 부하 조절이 가능하다. 또한 몇 대의 서버가 서비스를 수행하지 못하는 상황에서도 같은 서비스를 하는 나머지 서버들이 서비스를 처리해주므로 사용자에게 서비스 중단이 노출되지 않는다. 즉, 많은 부하를 무리 없이 소화하고 서비스 불가능 상태가 되지 않는 하나의 서버라고 할 수 있다.
도메인은 관련된 서비스를 수행하는 서버 또는 클러스터들의 집합이다. 클러스터는 같은 서비스를 수행하는 여러 개 서버의 집합으로 하나의 도메인에 여러 개 존재할 수 있다. 클러스터를 구성하는 서버들은 한 머신에 모두 존재할 수도 있고, 각각 다른 머신에 존재할 수도 있다. 일반적으로 머신에 문제가 발생하여 서비스가 안될 경우를 고려하여 다른 머신에 위치한 서버들로 클러스터를 구성한다.
하나의 DAS는 단 하나의 도메인을 관리하므로, 도메인 내에 여러 개의 클러스터가 있다면 각 클러스터도 동일한 DAS의 관리를 받는다.
클러스터는 도메인 내에서 같은 서비스를 수행하는 MS들로 구성된다. 보통 여러 머신에 분산되어 있다. 이렇게 구성된 클러스터는 다음과 같은 기능을 갖는다.
과부하로 인한 서비스 중단을 방지하고 응답 속도를 향상하기 위해 여러 서버 간에 수행해야 할 서비스를 분배하는 기능이다.
동일한 서비스를 수행할 수 있는 환경을 구성해야 하고, 서로의 위치와 상태를 알고 있어야 한다.
하나의 서버가 비정상 종료된 경우에 그 서버가 수행하고 있던 서비스를 다른 서버가 대신 수행하는 것을 의미한다.
비정상 종료한 서버 대신 서비스를 수행하는 서버는 비정상 종료된 서버와 같은 서비스를 수행할 수 있어야 하고, 비정상 종료된 서버를 감지할 수 있어야 한다. 또한, 비정상 종료된 서버의 서비스 진행 상태를 알아야 한다.
JEUS에서는 이러한 기능을 위해 클러스터 내의 모든 서버에 같은 애플리케이션을 deploy하고, 같은 리소스를 사용하고, 같은 서비스를 등록할 것을 권장한다. Multicast를 사용하여 클러스터 내의 서버들 간에 서로의 위치와 상태를 공유하고, 클러스터 가능한 서비스들의 장애 극복을 위해 서비스의 진행 상태 정보를 서버들 간에 공유한다. 또한 리소스의 효율을 높일 수 있도록 부하에 따라 클러스터에 서버의 추가 및 삭제가 가능하다.
모든 서비스에 대해 클러스터가 가능한 것은 아니다. 클러스터가 가능한 서비스는 다음과 같다.
서비스 | 설명 |
---|---|
웹 엔진은 웹 서버에 의한 웹 애플리케이션 클러스터링과 HTTP 세션 클러스터링을 지원한다. 웹 서버에 의한 웹 애플리케이션 클러스터링에 대한 자세한 내용은 “JEUS Web Engine 안내서”의 “2.4. 부하 분산을 위한 웹 서버 설정”을 참고하고, HTTP 세션 클러스터링에 대한 자세한 내용은 “JEUS 세션 관리 안내서”의 “제2장 분산 세션 서버”를 참고한다. | |
EJB | EJB 엔진에서는 세션, Message Driven, Entity Bean과 Timer Service에서 클러스터링을 지원한다. EJB 엔진에서 제공하는 클러스터링에 대한 자세한 내용은 “JEUS EJB 안내서”의 “제6장 EJB 클러스터링”을 참고한다. |
JMS | JMS에서는 Connection Factory와 Destination, Durable Subscriber의 클러스터링을 지원한다. JMS에서 제공하는 클러스터링에 대한 자세한 내용은 “JEUS MQ 안내서”의 “제4장 JEUS MQ 클러스터링”을 참고한다. |
클러스터가 가능한 서비스들에 한해서 클러스터를 구성할 때에는 다음의 제약사항을 고려해야 한다.
클러스터로 구성된 모든 서버는 같은 버전의 JEUS를 사용해야 한다.
각 서버는 단 하나의 클러스터에만 포함되어야 한다.
도메인 사이에는 어떤 리소스도 공유가 불가능하기 때문에 클러스터로 구성된 모든 서버는 같은 도메인에 포함되어야 한다.
일반적으로 도메인을 구성할 때 서비스의 종류와 중요도 등을 고려하여 클러스터를 생성한다. 클러스터 생성 방법은 “2.2. 도메인 구성”의 "클러스터 추가" 부분을 참고한다.
클러스터 설정은 크게 서버 공통 설정과 클러스터 설정 2가지로 구분된다.
서버 공통 설정은 클러스터 내의 모든 서버가 동일한 서비스를 수행하기 위한 설정으로 클러스터뿐만 아니라 단독 서버를 생성할 경우에도 필요한 설정이다.
서버 공통 설정에 대한 자세한 내용은 “JEUS Server 안내서”의 “제2장 JEUS 설정”을 참고한다.
클러스터 설정은 클러스터의 기능인 부하 분산(Load Balance)과 장애 극복(Failover)을 위한 설정으로 클러스터 통신, 세션 서버, Timer Service, JMS 리소스에 대해 설정하고, 데이터소스를 등록 및 제거할 수 있다.
클러스터 설정 중 서버의 재시작이 필요한 항목을 변경한 경우에는 클러스터 전체를 재시작하는 것을 권장한다.
클러스터링 환경을 전제로 운영되는 분산식 세션 서버는 부하 분산과 장애 극복의 2가지 기능을 모두 가지고 있다.
내부적으로 분산식 세션 서버를 사용할지에 대한 설정은 별도로 존재하지 않으며 클러스터링에 참여하면, 클러스터링에 참여하는 서버들 간에 자동적으로 분산식 세션 서버가 운영된다.
분산식 세션 서버에 대한 자세한 설명은 “JEUS 세션 관리 안내서”의 “2.2. 기본 개념”을 참고하고, 세부 설정 및 각 항목들에 대한 설명은 “JEUS 세션 관리 안내서”의 “2.9. 세션 서버 설정”을 참고한다.
클러스터 환경에서 Timer Service를 설정하고 싶은 경우에 사용한다. Timer Service 설정에 대한 자세한 내용은 “JEUS EJB 안내서”의 “제10장 EJB Timer Service”를 참고한다.
클러스터 내의 Destination과 Durable Subscriber를 설정하는 경우에 사용한다. JMS 리소스 설정에 대한 자세한 내용은 “JEUS MQ 안내서”의 “4.3.1. 서버 설정”을 참고한다.
클러스터에 등록된 데이터소스는 클러스터에 속한 모든 서버에서 사용될 수 있으며, 데이터소스 등록은 동적으로 처리가 가능하다. 또한, 클러스터에 등록된 데이터소스의 제거 역시 동적으로 처리가 가능하다. 클러스터로부터 제거된 데이터소스는 클러스터에 속한 서버들에서 더 이상 사용이 불가능하다.
클러스터에 등록된 데이터소스의 사용과 클러스터에 데이터소스를 등록하고 제거하는 방법 등에 대한 자세한 내용은 “JEUS Server 안내서”의 “6.6. 데이터소스 관련 설정 동적 변경”을 참고한다.
부하의 변화에 따라 클러스터에 존재하는 서버를 추가, 삭제해서 개수를 조정할 수 있다.
해당 서비스의 부하가 증가하여 클러스터 사이즈를 늘리기 위해 클러스터에 서버를 추가할 수 있다. 추가할 서버는 기존의 서버와 동일한 서비스를 수행할 것이므로 기존 서버들의 설정과 동일하게 설정하는 것을 권장한다.
본 절에서는 WebAdmin과 jeusadmin을 사용하여 클러스터에 서버를 추가하는 방법에 대해 설명한다.
WebAdmin을 사용하여 클러스터에 서버를 추가하는 방법은 다음과 같다.
WebAdmin의 왼쪽 메뉴에서 [Servers]를 선택하면 서버 목록 조회 화면으로 이동한다.
[LOCK & EDIT] 버튼을 클릭해서 설정변경 모드로 전환한다. WebAdmin의 설정변경 모드에 대한 자세한 설명은 “JEUS WebAdmin 안내서”의 “2.3.2. 메뉴 영역”을 참고한다.
Servers 화면에서 [ADD] 버튼을 클릭하면 [Basic] > [Basic Info] 메뉴로 이동한다. Server 화면에서 추가할 서버의 정보를 입력한 후 [확인] 버튼을 클릭힌다.
서버 추가가 완료되면 해당 서버를 클러스터에 추가한다. WebAdmin의 [Clusters] 메뉴를 선택하면 클러스터 조회 목록 화면으로 이동한다. 조회된 클러스터 목록에서 생성한 서버를 추가할 클러스터를 선택한다.
Cluster 화면의 'Servers' 항목에서 생성한 서버를 체크하고 [확인] 버튼을 클릭한다.
클러스터에 서버의 추가가 완료되었다는 메시지를 확인한 후 [Activate Chages] 버튼을 클릭하여 변경된 설정을 반영한다.
서버가 생성되고 클러스터에 서버가 추가가 반영되었다는 결과 메시지를 확인할 수 있다.
추가한 서버를 시작하기 위해 WebAdmin 화면 왼쪽의 [Clusters] 메뉴를 선택하고, 조회된 클러스터 목록에서 클러스터의 [start] 버튼을 클릭한다.
WebAdmin의 [Monitoring] > [Servers] 메뉴를 선택해서 이동한 화면에서 서버가 클러스터로 묶여 잘 운영되고 있음을 확인할 수 있다.
콘솔 툴(jeusadmin)을 사용하여 클러스터에 서버를 추가할 수 있다.
add-server 명령어를 사용하여 클러스터에 추가할 서버(server2)를 생성한다.
add-server 명령어에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.4.7. add-server”를 참고한다.
[DAS]domain1.adminServer>add-server server2 -node node2 -addr 192.168.34.2 -port 9836
Successfully performed the ADD operatioin for server (server2).
Check the results using "list-servers or add-server"
add-servers-to-cluster 명령어를 사용하여 클러스터(cluster1)에 생성한 서버(server2)를 추가한다.
add-servers-to-cluster 명령어에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.4.8. add-servers-to-cluster”를 참고한다.
[DAS]domain1.adminServer>add-servers-to-cluster cluster1 -servers server2
Successfully performed the ADD operation for The server list for cluster(cluster1)..
Check the results using "list-clusters cluster1 or add-servers-to-cluster cluster1"
start-cluster 명령어를 사용하여 추가한 서버를 시작한다. start-cluster 명령어에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.3.45. start-cluster”를 참고한다.
[DAS]domain1.adminServer>start-cluster cluster1
The cluster [cluster1] has been successfully started.
serverinfo 명령어를 사용하여 서버(server1, server2)가 클러스터(cluster1)에 묶여 잘 운영되고 있음을 확인할 수 있다.
[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(*) |(82 sec) | | | |10:41:25 KST | |.34.3:9736 | ejb, web |
| | | | | |2013 | | http-server-| |
| | | | | | | |0.0.0.0:8088 | |
| | | | | | | |jms-internal-| |
| | | | | | | |0.0.0.0:9741 | |
+--------+---------+-----+-------+-----+----------------+--------+-------------+-------------+
| server1| RUNNING |node1| 6424 | clus| Fri Mar 22 | false | base-192.168| jms, |
| |(30 sec) | | |ter1 |10:42:17 KST | |.34.1:9836 | ejb, web |
| | | | | |2013 | | | |
--------+---------+-----+-------+-----+-----------------+--------+-------------+-------------+
| server2| RUNNING |node2| 3012 | clus| Fri Mar 22 | false | base-192.168| jms, |
| |(1 sec) | | |ter1 |10:42:39 KST | |.34.2:9936 | ejb, web |
| | | | | |2013 | | | |
+--------+---------+-----+-------+-----+----------------+--------+-------------+-------------+
==============================================================================================
클러스터의 사이즈를 줄이기 위해 클러스터에 포함된 서버를 삭제할 수 있다. 이때에는 삭제할 서버를 종료하여, 진행 중이던 서비스가 모두 완료된 것을 확인한 후 클러스터에서 삭제한다.
본 절에서는 WebAdmin과 jeusadmin을 사용하여 클러스터에서 서버를 삭제하는 방법에 대해 설명한다.
WebAdmin을 사용하여 클러스터에서 서버를 삭제하는 방법은 다음과 같다.
WebAdmin 화면 왼쪽의 [Servers] 메뉴를 선택하면 서버 목록 조회 화면으로 이동한다. 조회된 서버 목록에서 삭제할 서버의 [stop] 버튼을 클릭하여 서버를 종료한다.
클러스터 변경을 위해서는 [LOCK & EDIT] 버튼을 클릭하여 설정변경 모드로 전환한다. WebAdmin의 설정변경 모드에 대한 자세한 설명은 “JEUS WebAdmin 안내서”의 “2.3.2. 메뉴 영역”을 참고한다.
WebAdmin의 [Clusters] 메뉴를 선택하면 클러스터 목록 조회 화면으로 이동한다. 조회된 클러스터 목록에서 삭제하려는 서버가 포함된 클러스터를 선택한다.
Cluster 화면의 'Servers' 항목에서 서버의 체크를 해제한 후 [확인] 버튼을 클릭한다.
클러스터에서 삭제한 서버를 단독 서버로 사용할 계획이 없다면 삭제한다. WebAdmin 화면 왼쪽의 [Servers] 메뉴를 선택하고, 조회된 서버 목록에서 [DEL] 버튼을 클릭한다.
서버의 삭제 완료 메시지를 확인한 후 [Activate Changes] 버튼을 클릭하여 변경 내용을 반영한다.
서버를 클러스터에서 삭제한 것과 단독 서버로서 삭제한 것이 반영되었다는 결과 메시지를 확인할 수 있다.
콘솔 툴(jeusadmin)을 사용하여 클러스터에서 서버를 삭제하는 방법은 다음과 같다.
stop-server 명령어를 사용하여 삭제할 서버(server2)를 종료한다. stop-server 명령어에대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.3.50. stop-server”를 참고한다.
[DAS]domain1.adminServer>stop-server server2
Server [server2] was successfully stopped.
remove-servers-from-cluster 명령어를 사용하여 삭제할 서버(server2)가 포함된 클러스터(cluster1)에서 서버를 삭제한다. remove-servers-from-cluster 명령어에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.4.28. remove-servers-from-cluster”를 참고한다.
[DAS]domain1.adminServer>remove-servers-from-cluster cluster1 -servers server2
Successfully performed the REMOVE operation for The server list for cluster(cluster1)..
Check the results using "list-clusters cluster1 or remove-servers-from-cluster cluster1"
클러스터에서 삭제한 서버(server2)를 단독 서버로 사용할 계획이 없다면 remove-server 명령어를 사용하여 완전히 삭제한다. remove-server 명령어에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.4.27. remove-server”를 참고한다.
[DAS]domain1.adminServer>remove-server server2
Successfully performed the REMOVE operation for server (server2).
Check the results using "list-servers or remove-server"
해당 서비스를 더 이상 사용할 필요가 없을 경우에는 클러스터를 삭제할 수 있다. 클러스터를 삭제할 때에는 삭제할 클러스터를 종료하여 진행 중이던 서비스의 완료를 확인한 후 삭제해야 한다.
본 절에서는 WebAdmin과 jeusadmin을 사용하여 클러스터를 삭제하는 방법에 대해 설명한다.
WebAdmin을 사용하여 클러스터를 삭제하는 방법은 다음과 같다.
클러스터 삭제를 위해서는 우선 [LOCK & EDIT] 버튼을 클릭하여 설정변경 모드로 전환해야 한다. WebAdmin의 설정변경 모드에 대한 자세한 설명은 “JEUS WebAdmin 안내서”의 “2.3.2. 메뉴 영역”을 참고한다.
WebAdmin 화면 왼쪽의 [Clusters] 메뉴를 선택하면 클러스터 목록 조회 화면으로 이동한다. 조회된 클러스터 목록에서 삭제할 클러스터의 [stop] 버튼을 클릭하여 클러스터를 종료한다.
삭제할 클러스터가 종료되면 [DEL] 버튼을 클릭하여 삭제한다.
삭제한 클러스터에 포함되었던 서버들을 단독 서버로 사용하지 않는 경우 삭제한다.
WebAdmin 화면의 왼쪽 메뉴에서 [Servers]를 선택하면 서버 목록 조회 화면으로 이동한다. 조회된 서버 목록에서 삭제한 클러스터에 포함되어 있던 서버들의 [DEL] 버튼을 클릭한다.
클러스터에 포함되었던 서버들이 성공적으로 삭제되었다는 메시지를 확인한 후 [Activate Changes] 버튼을 클릭하여 변경된 내용을 반영한다.
클러스터(cluster1)을 삭제한 것과 클러스터에 포함되었던 서버를 삭제한 것이 반영되었다는 결과 메시지를 확인할 수 있다.
콘솔 툴(jeusadmin)을 사용하여 클러스터를 삭제하는 방법은 다음과 같다.
stop-cluster 명령어를 사용하여 삭제할 클러스터를 종료한다. 본 예제에서는 server1과 server2로 구성된 cluster1이라는 클러스터를 삭제한다. stop-cluster 명령어에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.3.48. 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 | Fri Mar 22 | false | base-192.168| jms, |
|rver(*) |(92 sec) | | | |10:41:25 KST | |.34.3:9736 | ejb, web |
| | | | | |2013 | | http-server-| |
| | | | | | | |0.0.0.0:8088 | |
| | | | | | | |jms-internal-| |
| | | | | | | |0.0.0.0:9741 | |
+--------+---------+-----+-------+-----+----------------+--------+-------------+-------------+
| server1| SHUTDOWN| N/A | N/A | N/A | Fri Mar 22 | N/A | N/A | N/A |
| |(8 sec) | | | |10:42:17 KST | | | |
| | | | | |2013 | | | |
--------+---------+-----+-------+-----+----------------+--------+--------------+-------------+
| server2| SHUTDOWN| N/A | N/A | N/A | Fri Mar 22 | N/A | N/A | N/A |
| |(8 sec) | | | |10:42:39 KST | | | |
| | | | | |2013 | | | |
+--------+---------+-----+-------+-----+----------------+--------+-------------+-------------+
==============================================================================================
종료한 클러스터를 다음과 같이 remove-cluster 명령어를 사용해서 삭제한다. remove-cluster 명령어에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.4.21. 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"
삭제한 클러스터에 포함되어 있던 서버들을 단독 서버로 사용할 계획이 없다면 삭제한다. remove-server 명령어를 사용하여 포함되어 있던 서버(server1, server2)를 삭제한다. remove-server 명령어에 대한 자세한 사용법은 “JEUS Reference Book”의 “4.2.4.27. remove-server”를 참고한다.
[DAS]domain1.adminServer>remove-server server1 Successfully performed the REMOVE operation for server (server1). Check the results using "list-servers or remove-server" [DAS]domain1.adminServer>remove-server server2 Successfully performed the REMOVE operation for server (server2). Check the results using "list-servers or remove-server"