5.3 의존성 관리.
하드웨어 혹은 소프트웨어의 여러 요소들을 리소스로 나타낸다면, 이런 리소스들간에는 동작 순서가 필요합니다.
예를 들면 물리적인 네트워크 어댑터 단계 없이 IP 주소가 의미 없고, 데이터베이스 엔진 서비스가 실행되지 않은 채로
DB 연결 클라이언트(client)를 실행할 수 없듯이 선행되어야 할 순서가 있습니다.
이런 선후행의 논리적인 관계를 MCCS에서는 부모, 자식 형태의 계층적(hierarchy) 관계로 정의할 수 있습니다.
부모 리소스는 위에 위치하고, 자식 리소스는 아래에 위치합니다. MCCS에서 그룹을 시작하면 아래부터 위로 온라인이 진행됩니다.
아래쪽의 자식 리소스들이 모두 온라인 되어야만 위쪽의 부모 리소스가 온라인 될 수 있습니다. 그룹을 종료하면 역순으로 위에서부터 아래로 진행됩니다.
이 페이지의 주요 내용
[그림] 그룹 시작/종료시 의존 관계에 있는 리소스들의 온라인/오프라인 순서
의존성 구성
이런 의존성을 정의하기 위해서는 먼저 리소스들을 생성한 후에 그룹 리소스 의존성 화면에서 설정할 수 있습니다.
[그림] 의존 관계 화면
MCCS에서는 이런 리소스들간의 의존 관계를 계층적인 트리 형태로 간단히 구성할 수 있습니다.
우리는 위의 화면을 통하여 리소스들 간에 의존 관계를 알 수 있습니다.
부모인 네트워크주소 리소스는 그의 자식 리소스인 네트워크카드 리소스에 의존하며, 부모인 복합응용 리소스와 기본응용 리소스는 그의 자식 리소스인 네트워크주소 리소스에 의존합니다.
MCCS는 그룹 단위로 페일오버를 진행합니다. 따라서 그룹 내의 모든 리소스들을 서로 의존 관계로 연결하고 하나의 그룹으로 구성해서 실행이 되어야 의미있는 서비스를 제공할 수 있습니다.
리소스 2개를 부모 자식으로 의존 관계를 설정하면 상하 2 단계의 레벨로 볼 수 있으며, 최대 레벨은 그룹 속성의 'MaxDependencyLevel' 값에서 확인할 수 있습니다.
link 설정
[그림] Link 설정 화면
위의 화면에서 기본응용 리소스(부모)와 네트워크주소 리소스(자식) 간에 링크를 설정하는 방법을 설명합니다.
네트워크주소 리소스(자식)는 기본응용 리소스(부모)에 의존하는 리소스입니다.
- 그룹 관계 에디터 화면을 선택합니다.
- 오른쪽 Palette 화면에서 '의존성 생성'를 선택합니다.
- 마우스 커서가 link 할 수 있는 모양으로 바뀌는 것을 확인할 수 있습니다.
- 먼저 부모 리소스(기본응용 리소스)를 선택한 후 자식 리소스(네트워크주소 리소스)를 선택하면 link설정이 완료됩니다.
※ link 설정을 할 때, 먼저 선택하는 리소스가 부모 리소스가 되며 다음에 선택하는 리소스가 자식 리소스가 됩니다.
의존 관계 제거
[그림] Unlink 설정 화면
- 의존 관계를 제거할 때는 팔레트에서 '선택'을 클릭합니다.
- 제거할 link를 선택합니다.
- 선택한 link는 리소스의 양 끝점에 큰 포인트가 생기면서 선택된 상태임을 알려줍니다.
- 선택된 link에서 마우스 오른쪽을 클릭하여 팝업 화면에서 '의존성 삭제'를 선택합니다.
의존성 설정
[그림] 의존성 타입 변경 화면
의존성이 구성되면, 의존성을 리소스 그룹 트리 뷰에서 확인 할 수 있습니다.
의존성을 선택하여 해당 의존성의 속성을 확인 및 변경 할 수 있습니다.
의존성의 속성에는 'OnlineDependency' 와 'OfflineDependency' 가 있습니다.
속성들은 개별 리소스의 온라인, 오프라인, 'Restartlimit'에 의한 리소스 재 시작 시 사용됩니다. (Restartlimit에 대한 상세한 내용은 "7. 리소스" 편을 참조해 주십시오.)
속성 | 설명 | 타입 | 기본값 | 수정 | 비고 |
---|---|---|---|---|---|
OnlineDependency | 개별 리소스의 온라인 시 자식 리소스의 온라인 수행 여부를 판단하는 속성입니다. | STRING | STRONG | O | |
OfflineDependency | 개별 리소스의 오프라인 시 부모 리소스의 오프라인 수행 여부를 판단하는 속성입니다. | STRING | STRONG | O |
기본적인 구성 시나리오
의존 관계를 설정하는 일반적인 경우를 살펴보겠습니다.
네트워크카드 리소스, 네트워크주소 리소스
네트워크주소 리소스에서 IP를 할당하기 위해서는 먼저 물리적인 네트워크 카드가 필요합니다. 네트워크 카드 없이 IP 할당이 불가능하기 때문입니다.
네트워크 카드 리소스를 자식으로 네트워크주소 리소스를 부모로 하는 의존 관계를 설정하면, 네트워크주소 리소스를 온라인 시도할 때 먼저 네트워크 카드가 정상적인 상태인지 확인합니다.
디스크 리소스 , 네트워크주소 리소스, 복합응용 리소스 (ex: 데이터베이스)
많은 응용프로그램들은 디스크(혹은 스토리지)에 데이터를 기록합니다. 따라서 응용프로그램들은 디스크에 의존하는 형태로 관계가 이루어져야 합니다.
데이터베이스의 경우는 데이터를 기록할 디스크를 지정해야 합니다. 따라서 데이터베이스는 디스크에 의존하도록 데이터베이스를 부모로 디스크를 자식으로 의존 관계를 설정합니다.
클라이언트에서 데이터베이스에 접속할 수 있는 IP 주소가 필요하다면 네크워크주소를 자식으로 데이터베이스를 부모로 의존 관계를 설정합니다.
이 의존 관계를 바탕으로 MCCS에서는 그룹을 온라인 할 때, 네트워크주소 리소스와 디스크 un-lock이 정상적으로 실행되었는지 확인한 후에 데이터베이스를 구동시킵니다.
따라서 데이터베이스는 네트워크주소 리소스, 디스크 리소스를 모두 의존하는 관계로 설정되어야 합니다.
지금까지의 관계로 의존성을 구성해보면 다음과 같은 형태가 됩니다.
[그림] 의존 관계도
의존성에 따른 동작
그룹의 시작/종료 순서는 의존성에 따라 온라인은 아래부터 위로, 오프라인은 위부터 아래로 진행됩니다.
그럼 실제 장애가 발생하였을 경우, 리소스 속성을 고려한 진행 순서에 대해 몇 가지 경우를 예로 들어 보겠습니다.
먼저, 리소스 속성과 진행 상태를 다음과 같이 그림으로 미리 정의해 놓았습니다.
[그림] 리소스 상태 정보 표시도
의존성 속성에 따른 동작
- OnlineDependency
[그림] 리소스(r1) 단일 온라인 예(D1의 OnlineDependency : STRONG, D2의 OnlineDependency : WEAK)
- r1에 연결된 의존성의 OnlineDependency속성을 확인합니다.
- D1의 속성값이 STRONG이므로, r4 -> r2 -> r1순으로 온라인 합니다.
(D2의 속성값은 WEAK이므로, r3는 온라인 하지 않습니다.)
- OfflineDependency
[그림] 리소스(r4) 단일 오프라인 예(D1의 OfflineDependency : STRONG, D2의 OfflineDependency : WEAK)
- r4에 연결된 의존성의 OfflineDependency속성을 확인합니다.
- D1의 속성값이 STRONG이므로, r1 -> r2 -> r4순으로 오프라인 합니다.
(D2의 속성값은 WEAK이므로, r3는 오프라인 하지 않습니다.)
리소스 Critical 속성
- critical 리소스보다 하위에서 장애발생
[그림] 장애 발생 예 1
- r2 리소스에서 장애가 발생하면 r1 리소스를 종료합니다.
(r2를 의존하는 r1으로서는 r2가 장애이므로 r1이 정상적인 온라인이라고 보기 힘듭니다.) - r2은 critical 속성이 있으므로 이 그룹을 페일오버 시키기 위해 r3, r4 순서로 종료 시킵니다.
- 결국 이 노드에서는 r2를 장애 판정하고 그룹 내의 모든 리소스들을 오프라인 시킵니다.
- critical이 아닌 리소스
[그림] 장애 발생 예 2
- r1 리소스가 critical 이 아닌 경우에 온라인 되어 있는 상태입니다.
- r2 리소스에서 장애가 발생하여 r1 리소스를 종료합니다.
- r2 리소스는 critical 이 아니므로 그룹 전체를 페일오버 할 필요가 없습니다. 따라서 현재 진행된 상태에서 멈춥니다.
RestartLimit 속성
'RestartLimit'는 리소스 타입에 있는 속성으로 최종 장애로 판단하기 전에 몇 번까지 복구할 것인지 결정하는 값입니다.
(상세한 내용은 "7. 리소스" 편을 참조해 주십시오.)
[그림] 장애 발생 예 3
- r2 리소스는 RestartLimit 값이 1인 경우로 1차 장애가 발생했습니다.
- RestartLimit 값으로 인해 1차 서비스를 복구 시킵니다.
이 때는 상위인 r1의 리소스는 하위 리소스 재시작을 위해 오프라인 됩니다. - r2가 재시작 합니다.
- r1 리소스도 온라인하게 됩니다.
- r2에서 한번 더 장애가 발생하여 최종 장애 상태로 처리 하고 그룹을 페일오버 시키기 위해 현재 그룹을 모두 종료 시킵니다.
리소스 종료 순서에 의해 r1 리소스부터 종료 시킵니다. - r3 리소스를 종료 시킵니다.
- 현재 노드에서는 r2가 장애 상태로 처리되었고 모든 리소스들이 오프라인 상태로 남게 됩니다.
※ 장애로 인한 리소스 재시작 시에는 의존성의 OfflineDependency 속성값에 따라 상위 리소스를 오프라인 하고 재시작합니다.
재시작 후에는 오프라인 한 리소스들에 대해서 다시 온라인 합니다.