Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

그룹 시작/종료

그룹 내의 모든 리소스들에게 온라인/오프라인 명령을 내리는 것입니다.
그룹을 시작한다는 의미는 그룹에 등록 된 모든 리소스들을 지정 서버에서 시작 시킨다는 의미입니다.
이 때, MCCS이 리소스들을 어떤 순서대로 온라인/오프라인 동작을 시키는지에 관해서는 "5.3 의존성 관리" 편을 참조해 주십시오. 
페일오버 그룹에서는 이미 온라인 되어 있는 노드가 있다면 더 이상 시작 명령을 내릴 수 없습니다. 일부 동작 상태일 때는 해당 노드에서 다시 시작 명령을 내릴 수 있습니다.
종료 명령은 그룹이 온라인 혹은 일부 온라인 되어 있는 노드에서 활성화 됩니다.
온라인 상태인 모든 리소스들을 종료 시키게 되며, 등록된 리소스 중에서 일부를 삭제하거나, 노드를 안전하게 종료/재부팅하고자 할 때에 사용합니다.
다음 화면처럼 왼쪽 트리에서 그룹을 선택하고 "시작" 또는 "종료"에 마우스를 위치시키면 그룹에 속해 있는 활성/비활성 노드들이 나타납니다.
활성화되어 있는 노드에서만 "시작" 또는 "종료" 명령을 내릴 수 있습니다.

[그림] 그룹 시작 화면


[그림] 그룹 종료 화면



그룹 수동 페일오버

장애에 의한 페일오버가 아닌 관리자의 명령으로 서비스를 다른 노드로 옮기는 명령입니다.
모든 자원을 반대편 서버로 옮겨 수행시키게 한 후, 종료된 서버를 재부팅 또는 유지 보수(OS update, 네트워크 관련 작업등) 하고자 할 때에 사용합니다.
이 명령은 서비스하는 노드를 관리자가 선택하여 변경할 수 있습니다.
MCCS 설정을 모두 마친 후에 노드 간의 페일오버가 어떻게 이루어지는지, 페일오버할 때에 타깃 노드에서 이상 없이 온라인 되는지 테스트 해볼 수 있습니다.
이 것을 스위치 오버(Switch over), 스위치(Switch) 명령이라고도 합니다.
이 명령을 내리기 위해서는 그룹이 온라인 또는 일부 동작 중이어야 합니다. 그리고 페일오버 할 대기 노드가 장애 상태가 아니어야 합니다.
다음 화면처럼 왼쪽 트리에서 그룹을 선택하고 "그룹 수동 페일오버"에 마우스를 위치시키면 그룹에 속해 있는 활성/비활성 노드들이 나타납니다.
활성화되어 있는 노드에서만 "그룹 수동 페일오버" 명령을 내릴 수 있습니다.

[그림] 그룹 수동 페일오버 화면


자동 비활성화 해제

자동 비활성화 해제 기능은 정상적인 상황에서는 사용하지 않는 기능입니다.
MCCS 가 구성 된 두 대의 서버는 부팅되어 있고 운영체제의 기능은 정상적으로 동작하는 상태에서 다른 한 서버에서 어떤 이유에서든 MCCS가 구동될 수 없을 경우에 사용합니다.
이 때 구동중인 MCCS 는 다른 서버의 MCCS 와의 통신을 할 수 없으므로 리소스들의 상태 및 정보를 알 수 없기 때문에 리소스들은 비활성화 상태가 됩니다.
이러한 비활성화 된 리소스들은 관리자에 의해서 반드시 확인되어야 하고, 관리자에 의해서 확인된 상황에서 응급으로 구동중인 MCCS 에서 서비스를 시작하기 위해서 이 기능이 사용됩니다.
따라서 이 기능을 사용하는 것은 관리자가 비정상인 상태에서 응급조치로써 MCCS에서 확인되지 않은 리소스를 직접확인하고 구동중인 MCCS 서버에서 리소스를 온라인 할 수 있게 합니다.


그룹 잠금

그룹 잠금 기능은 보통 MCCS에 등록된 리소스 중에서 외부에서 구성변경 같은 처리가 필요할 경우에 사용합니다.
예를 들면 Oracle 혹은 기타 어플리케이션 패치등과 같은 재시작 작업이 필요한 경우에 이를 MCCS가 장애로 판단하여 페일오버 시키지 않도록, 그룹을 잠근 후 패치 작업을 하면 페일오버가 발생하지 않습니다.
그룹에 잠금 설정을 하면, 리소스 혹은 서비스 상태를 변경 시킬 수 있는 명령이 실행되지 않도록 잠금 상태(Locked)로 만듭니다.
잠금 상태가 되면 그룹이나 노드에서 장애가 발생해도 아무 처리를 하지 않고 장애 발생 여부만 알려주게 되며, 페일오버나 오프라인 같은 처리는 하지 않습니다.
잠금 상태에서는 그룹 시작/종료/수동 페일오버와 리소스 시작/종료/종료(하위리소스 포함)/활성화 변경 명령은 허용되지 않지만, 리소스의 추가/삭제/수동 감지, 장애 표시 제거 등의 명령은 가능합니다.
잠금은 "임시 잠금"과 "잠금"이 있으며 Locked와 TLocked 속성 값으로 확인할 수 있습니다. 

