probefail 변수가 0 (성공)이 아닌 다른 값일 경우 nslookup 명령이 시간 초과되었거나 샘플 서비스의 DNS가 아닌 서버에서 응답을 보냈다는 의미입니다. 이러한 경우 DNS 서버는 예상대로 작동하지 않으며 오류 모니터는 decide_restart_or_failover() 함수를 호출하여 데이터 서비스를 로컬로 다시 시작할 것인지 아니면 데이터 서비스를 다른 노드로 재할당하도록 RGM에 요청할 것인지 결정합니다. probefail 변수가 0일 경우 검사에 성공했다는 메시지가 생성됩니다.
if [ $probefail -ne 0 ]; then decide_restart_or_failover else logger -p ${SYSLOG_FACILITY}.err\ -t [$SYSLOG_TAG]\ "${ARGV0} Probe for resource HA-DNS successful" fi |
decide_restart_or_failover() 함수는 시간 창(Retry_interval)과 실패 횟수( Retry_count)를 사용하여 DNS를 로컬로 다시 시작할 것인지 아니면 데이터 서비스를 다른 노드로 재할당하도록 RGM에 요청할 것인지 결정합니다. 이 함수는 다음 조건부 코드를 구현합니다(PROBE 프로그램에서 decide_restart_or_failover ()의 코드 목록 참조).
첫 번째 실패일 경우 데이터 서비스를 다시 시작합니다. 오류 메시지를 기록하고 retries 변수에서 카운터를 증가시킵니다.
첫 번째 실패가 아니지만 창이 초과된 경우 데이터 서비스를 다시 시작합니다. 오류 메시지를 기록하고 카운터를 재설정한 다음 창을 진행합니다.
시간이 여전히 창 안에 있고 재시도 카운터가 초과된 경우 다른 노드로 페일오버합니다. 페일오버에 실패한 경우 오류를 기록하고 상태 1 (실패)로 검사 프로그램을 종료합니다.
시간이 여전히 창 안에 있지만 재시도 카운터가 초과되지 않은 경우 데이터 서비스를 다시 시작합니다. 오류 메시지를 기록하고 retries 변수에서 카운터를 증가시킵니다.
시간 간격 동안에 재시작 횟수가 한도에 도달할 경우 이 함수는 데이터 서비스를 다른 노드로 재할당하도록 RGM에 요청합니다. 재시작 횟수가 한도 이내이거나 간격이 초과되어 카운트가 다시 시작된 경우 이 함수는 동일한 노드에서 DNS의 재시작을 시도합니다. 이 함수와 관련하여 다음 사항에 주의하십시오.
재시작 간의 시간을 추적하기 위해 gettime 유틸리티가 사용됩니다. 이 유틸리티는 Rt_basedir 디렉토리에 상주하는 C 프로그램입니다.
Retry_count 및 Retry_interval 시스템 정의 자원 등록 정보는 재시작 시도 횟수와 이러한 시도가 계산되는 간격을 결정합니다. 이러한 등록 정보의 기본값은 RTR 파일에서 5분(300초) 동안 두 번 시도를 수행하는 것이며 클러스터 관리자는 이 기본값을 변경할 수 있습니다.
동일한 노드에서 데이터 서비스를 다시 시작하기 위해 restart_service() 함수가 호출됩니다. 이 함수에 대한 자세한 내용은 다음 절, 데이터 서비스 다시 시작를 참조하십시오.
scha_control() API 함수는 GIVEOVER 옵션과 함께 사용되어 샘플 데이터 서비스를 포함하는 자원 그룹을 오프라인시키고 다른 노드에서 다시 온라인으로 만듭니다.