서버 장애

다양한 이유로 서버가 비정상 종료될 수 있지만 클러스터를 구성하여 서버가 비정상 종료되는 경우에 서비스의 문제를 최소화 할 수 있다. 본 장에서는 서버가 비정상 종료될 경우의 문제점과 극복 방안에 대해서 설명한다.

1. Master Server(MASTER) 비정상 종료

MASTER가 비정상 종료되어도, Managed Server(MS)의 서비스는 영향을 받지 않고 동작한다. MASTER가 위치한 머신에 장애가 발생하여 MASTER가 비정상 종료된 상태라면, 그 머신에 함께 존재하는 MS들도 영향을 받아 비정상 종료될 가능성이 높다. 그러나 MASTER 자체의 비정상 종료가 도메인 내에 존재하는 MS의 서비스에 영향을 주지는 않는다.

1.1. 비정상 종료될 때 기능 제한

MASTER가 비정상 종료된 경우에는 MASTER의 역할이었던 설정의 변경이나, 애플리케이션의 추가 및 변경 등은 MASTER가 다시 시작될 때까지 기능을 할 수 없다. MASTER가 다시 시작되어 MS로 이벤트를 주면 MS는 다시 MASTER의 관리를 받을 수 있다.

MASTER와 연결이 안 되는 상태에서 MS를 시작하려고 한다면 MASTER의 설정으로 시작될 수 없고, MS가 가지고 있는 로컬 Cache를 사용하게 된다. 즉, 기존에 한 번 이상 MASTER와 연결을 맺은 적이 있어, MASTER로부터 받은 파일을 로컬에 가지고 있는 경우에만 해당된다. 로컬 Cache를 이용하여 MS를 시작한 뒤에 MASTER가 다시 시작되었을 때 MASTER의 파일과 동기화하게 된다. 물론 MS가 MASTER와 같은 머신에 존재하여 도메인 디렉터리를 공유한다면 MASTER가 종료되어 있을 때에도 MASTER와 같은 설정으로 MS를 시작할 수 있다.

1.2. 도메인 백업을 이용한 장애 극복

MASTER가 비정상 종료되어도 서비스에는 지장이 없지만 몇 가지 기능이 제한된다. 따라서 MASTER를 빨리 복구시켜야 하는데, MASTER가 현 상태 그대로 다시 시작할 수 없는 경우가 있다. 예를 들면 머신 자체가 비정상 종료된 경우에는 머신이 복구되기 전까지는 MASTER를 재시작할 수가 없다.

이런 경우를 대비하여 MASTER가 가지고 있는 파일들 즉, MASTER에서 유지해야 하는 설정과 애플리케이션을 평소에 백업해둘 수 있다. 미리 백업해 둔 MASTER의 파일들을 다른 머신에 복사하여 새로운 머신에서 MASTER를 시작할 수 있다. 단, 백업한 애플리케이션을 다른 머신에서 사용하기 위해서는 JEUS_HOME 경로가 기존 머신의 JEUS_HOME과 같아야 한다.

MASTER의 설정 및 애플리케이션을 백업하는 방법은 크게 세 가지를 제공한다.

  • MASTER 부팅 시 도메인 백업 설정을 통한 자동 백업

  • pack-domain 명령어를 통한 명시적 백업

백업 설정을 통한 자동 백업은 MASTER가 기동할 때에 자동으로 백업 파일을 생성한다. 그리고 pack-domain 명령어는 원하는 때에 백업 파일을 만들 수 있는 기능을 한다. 이 경우에 만들어진 파일은 사용자가 관리해야 한다.

도메인 백업 설정을 통한 자동 백업