[그림] 그룹 잠금 화면

임시 잠금

양 서버의 MCCS 서비스가 종료되면 잠금 상태가 풀립니다.

잠금(영구 잠금)

MCCS 서비스가 종료되어도 잠금 상태가 풀리지 않습니다.



장애 표시 제거

MCCS에서는 장애가 발생하면 해당 그룹과 리소스를 장애로 표시하며  아이콘이 표시됩니다.
관리자의 관련 조치 후에, 다시 정상적인 고가용성 운영 상태로 복귀하고자 할 때에 사용합니다.
그룹에서 장애 표시를 제거하면 그룹 내의 모든 리소스들의 장애 표시가 제거됩니다.
그룹 내에서 특정 자원이 장애 상태가 되면, 아래 화면과 같이 해당하는 그룹과 자원에 장애가 발생되었다는 붉은색 체크 표시가 나타나게 됩니다.
기본적으로 이 체크 표시는 장애 관련 조치 후에 관리자가 수동으로 "장애표시 제거" 명령을 내려줘야 정상 상태로 표시가 됩니다.
장애 표시가 발생한 자원이 속한 서버로는 그룹 페일오버가 불가능 합니다.
다음 화면처럼 왼쪽 트리에서 그룹을 선택하고 "장애표시 제거"에 마우스를 위치시키면 그룹에 속해 있는 활성/비활성 노드들이 나타납니다.
활성화되어 있는 노드에서만 "장애표시 제거" 명령을 내릴 수 있습니다.

[그림] 장애 표시 제거 화면



명령 초기화

MCCS에서 그룹 내의 리소스들을 온라인/오프라인 할 때에 외부적인 요인에 의해 그룹에 대한 서비스 처리가 지연되는 경우, 이를 초기화 하고자 할 때에 사용합니다.
이런 상황에서는 MCCS는 관리자가 지시한 명령도 무시되는 무응답 상태(hang)이기 때문에 MCCS의 정상적인 고가용성 운영이 불가능합니다.
"명령 초기화"를 실행하면 큐에 쌓여 대기중인 모든 명령들을 취소하고 진행된 상태(온라인 혹은 오프라인)까지 정리합니다.
다음 화면처럼 왼쪽 트리에서 그룹을 선택하고 "명령 초기화"에 마우스를 위치시키면 그룹에 속해 있는 활성/비활성 노드들이 나타납니다.
활성화되어 있는 노드에서만 "명령 초기화" 명령을 내릴 수 있습니다.

[그림] 명령 초기화 화면



의존성 관리

하드웨어 혹은 소프트웨어의 여러 요소들을 리소스로 나타낸다면, 이런 리소스들간에는 동작 순서가 필요합니다.
예를 들면 물리적인 네트워크 어댑터 단계 없이 IP 주소가 의미 없고, 데이터베이스 엔진 서비스가 실행되지 않은 채로 DB 연결 클라이언트(client)를 실행할 수 없듯이 선행되어야 할 순서가 있습니다.
이런 선후행의 논리적인 관계를 MCCS에서는 부모, 자식 형태의 계층적(hierarchy) 관계로 정의할 수 있습니다.
부모 리소스는 위에 위치하고, 자식 리소스는 아래에 위치합니다. MCCS에서 그룹을 시작하면 아래부터 위로 온라인이 진행됩니다.
아래쪽의 자식 리소스들이 모두 온라인 되어야만 위쪽의 부모 리소스가 온라인 될 수 있습니다. 그룹을 종료하면 역순으로 위에서부터 아래로 진행됩니다.


[그림] 그룹 시작/종료시 의존 관계에 있는 리소스들의 온라인/오프라인 순서


의존성 구성

이런 의존성을 정의하기 위해서는 먼저 리소스들을 생성한 후에 그룹 리소스 의존성 화면에서 설정할 수 있습니다.

 

[그림] 의존 관계 화면


