Solaris OS용 Sun Cluster 데이터 서비스 개발 안내서

Start 메소드

자원 유형 구현의 Start 콜백 메소드는 자원을 시작하기 위해 선택된 클러스터 노드에서 RGM에 의해 호출됩니다. 명령줄에 자원 그룹 이름, 자원 이름 및 자원 유형 이름이 전달됩니다. Start 메소드는 클러스터 노드에서 데이터 서비스 자원을 시작하는 데 필요한 작업을 수행합니다. 일반적으로 여기에는 자원 등록 정보 검색, 응용 프로그램 특정 실행 파일 및/또는 구성 파일 찾기, 해당 명령줄 인자로 응용 프로그램 시작 등의 작업이 포함됩니다.

DSDL의 경우 자원 구성은 이미 scds_initialize() 유틸리티에 의해 검색됩니다. 응용 프로그램에 대한 시작 작업은 svc_start() 함수에 포함될 수 있습니다. 다른 함수 svc_wait()를 호출하여 응용 프로그램이 실제로 시작되었는지 확인할 수 있습니다. Start 메소드에 대한 단순화된 코드는 다음과 같이 나타납니다.

int
main(int argc, char *argv[])
{
   scds_handle_t handle;

   if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
   return (1);   /* Initialization Error */
   }
   if (svc_validate(handle) != 0) {
   return (1);   /* Invalid settings */
   }
   if (svc_start(handle) != 0) {
   return (1);   /* Start failed */
   }
   return (svc_wait(handle));
}

이 시작 메소드 구현에서 svc_validate()를 호출하여 자원 구성을 검증합니다. 실패할 경우 자원 구성과 응용 프로그램 구성이 일치하지 않거나 해당 클러스터 노드에 시스템과 관련된 문제가 있는 것입니다. 예를 들어, 자원에 필요한 클러스터 파일 시스템을 현재 해당 클러스터 노드에서 사용하지 못할 수 있습니다. 이러한 경우 해당 클러스터 노드에서 자원을 시작하려는 시도는 아무 소용이 없으며 RGM으로 하여금 다른 노드에서 자원을 시작하도록 하는 것이 좋습니다.

그러나 위에서는 svc_validate()가 응용 프로그램에 절대적으로 필요한 클러스터 노드의 자원만 검사하도록 제한되어 있으며 그렇지 않을 경우 모든 클러스터 노드에서 자원이 시작되지 않아 START_FAILED 상태가 될 수 있다고 가정합니다. 이 상태에 대한 자세한 내용은 scswitch(1M) 설명서 페이지 및 Sun Cluster Data Services Planning and Administration Guide for Solaris OS를 참조하십시오.

svc_start() 함수는 노드에서 자원 시작에 성공한 경우 0을 반환해야 하며 문제가 발생한 경우에는 0이 아닌 값을 반환해야 합니다. 이 함수가 실패할 경우 RGM은 다른 클러스터 노드에서 해당 자원을 시작하려고 합니다.

DSDL을 가능한 많이 활용하기 위해 svc_start() 함수는 scds_pmf_start() 유틸리티를 호출하여 PMF(Process Management Facility)에서 응용 프로그램을 시작할 수 있습니다. 이 유틸리티는 또한 PMF의 실패 콜백 작업 기능을 사용하여 프로세스 실패를 감지합니다. 자세한 내용은 pmfadm(1M) 설명서 페이지에서 -a 작업 인자에 대한 설명을 참조하십시오.