La méthode Arrêt est appelée sur un noeud du cluster lorsque le groupe de ressources contenant la ressource HA-DNS est déconnecté sur ce noeud ou que la ressource est désactivée. Cette méthode arrête le démon in.named (système de nom de domaine) sur ce noeud.
#!/bin/ksh # # Méthode d'arrêt de HA-DNS # # Arrêtez le service de données à l'aide de la fonction PMF. Si le service ne fonctionne pas # la méthode se ferme avec l'état 0, le retour de toute autre valeur basculant la ressource # en mode ÉCHEC_ARRÊT. #pragma ident “@(#)dns_svc_stop 1.1 00/05/24 SMI” ############################################################################### # Arguments d'analyse du programme. # function parse_args # [args ...] { typeset opt while getopts `R:G:T:' opt do case “$opt” in R) # Nom de la ressource DNS. RESOURCE_NAME=$OPTARG ;; G) # Nom du groupe de ressources dans lequel la ressource # est configurée. RESOURCEGROUP_NAME=$OPTARG ;; T) # Nom du type de ressources. RESOURCETYPE_NAME=$OPTARG ;; *) logger -p ${SYSLOG_FACILITY}.err \ -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \ “ERROR: Option $OPTARG unknown” exit 1 ;; esac done } ############################################################################### # MAIN # ############################################################################## export PATH=/bin:/usr/bin:/usr/cluster/bin:/usr/sbin:/usr/proc/bin:$PATH # Obtenez la fonction syslog à utiliser pour consigner les messages. SYSLOG_FACILITY=`scha_cluster_get -O SYSLOG_FACILITY` # Analysez les arguments qui ont été transmis à cette méthode parse_args “$@” PMF_TAG=$RESOURCE_NAME.named SYSLOG_TAG=$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME # Obtenez la valeur Délai_arrêt à partir du fichier RTR. DÉLAI_ARRÊT=`scha_resource_get -O STOP_TIMEOUT -R $RESOURCE_NAME -G \ $RESOURCEGROUP_NAMÈ # Essayez d'arrêter le service de données de façon ordonnée à l'aide d'un signal SIGTERM # au moyen de la fonction PMF. Attendez pendant 80% maximum de la valeur Délai_arrêt pour # voir si SIGTERM parvient à arrêter le service de données correctement. Dans le # cas contraire, envoyez un signal SIGKILL pour arrêter le service de données. Utilisez # jusqu'à 15 % de la valeur Délai_arrêt pour voir si le signal SIGKILL offre les résultats # escomptés. Dans le cas contraire, l'arrêt échoue et la méthode se ferme avec un état # différent de zéro. Les 5% restant de Délai_arrêt sont dédiés à une autre utilisation. ((SMOOTH_TIMEOUT=$STOP_TIMEOUT * 80/100)) ((HARD_TIMEOUT=$STOP_TIMEOUT * 15/100)) # Vérifiez si in.named est exécuté. Le cas échéant, interrompez-le. if pmfadm -q $PMF_TAG.named; then # Envoyez un signal SIGTERM au service de données et attendez pendant 80 % # de la # valeur totale du délai d'attente. pmfadm -s $PMF_TAG.named -w $SMOOTH_TIMEOUT TERM if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.info -t [SYSLOG_TAG] \ “${ARGV0} Failed to stop HA-DNS with SIGTERM; Retry with \ SIGKILL” # Comme le service de données ne s'est pas arrêté avec le signal SIGTERM, utilisez # le signal SIGKILL et attendez pendant 15% de la valeur totale du délai d'attente. pmfadm -s $PMF_TAG.named -w $HARD_TIMEOUT KILL if [ $? -ne 0 ]; then logger -p ${SYSLOG_FACILITY}.err -t [SYSLOG_TAG] \ “${ARGV0} Failed to stop HA-DNS; Exiting UNSUCCESFUL” exit 1 fi fi else # Le service de données n'est plus en cours d'exécution. Consignez un message et # quittez avec succès. logger -p ${SYSLOG_FACILITY}.info -t [SYSLOG_TAG] \ “HA-DNS is not started” # Même si HA-DNS n'est pas exécuté, quittez avec succès pour éviter de basculer # le service de données en mode ÉCHEC_ARRÊT. exit 0 fi # Le service de noms de domaine se ferme correctement. Consignez un message et quittez # avec succès. logger -p ${SYSLOG_FACILITY}.info -t [$SYSLOG_TAG] \ “HA-DNS successfully stopped” exit 0 |