MCCS에서는 이런 리소스들간의 의존 관계를 계층적인 트리 형태로 간단히 구성할 수 있습니다.
우리는 위의 화면을 통하여 리소스들 간에 의존 관계를 알 수 있습니다. 
부모인 네트워크주소 리소스는 그의 자식 리소스인 네트워크카드 리소스에 의존하며, 부모인 복합응용 리소스와 기본응용 리소스는  그의 자식 리소스인 네트워크주소 리소스에 의존합니다.
MCCS는 그룹 단위로 페일오버를 진행합니다. 따라서 그룹 내의 모든 리소스들을 서로 의존 관계로 연결하고 하나의 그룹으로 구성해서 실행이 되어야 의미있는 서비스를 제공할 수 있습니다.
리소스 2개를 부모 자식으로 의존 관계를 설정하면 상하 2 단계의 레벨로 볼 수 있으며, 최대 레벨은 그룹 속성의 "MaxDependencyLevel"값에서 확인할 수 있습니다.


link 설정

[그림] Link 설정 화면


위의 화면에서 기본응용 리소스(부모)와 네트워크주소 리소스(자식) 간에 링크를 설정하는 방법을 설명합니다.
네트워크주소 리소스(자식)는 기본응용 리소스(부모)에 의존하는 리소스입니다.

  1. 그룹 관계 에디터 화면을 선택합니다.
  2. 오른쪽 Palette 화면에서 "의존성 생성"를 선택합니다.
  3. 마우스 커서가 link 할 수 있는 모양으로 바뀌는 것을 확인할 수 있습니다.
  4. 먼저 부모 리소스(기본응용 리소스)를 선택한 후 자식 리소스(네트워크주소 리소스)를 선택하면 link설정이 완료됩니다.


Warning

link 설정을 할 때, 먼저 선택하는 리소스가 부모 리소스가 되며 다음에 선택하는 리소스가 자식 리소스가 됩니다.


의존 관계 제거

[그림] Unlink 설정 화면

  1. 의존 관계를 제거할 때는 팔레트에서 [선택]을 클릭합니다.
  2. 제거할 link를 선택합니다.
  3. 선택한 link는 리소스의 양 끝점에 큰 포인트가 생기면서 선택된 상태임을 알려줍니다.
  4. 선택된 link에서 마우스 오른쪽을 클릭하여 팝업 화면에서 [의존성 삭제]를 선택합니다.


의존성 설정

[그림] 의존성 타입 변경 화면


의존성이 구성되면, 의존성을 리소스 그룹 트리 뷰에서 확인 할 수 있습니다.
의존성을 선택하여 해당 의존성의 속성을 확인 및 변경 할 수 있습니다.
의존성의 속성에는 "OnlineDependency"와 "OfflineDependency"가 있습니다.
속성들은 개별 리소스의 온라인, 오프라인, "Restartlimit"에 의한 리소스 재 시작 시 사용됩니다. "Restartlimit"에 대한 상세한 내용은 "7. 리소스" 편을 참조해 주십시오.

속성설명타입기본값수정
OnlineDependency

개별 리소스의 온라인 시 자식 리소스의 온라인 수행 여부를 판단하는 속성입니다.
이 속성은 STRONG과 WEAK 값을 가질 수 있습니다.
WEAK인 경우, 자식 리소스를 온라인 하지 않고 단독 온라인을 수행합니다. 

STRINGSTRONGO

OfflineDependency

개별 리소스의 오프라인 시 부모 리소스의 오프라인 수행 여부를 판단하는 속성입니다.
이 속성은 STRONG과 WEAK 값을 가질 수 있습니다.
WEAK인 경우, 부모 리소스를 오프라인 하지 않고 단독 오프라인을 수행합니다.

STRING

STRONG O



기본적인 구성 시나리오

의존 관계를 설정하는 일반적인 경우를 살펴보겠습니다. 

네트워크카드 리소스, 네트워크주소 리소스

네트워크주소 리소스에서 IP를 할당하기 위해서는 먼저 물리적인 네트워크 카드가 필요합니다. 네트워크 카드 없이 IP 할당이 불가능하기 때문입니다.
네트워크 카드 리소스를 자식으로 네트워크주소 리소스를 부모로 하는 의존 관계를 설정하면, 네트워크주소 리소스를 온라인 시도할 때 먼저 네트워크 카드가 정상적인 상태인지 확인합니다. 

디스크 리소스 , 네트워크주소 리소스, 복합응용 리소스 (예: 데이터베이스)

