소개

본 장에서는 도메인의 개념과 구성 요소에 대해 설명한다.

1. 기본 개념

도메인(Domain)은 관련 있는 서버들의 그룹으로 기본 관리 단위이다. 하나의 도메인은 비즈니스에 따라 여러 개의 서버와 클러스터로 구성된다.

각 도메인마다 서비스의 종류, 서버의 위치, 보안 정책들이 모두 다를 수 있다. 이에 따라 각 도메인은 하나의 설정 파일을 가지고, 여러 도메인 사이에 설정을 공유할 수 없다. 즉, 하나의 도메인 내에서만 보안 설정, 필요한 애플리케이션 및 리소스 등이 공유되는 점을 고려하여 도메인을 구성해야 한다.

도메인을 구성할 때 고려해야 하는 사항은 다음과 같다.

  • 해당 도메인에 속한 서버들의 역할

    비즈니스 관계가 높은 업무들을 하나의 도메인으로 구성한다.

  • 해당 도메인에 속한 서버들의 물리적 위치

    안정적인 서비스를 위해 같은 업무를 수행하는 서버의 물리적 위치를 적절하게 분배한다.

  • 해당 도메인에 속한 서버들에게 가해지는 부하량

    수행하는 업무의 부하량에 따라 적당량의 서버를 구성한다.

2. JEUS와 도메인 관계

하나의 머신에는 하나의 JEUS(JEUS_HOME)가 필요하고, 하나의 JEUS(JEUS_HOME)에는 한 개 이상의 도메인이 존재할 수 있다. 또한 하나의 도메인은 한 개의 JEUS(JEUS_HOME) 내에 구성될 수도 있고, 여러 개의 머신 즉 여러 개의 JEUS(JEUS_HOME)에 걸쳐 구성될 수도 있다.

한 개의 머신에는 일반적으로 한 개의 JEUS를 설치하기 때문에 JEUS_HOME도 한 개이다. 그러나 하나의 머신에 여러 개의 JEUS를 설치하여 여러 개의 JEUS_HOME이 존재하는 것도 가능하다.

예를 들어 인사 관리 업무 도메인과 주문 관리 도메인을 각 업무의 특성에 따라 머신 3대에 구성할 수 있다. 인사 관리 업무의 경우에는 하나의 머신에서만 서비스하도록 Machine1에 Domain1를 구성하고, 주문 관리 업무의 경우에는 고객의 주문이 장비 결함 등으로 인해 중단되는 경우를 방지하기 위해 3대의 머신에 걸쳐 Domain2을 구성할 수 있다.

다음은 JEUS 도메인의 관계를 나타낸 그림이다.

figure installations and domains
JEUS와 도메인의 관계

3. 구성요소

도메인은 Master Server(MASTER), Managed Server(MS), Cluster로 구성되어 있다.

  • Master Server(MASTER)

    도메인 내에는 Master Server(이하 MASTER)라는 특별한 하나의 서버가 항상 존재한다. MASTER는 도메인 내 서버들 간의 설정과 도메인 내의 모든 애플리케이션 및 리소스를 중앙에서 관리하고, 서버들을 제어 및 모니터링하는 관리 툴과 통신한다.

  • Managed Server(MS)

    실제 서비스를 담당하는 Managed Server(이하 MS)가 도메인 내에는 1개 이상 존재한다. 같은 서비스를 하는 여러 MS를 하나의 클러스터로 구성하거나 서비스별 단독 MS로 도메인을 구성할 수 있다.

  • Cluster

    도메인 내에는 0개 이상의 클러스터들과 1개 이상의 클러스터에 포함되지 않는 서버들이 존재한다.

    클러스터는 확장성과 안정성을 위해 동일한 서비스를 수행하는 서버들의 집합을 의미한다. 서버가 클러스터의 일원이 되면 같은 애플리케이션이 deploy되고 같은 리소스를 사용하게 된다. 클러스터에 대한 자세한 내용은 JEUS 클러스터링을 참고한다.

figure domain components function
도메인의 구성 요소