MASTER가 시작할 때마다 자동으로 MASTER의 설정 및 애플리케이션을 백업한다. 도메인 백업 설정은 WebAdmin이나 콘솔 툴(jeusadmin)을 통하여 설정할 수 있다.

  • WebAdmin 사용

    WebAdmin 메인 화면에서 Master Server를 선택한 후 JEUS Master 화면 상단 메뉴에서 [도메인]을 선택하고 기본 설정 메뉴에서 [Domain]을 클릭하면 도메인 설정 화면이 나타난다. [수정] 버튼을 클릭해서 수정 모드로 변경한 후 고급 선택사항에서 도메인 백업에 대한 설정을 할 수 있다. 사용자는 도메인 백업을 사용할지 여부와 백업될 디렉터리, 저장될 노드를 설정할 수 있다. 노드가 설정된 경우에는 백업될 디렉터리는 해당 노드의 디렉터리를 의미하고, 설정되지 않은 경우에는 로컬 디렉터리를 의미한다. 만약 설정된 노드에 옮길 수 없는 경우에는 domains home에 위치시키게 된다.

  • 콘솔 툴 사용

    다음과 같이 set-domain-backup 명령어를 사용하여 MASTER 시작 시점에 MASTER 백업 파일을 만들 수 있도록 설정할 수 있다.

    [MASTER]domain1.adminServer>set-domain-backup -backupOnBoot true
    Successfully performed the MODIFY operation for Domain Backup Policy.
    Check the results using "set-domain-backup"

    이렇게 백업된 파일은 기본적으로 pack-domain을 통하여 만든 파일과 동일하고, 설정된 node에서 혹은 로컬에 저장된 파일을 이용하여 원하는 node에서 unpack-domain을 통하여 사용할 수 있다.

pack-domain 명령을 통한 명시적 백업
  • MASTER의 설정 및 애플리케이션의 백업

    다음과 같이 pack-domain 명령어를 사용하여 MASTER의 설정 및 애플리케이션을 백업한다.

    offline>pack-domain domain1
    Packing the domain [domain1] configuration completed successfully at the path [JEUS_HOME/domains/domain1_packed.zip].
  • 새로운 머신에 백업한 MASTER의 설정 및 애플리케이션 적용

    다음과 같이 unpack-domain 명령어를 사용하여 백업한 파일의 압축을 푼다. unpack-domain 명령어를 사용할 때 MASTER의 IP, Port, Node 정보를 변경할 수 있다.

    offline>unpack-domain domain1
    The JEUS Master Server listener address is already set to [0.0.0.0]. Do you want to change it? (y/n): y
    Enter the JEUS Master Server base listener address: 0.0.0.0
    The JEUS Master Server listener port is already set to [9736]. Do you want to change it? (y/n): n
    The JEUS Master Server nodename is already set to [node1]. Do you want to change it? (y/n): n
    Unpacking the domain [domain1] configuration completed successfully.

    새로운 머신에서 기존과 같은 설정으로 MASTER가 시작되면, INDEPENDENT 모드로 있던 MS들이 MASTER로부터 설정과 애플리케이션을 동기화하고, MASTER의 관리를 받게 되어 INDEPENDENT 모드에서 해제된다.

pack-domain, unpack-domain 명령어에 대한 자세한 사용 방법은 각각 JEUS Reference 안내서의 pack-domainunpack-domain을 참고한다.

1.3. INDEPENDENT 모드의 Managed Server(MS)

MS의 서비스가 MASTER의 비정상 종료로 인한 영향을 받지 않기 위해 MS는 MASTER의 존재 여부에 의존하지 않고 서비스를 수행한다.

MS의 설정과 애플리케이션의 로컬 Cache는 서버가 시작할 때 MASTER로부터 동기화해서 가지고 있고, 변경될 때마다 MASTER와 동기화한다. 그러나 MS가 시작될 때 MASTER와 연결되지 않은 경우에는 로컬 Cache를 이용하여 시작되는데, 이것을 INDEPENDENT 모드라고 한다. 이 상태에서 MS는 MASTER의 제어를 받을 수 없고, MASTER 또한 해당 MS를 모니터링할 수 없다. 이는 MASTER가 실제로 비정상 종료된 경우와 MASTER의 주소를 잘못 설정했거나 네트워크 관련 오류로 연결에 문제가 발생한 경우가 해당된다.

MASTER가 재시작되어 MS가 이벤트를 받게 되면 다시 MASTER의 관리를 받게 되는 모드로 변경된다.

2. Managed Server(MS)의 비정상 종료

도메인 내에 MS들은 Multicast로 서로의 상태 정보를 주고받기 때문에 비정상 종료된 서버를 감지할 수 있다.