13- 에이전트

에이전트는 리소스를 관리하기 위한 MCCS 내부 프로그램입니다.
MCCS에서는 리소스에 명령을 내리거나 모니터링 하는 것을 에이전트를 통해서 합니다. 에이전트는 리소스 타입에 따라 각자에 리소스에 맞는 기능을 수행합니다.
예를 들면 공유 디스크를 온라인 하는 것은 디스크를 마운트 시키고, 잠금을 풀고, 쓰기 접근(write access)이 가능하도록 처리하는 것이지만
기본 응용프로그램을 온라인 하는 것은 해당 경로의 프로그램을 실행시키는 것을 의미합니다.

이 페이지의 주요 내용

에이전트 상태변화

에이전트 상태

에이전트 상태는 리소스 상태 페이지의 에이전트 상태 값에서 확인하실 수 있습니다.

에이전트 상태

상태 설명

Detached

비활성 상태로서 에이전트 스레드가 시작되지 않은, 따라서 리소스 모니터링을 하지 않는 상태입니다. 
리소스 속성 중에서 Enabled 값이 false인 경우입니다.

Opening

Detached에서 리소스 활성화가 되어 모니터링을 시작할 때의 상태입니다. 
Enabled 값을 true로 변경하는 '리소스 활성화' 설정 명령을 실행할 때에 최초로 진입하는 상태입니다.

Probing

리소스 모니터링을 하는 상태이며 모니터링 결과값을 최초로 판단하게 되면 Online 혹은 Offline로 진입하게 됩니다.

Online

리소스가 온라인 상태에서 모니터링을 하는 상태입니다.

Offline

리소스가 오프라인 상태에서 모니터링 하는 상태입니다.
장애가 발생하여 리소스가 종료되었을 경우에도 에이전트에서는 Offline로 간주합니다.

GoingOffline

온라인 상태인 리소스를 오프라인 상태로 만들기 위한 종료 명령이 실행되고 있는 상태입니다.

GoingOfflineWait

리소스 종료 명령의 실행이 끝난 뒤에 모니터링 결과, 리소스 상태가 오프라인 되기 전의 상태입니다.

GoingOnline

오프라인 상태인 리소스를 온라인 상태로 만들기 위한 시작 명령이 실행되고 있는 상태입니다.

GoingOnlineWait

리소스 시작 명령의 실행이 끝난 뒤에 모니터링 결과, 리소스 상태가 온라인 되기 전의 상태입니다.

 

에이전트 상태 변화

리소스를 활성화 시키면 Probing에서 모니터링을 시작하게 됩니다.
모니터링 결과에 따라 상태를 결정한 후에 에이전트는 필요한 명령을 받으며 상태가 변화하게 됩니다.
에이전트의 일반적인 상태가 변화하는 흐름은 다음과 같습니다.

[그림] 에이전트 상태 머신

  1. 리소스가 처음 만들어지면 비활성화 상태로서 에이전트는 Detached 상태가 됩니다.
  2. 리소스를 활성화시키면 Opening, Probing를 거쳐 리소스 모니터링을 시작하고 상태를 결정합니다.
  3. 온라인 상태의 리소스를 MCCS에서 정상적으로 종료시킬 경우, 에이전트는 GoingOffline가 되고, 명령이 종료되면 GoingOfflineWait가 됩니다.
  4. 이 상태에서 모니터링 결과가 오프라인이면 에이전트는 Offline가 됩니다.
    모니터링 결과, 여전히 온라인 상태이면 설정된 모니터링 간격으로 오프라인 상태가 될 때까지 모니터링을 반복합니다.
    종료 명령이 시작된 이후에 경과한 시간이 리소스 타입의 OfflineTimeout 속성에 지정된 값을 초과할 경우는 리소스 종료 과정이 취소되고 Online로 재설정됩니다.
  5. 오프라인 상태의 리소스를 시작할 경우에 에이전트는 GoingOnline가 됩니다.
  6. 온라��� 명령이 끝나면 GoingOnlineWait가 되고 이후에 모니터링을 시작하여 온라인 상태가 될 때까지 설정된 모니터링 간격 (OfflineMonitorInterval)으로 OnlineWaitLimit 회수 만큼 모니터링을 반복합니다.
    모니터링 결과가 온라인이면 에이전트는 Online가 되지만, OnlineWaitLimit 만큼 모니터링을 반복하고도 온라인 상태가 되지 못하면 리소스는 장애 상태로 처리됩니다.
  7. Online에서 Offline로 바로 변환하는 경우는 장애가 발생한 것으로 처리됩니다.
    MCCS에서는 리소스 상태를 모니터링하며 명령을 처리할 때는 위의 상태 변화 흐름대로 에이전트 상태가 변화하게 됩니다. MCCS를 통한 변환 과정에는 Going~으로 시작하는 변환 상태를 거치게 되는데, MCCS가 아닌 외부에서 리소스를 변환시킬 경우에는 이런 흐름을 거치지 않습니다.
  8. 예를 들면 온라인 되어 있는 응용프로그램이 외부에서 오류로 인해 프로세스가 종료 될 경우에 장애로 처리하게 됩니다.
    또한 페일오버 전용 그룹에서 반드시 한 쪽 노드에서만 활성화 되어야 할 리소스인 경우에, 오프라인 되어 있던 노드에서 갑자기 외부 사용자에 의해 온라인 되었다면 이러한 경우도 문제가 발생할 여지가 있습니다.
    공유 스토리지 같은 경우에 반드시 한 쪽에서만 쓰기가 보장되어야 하는 리소스이지만 다른 쪽에서도 마운트 되어 쓰기가 가능해진다면 스토리지 내의 데이터는 파손될 우려가 있습니다.
  9. 이처럼 에이전트 상태가 위의 상태 변환 다이어그램처럼 변환하지 않는 경우에는 MCCS에서 장애 혹은 문제가 발생한 상태로 판단하게 됩니다.