Machine1에는 MASTER가 위치한다. MASTER는 관리 툴과 통신하여 사용자의 명령을 받아 처리한다.

Machine2와 Machine3에는 각각 MS가 2개씩 존재한다. Managed Server2와 Managed Server4는 Cluster1이라는 하나의 클러스터를 구성하여 애플리케이션과 리소스를 공유하고 같은 서비스를 수행한다. Cluster1에 포함되지 않는 단독 서버인 Managed Server1과 Managed Server3은 각각 애플리케이션과 리소스를 갖는다.

가장 작은 도메인은 하나의 서버로 구성된 도메인으로 하나의 서버가 MASTER와 MS 역할을 하게 된다. 이는 개발 단계에서의 가벼운 테스트를 위한 도메인으로만 사용하고, 운영 환경에서는 관리와 서비스를 분리하여 MASTER는 MS를 관리하는 목적으로만 사용하기를 권장한다.

3.1. Master Server(MASTER)

MASTER는 모든 도메인에 반드시 하나씩 존재해야 하는 서버로 MS들을 중앙에서 관리 및 모니터링한다.

다음은 MASTER의 주요 기능이다.

  • 도메인 전체의 설정을 관리한다.

    • 도메인 내의 모든 MS가 다른 머신에 존재하더라도 동일한 설정으로 구동할 수 있다.

      MASTER가 먼저 구동되어야 MS가 MASTER로부터 설정을 받아 구동될 수 있다. MS가 구동될 때 MASTER의 부재로 동기화되지 않은 설정은 MASTER가 구동될 때 동기화된다.

    • 변경된 설정 사항은 도메인 내의 모든 MS에 반영된다.

      MASTER는 변경된 설정을 검증하여 다른 서버들로 분배하여 도메인 내의 설정을 동기화한다. 그렇기 때문에 설정 변경은 반드시 MASTER를 통해서 진행되어야 하고, MASTER가 운영 중일 때만 가능하다.

    MASTER의 설정 관리에 대한 자세한 설명은 도메인 설정변경을 참고한다.

  • 도메인 전체의 애플리케이션을 관리한다.

    • 도메인 내의 모든 애플리케이션의 상태를 관리한다.

      MASTER에서는 도메인에 존재하는 모든 애플리케이션의 상태를 관리하고, 도메인에서 애플리케이션의 상태가 하나의 상태로 유지될 수 있도록 한다. MS의 애플리케이션 상태가 MASTER에서 관리하고 있는 애플리케이션의 상태와 동일하게 유지될 수 있도록 한다.

    • 도메인 내의 모든 애플리케이션의 파일을 관리한다.

      MASTER에서는 MS가 구동될 때와 MS에서 애플리케이션이 deploy되는 시점에 파일을 동기화한다. MS가 구동될 때 MASTER의 부재로 애플리케이션 파일을 동기화하지 못했다면 MASTER가 구동될 때 MS에서 deploy에 실패한 애플리케이션에 대해 다시 동기화한다.

    • 도메인에 속한 서버나 클러스터에 애플리케이션을 deploy하는 작업을 관리한다.

      도메인에서 애플리케이션을 서비스하기 위해서는 Install Application 명령어를 통해 서비스할 애플리케이션을 MASTER에 설치하거나, MASTER에서 알 수 있는 애플리케이션 저장소(repoeitory)에 위치해야 한다.

      MS에서 애플리케이션을 서비스하기 위해서는 MASTER에 서비스 대상을 주고 애플리케이션 deploy 명령어를 실행해야 한다. deploy 명령어뿐만 아니라 애플리케이션 조회나 제어에 관련된 모든 명령어는 MASTER를 통해서 수행한다. 만약 MASTER가 종료된 상태라면 도메인에서 서비스되는 애플리케이션에 대해 어떤 명령어도 실행할 수 없다.

      MS가 클러스터에 속해 있다면 클러스터 타켓(Cluster Target)으로만 deploy될 수 있다. MASTER에서는 클러스터에 서버가 추가된 경우 해당 서버에서도 이 애플리케이션을 서비스될 수 있도록 deploy의 성공을 보장한다.

    MASTER에서의 애플리케이션 관리에 대한 자세한 설명은 JEUS Applications & Deployment 안내서의 애플리케이션 관리를 참고한다.

  • 도메인 전체를 모니터링 및 제어할 수 있다.

    관리 툴을 통해 도메인 내의 모든 서버, 서비스, 애플리케이션 및 리소스를 한 번에 모니터링 및 제어할 수 있다.

