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

응용 프로그램 중지

Stop 메소드는 데이터 서비스를 중지하기 위한 2계층 방식,즉 pmfadm을 통해 SIGTERM 신호를 사용하는 순차적이거나 완만한 방식과 SIGKILL 신호를 사용하는 돌발적이거나 하드한 방식을 제공합니다. Stop 메소드는 Stop_timeout 값(Stop 메소드가 반환되어야 하는 시간)을 가져옵니다. 그런 다음 Stop 메소드는 다음 샘플 코드와 같이 이 시간의 80%를 완만하게 중지하는 데 할당하고 15%를 돌발적으로 중지하는 데 할당합니다(5%는 예약됨).

STOP_TIMEOUT='scha_resource_get -O STOP_TIMEOUT -R $RESOURCE_NAME \
-G $RESOURCEGROUP_NAME'
((SMOOTH_TIMEOUT=$STOP_TIMEOUT * 80/100))
((HARD_TIMEOUT=$STOP_TIMEOUT * 15/100))

Stop 메소드는 pmfadm -q를 사용하여 DNS 데몬이 실행 중인지 확인합니다. DNS 데몬이 실행 중이면 Stop은 먼저 DNS 프로세스를 종료하기 위해 pmfadm -s를 사용하여 TERM 신호를 보냅니다. 시간 초과값의 80%가 지난 후에도 이 신호가 프로세스를 종료하지 못할 경우 StopSIGKILL 신호를 보냅니다. 이 신호도 시간 초과값의 15% 이내에 프로세스를 종료하지 못하면 이 메소드는 오류 메시지를 기록하고 오류 상태로 종료합니다.

pmfadm이 프로세스를 종료할 경우 이 메소드는 프로세스가 중지되었다는 메시지를 기록하고 성공 상태로 종료합니다.

DNS 프로세스가 실행 중이 아니면 이 메소드는 DNS 프로세스가 실행 중이 아니라는 메시지를 기록하고 성공 상태로 종료합니다. 다음 코드 샘플은 Stop에서 pmfadm을 사용하여 DNS 프로세스를 중지하는 방법을 보여줍니다.

# See if in.named is running, and if so, kill it. 
if pmfadm -q $PMF_TAG; then
   # Send a SIGTERM signal to the data service and wait for 80% of the
   # total timeout value.
   pmfadm -s $RESOURCE_NAME.named -w $SMOOTH_TIMEOUT TERM
   if [ $? -ne 0 ]; then
      logger -p ${SYSLOG_FACILITY}.err \
          -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \
          “${ARGV0} Failed to stop HA-DNS with SIGTERM; Retry with \
           SIGKILL”
      
      # Since the data service did not stop with a SIGTERM signal, use 
      # SIGKILL now and wait for another 15% of the total timeout value.
      pmfadm -s $PMF_TAG -w $HARD_TIMEOUT KILL
      if [ $? -ne 0 ]; then
          logger -p ${SYSLOG_FACILITY}.err \
          -t [$SYSLOG_TAG] \
          “${ARGV0} Failed to stop HA-DNS; Exiting UNSUCCESSFUL”
         exit 1
      fi
fi
else 
   # The data service is not running as of now. Log a message and 
   # exit success.
   logger -p ${SYSLOG_FACILITY}.err \
           -t [$SYSLOG_TAG] \
           “HA-DNS is not started”

   # Even if HA-DNS is not running, exit success to avoid putting
   # the data service resource in STOP_FAILED State.
   exit 0
fi

# Could successfully stop DNS. Log a message and exit success.
logger -p ${SYSLOG_FACILITY}.err \
    -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \
    “HA-DNS successfully stopped”
exit 0