많은 응용프로그램들은 디스크(혹은 스토리지)에 데이터를 기록합니다. 따라서 응용프로그램들은 디스크에 의존하는 형태로 관계가 이루어져야 합니다.
데이터베이스의 경우는 데이터를 기록할 디스크를 지정해야 합니다. 따라서 데이터베이스는 디스크에 의존하도록 데이터베이스를 부모로 디스크를 자식으로 의존 관계를 설정합니다.
클라이언트에서 데이터베이스에 접속할 수 있는 IP 주소가 필요하다면 네크워크주소를 자식으로 데이터베이스를 부모로 의존 관계를 설정합니다.
이 의존 관계를 바탕으로 MCCS에서는 그룹을 온라인 할 때, 네트워크주소 리소스와 디스크 un-lock이 정상적으로 실행되었는지 확인한 후에 데이터베이스를 구동시킵니다.
따라서 데이터베이스는 네트워크주소 리소스, 디스크 리소스를 모두 의존하는 관계로 설정되어야 합니다.
지금까지의 관계로 의존성을 구성해보면 다음과 같은 형태가 됩니다.

[그림] 의존 관계도




의존성에 따른 동작

그룹의 시작/종료 순서는 의존성에 따라 온라인은 아래부터 위로, 오프라인은 위부터 아래로 진행됩니다.
그럼 실제 장애가 발생하였을 경우, 리소스 속성을 고려한 진행 순서에 대해 몇 가지 경우를 예로 들어 보겠습니다.
먼저, 리소스 속성과 진행 상태를 다음과 같이 그림으로 미리 정의해 놓았습니다.

[그림] 리소스 상태 정보 표시도

의존성 속성에 따른 동작

  • OnlineDependency

[그림] 리소스(r1) 단일 온라인 예

D1의 OnlineDependency : STRONG, D2의 OnlineDependency : WEAK

  1. r1에 연결된 의존성의 OnlineDependency속성을 확인합니다.
  2. D1의 속성값이 STRONG이므로, r4 → r2  r1순으로 온라인 합니다.
    (D2의 속성값은 WEAK이므로, r3는 온라인 하지 않습니다.)


  • OfflineDependency

[그림] 리소스(r4) 단일 오프라인 예


D1의 OfflineDependency : STRONG, D2의 OfflineDependency : WEAK

  1. r4에 연결된 의존성의 OfflineDependency속성을 확인합니다.
  2. D1의 속성값이 STRONG이므로, r1  r2  r4순으로 오프라인 합니다.
    (D2의 속성값은 WEAK이므로, r3는 오프라인 하지 않습니다.)


리소스 Critical 속성

  • critical 리소스보다 하위에서 장애발생

[그림] 장애 발생 예 1

  1. r2 리소스에서 장애가 발생하면 r1 리소스를 종료합니다.
    (r2를 의존하는 r1으로서는 r2가 장애이므로 r1이 정상적인 온라인이라고 보기 힘듭니다.)
  2. r2은 critical 속성이 있으므로 이 그룹을 페일오버 시키기 위해 r3, r4 순서로 종료 시킵니다.
  3. 결국 이 노드에서는 r2를 장애 판정하고 그룹 내의 모든 리소스들을 오프라인 시킵니다.

  • critical이 아닌 리소스

[그림] 장애 발생 예 2

  1. r1 리소스가 critical 이 아닌 경우에 온라인 되어 있는 상태입니다.
  2. r2 리소스에서 장애가 발생하여 r1 리소스를 종료합니다.
  3. r2 리소스는 critical 이 아니므로 그룹 전체를 페일오버 할 필요가 없습니다. 따라서 현재 진행된 상태에서 멈춥니다.


RestartLimit 속성

"RestartLimit"는 리소스 타입에 있는 속성으로 최종 장애로 판단하기 전에 몇 번까지 복구할 것인지 결정하는 값입니다.

(상세한 내용은 "7. 리소스" 편을 참조해 주십시오.)

[그림] 장애 발생 예 3

  1. r2 리소스는 RestartLimit 값이 1인 경우로 1차 장애가 발생했습니다.
  2. "RestartLimit"값으로 인해 1차 서비스를 복구 시킵니다.
    이 때는 상위인 r1의 리소스는 하위 리소스 재시작을 위해 오프라인 됩니다.
  3. r2가 재시작 합니다.
  4. r1 리소스도 온라인하게 됩니다.
  5. r2에서 한번 더 장애가 발생하여 최종 장애 상태로 처리 하고 그룹을 페일오버 시키기 위해 현재 그룹을 모두 종료 시킵니다.
    리소스 종료 순서에 의해 r1 리소스부터 종료 시킵니다.
  6. r3 리소스를 종료 시킵니다.
  7. 현재 노드에서는 r2가 장애 상태로 처리되었고 모든 리소스들이 오프라인 상태로 남게 됩니다.


Info

장애로 인한 리소스 재시작 시에는 의존성의 OfflineDependency 속성값에 따라 상위 리소스를 오프라인 하고 재시작합니다.
재시작 후에는 오프라인 한 리소스들에 대해서 다시 온라인 합니다.