3.2. Managed Server(MS)

MS에는 필요한 리소스가 위치하고, 애플리케이션들이 deploy된다.

MS는 MASTER에 의해 다음과 같이 동작한다.

  • 설정 및 애플리케이션 동기화

    도메인의 전체 설정과 애플리케이션은 MASTER가 관리하기 때문에 MASTER로 연결하여 설정 정보와 해당 MS에 deploy되어야 할 애플리케이션을 전달받는다. 이때 성능을 위하여 MASTER로 받아온 설정 정보와 애플리케이션은 read-only 상태로 로컬에 cache된다. MASTER와 연결된 시점에 로컬의 Cache와 일치하지 않는 파일만을 받아와 Cache를 업데이트하여 MASTER와 동기화한다. 즉, MS에 존재하는 설정이나 애플리케이션을 변경해도 반영되지 않고, MASTER를 통해 변경되어야 모든 서버에 반영된다.

    • 설정의 동기화

      설정의 동기화는 MS가 구동될 때 MS가 MASTER와 연결이 끊어졌다가 재연결된 경우 사용자가 툴을 통해서 명시적으로 도메인 설정을 변경했을 때 일어난다.

    • 애플리케이션의 동기화

      애플리케이션의 동기화는 파일뿐 아니라 애플리케이션의 상태도 함께 전달되기 때문에 MASTER의 애플리케이션 상태가 MS에서도 유지된다. 애플리케이션의 동기화는 MS가 구동될 때 MASTER와 연결이 끊어졌다가 재연결된 경우 일어난다. 애플리케이션 동기화와 관련된 자세한 내용은 애플리케이션 동기화를 참고한다.

  • 클러스터 구성

    부하 분산과 장애 극복을 위해 여러 MS를 묶어 하나의 클러스터를 구성할 수 있다. 클러스터 내의 모든 서버에 같은 리소스와 애플리케이션이 위치하는 것을 권장한다. 클러스터에 대한 자세한 내용은 JEUS 클러스터링을 참고한다.

4. 운영모드와 개발모드

도메인을 운영하는 방법은 다음 중 한 가지로 설정할 수 있다. 모드를 설정하기 위해서는 도메인 설정 파일(domain.xml)을 직접 수정해야 한다.

  • 운영모드(Production mode)

    실제 운영환경에 적합한 모드로, 웹 애플리케이션의 auto-reload나 hot-swap과 같은 기능은 제공하지 않는다. domain.xml의 production-mode 항목을 true로 설정한다.

  • 개발모드(Development mode)

    domain.xml의 production-mode 항목을 false로 설정하면 개발모드로 동작한다.

  1. 애플리케이션 변경이 빈번하게 일어날 수 있는 개발단계에서는 개발모드로, 실 운영계에서는 운영모드로 설정해서 사용할 것을 권장한다.

  2. 설정을 변경하고 난 뒤에는 도메인에 운영 중인 서버를 모두 내리고 재기동해 주어야 한다.

5. 도메인 구성 제약 사항

도메인을 구성할 때 다음과 같은 제약 사항이 존재한다.

  • 하나의 도메인에 반드시 하나의 MASTER가 존재해야 한다.

  • 도메인 사이에는 설정 정보와 리소스를 공유할 수 없다.

  • 도메인 내의 모든 서버는 같은 버전을 사용해야 한다.

  • 도메인 내의 모든 서버와 클러스터의 이름은 각각 유일해야 한다.

  • 설치한 하나의 JEUS 내에 모든 도메인 이름은 유일해야 한다.