script de recursos do corosynce lsb do marcapasso (Sybase Database ASE Server e Backup Server)

1

Estou tentando criar um recurso lsb com pcs no rhel7.2 O script "sybase" é sobre Sybase Database ASE Server e Backup Server Startup & Parar & Reinicie o script $ status

Antes

[root@pldbsv01 ~]# pcs status 
    Cluster name: PLDBSV_CLUSTER
    Last updated: Tue Apr 19 23:18:44 2016      Last change: Tue Apr 19 22:59:07 2016 by root via cibadmin on pldbsv02-cr
    Stack: corosync
    Current DC: pldbsv02-cr (version 1.1.13-10.el7-44eb2dd) - partition with quorum
    2 nodes and 9 resources configured

    Online: [ pldbsv01-cr pldbsv02-cr ]

    Full list of resources:

     Resource Group: PLDBSV_RESOURCE
         PLDBSV_VIP (ocf::heartbeat:IPaddr2):   Started pldbsv01-cr
     idrac-pldbsv01 (stonith:fence_ipmilan):    Started pldbsv02-cr
     idrac-pldbsv02 (stonith:fence_ipmilan):    Started pldbsv01-cr
     Clone Set: dlm-clone [dlm]
         Started: [ pldbsv01-cr ]
         Stopped: [ pldbsv02-cr ]
     Clone Set: clvmd-clone [clvmd]
         Started: [ pldbsv01-cr ]
         Stopped: [ pldbsv02-cr ]
     Clone Set: gfs2sybasedata_res-clone [gfs2sybasedata_res]
         Started: [ pldbsv01-cr ]
         Stopped: [ pldbsv02-cr ]

    PCSD Status:
      pldbsv01-cr: Online
      pldbsv02-cr: Online

    Daemon Status:
      corosync: active/enabled
      pacemaker: active/enabled
      pcsd: active/enabled

Depois eu adiciono o sybase lsb reesource call ase157_res

[root@pldbsv01 ~]# pcs resource create ase157_res lsb:sybase op monitor interval=30s
[root@pldbsv01 ~]# pcs constraint order start gfs2sybasedata_res-clone then ase157_res
    Adding gfs2sybasedata_res-clone ase157_res (kind: Mandatory) (Options: first-action=start then-action=start)

[root@pldbsv01 ~]# pcs constraint colocation add ase157_res with gfs2sybasedata_res-clone
[root@pldbsv01 ~]# pcs status
Cluster name: PLDBSV_CLUSTER
Last updated: Wed Apr 20 12:22:51 2016      Last change: Wed Apr 20 12:20:18 2016 by root via cibadmin on pldbsv01-cr
Stack: corosync
Current DC: pldbsv01-cr (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 10 resources configured

Online: [ pldbsv01-cr pldbsv02-cr ]

Full list of resources:

 Resource Group: PLDBSV_RESOURCE
     PLDBSV_VIP (ocf::heartbeat:IPaddr2):   Started pldbsv02-cr
 idrac-pldbsv01 (stonith:fence_ipmilan):    Started pldbsv01-cr
 idrac-pldbsv02 (stonith:fence_ipmilan):    Started pldbsv01-cr
 Clone Set: dlm-clone [dlm]
     Started: [ pldbsv02-cr ]
     Stopped: [ pldbsv01-cr ]
 Clone Set: clvmd-clone [clvmd]
     Started: [ pldbsv02-cr ]
     Stopped: [ pldbsv01-cr ]
 Clone Set: gfs2sybasedata_res-clone [gfs2sybasedata_res]
     Started: [ pldbsv02-cr ]
     Stopped: [ pldbsv01-cr ]
 ase157_res (lsb:sybase):   Stopped

Failed Actions:
* ase157_res_start_0 on pldbsv02-cr 'unknown error' (1): call=41, status=Timed Out, exitreason='none',
    last-rc-change='Wed Apr 20 12:21:35 2016', queued=0ms, exec=20002ms
* ase157_res_start_0 on pldbsv01-cr 'unknown error' (1): call=45, status=Timed Out, exitreason='none',
    last-rc-change='Wed Apr 20 12:19:56 2016', queued=0ms, exec=20002ms


PCSD Status:
  pldbsv01-cr: Online
  pldbsv02-cr: Online

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

Erro

Ações com falha:

  • ase157_res_start_0 em pldbsv02-cr 'erro desconhecido' (1): call = 41, status = Timed Out, exitreason = 'none', last-rc-change = 'Qua Abr 20 12:21:35 2016', na fila = 0ms, exec = 20002ms
  • ase157_res_start_0 em pldbsv01-cr 'erro desconhecido' (1): call = 45, status = Timed Out, exitreason = 'none', last-rc-change = 'Qua Abr 20 12:19:56 2016', na fila = 0ms, exec = 20002ms

Então, segui os passos detalhados em Apêndice G. Script de Iniciação LSB Conformidade para verificar meu script sybase.

Quando testei o item 5 dessas etapas, meu resultado impresso na saída: 0

Status (stopped):

/etc/init.d/some_service status ; echo "result: $?"

Minhas perguntas:

  • O script aceitou o comando?
  • O script indicou que o serviço não estava sendo executado?
  • O comando imprimiu o resultado: 3 (além de sua saída usual)?
  • Como posso corrigir isso?
#!/bin/sh
#
# Startup script for Sybase ASE
# Description: Service script for starting/stopping/monitoring \
#              Sybase Adaptive Server on: \
#                            Red Hat Enterprise Linux 6 \
# Release date 2015-08-11
# Version 1 
# Processname: dataserver
# (1) Before running this script, we assume that user has installed
#     Sybase ASE 15.0.2 or higher version on the machine.
# (2) This script should be put under /etc/init.d. Its owner should be "root" with 
#     execution permission.
# (3) You must define the variables "SYBASE" "SERVER" BACKUPSERVER"
# (4) You can change Adaptive Server login name and password in line 96,
#     defaults are "sa" and "sybase"



SYBASE=/opt/sybase
SERVER=PLDBSV
BACKUPSERVER=PLDBSV_BS

# Source environment variables.
. $SYBASE/SYBASE.sh


# Find the name of the script
NAME='basename $0'


# For SELinux we need to use 'runuser' not 'su'
if [ -x /sbin/runuser ]
then
  SU=runuser
else
  SU=su
fi


# Start sybase Adaptive Server and Backup Server
start() {
  SYBASE_ASE_START=$"Starting ${NAME} Adaptive Server: "
  $SU sybase -c ". $SYBASE/SYBASE.sh; $SYBASE/$SYBASE_ASE/install/startserver \
-f $SYBASE/$SYBASE_ASE/install/RUN_${SERVER} > /dev/null"
  ret=$? 
  if [ $ret -eq 0 ]
  then    
      echo -n "$SYBASE_ASE_START                    ["
      echo -n -e "3[32m Success 3[0m"  
      echo "]"
  else
      echo -n "$SYBASE_ASE_START           ["
      echo -n -e "3[31m Failed 3[0m"
      echo "]"
                exit 1
  fi

  for ((i=1; i<31; i++))
  do
        sleep 1
        echo "waitting $i sec to prepare Backup Server!"
  done

  SYBASE_BS_START=$"Starting ${NAME} Backup Server: "
  $SU sybase -c ". $SYBASE/SYBASE.sh; $SYBASE/$SYBASE_ASE/install/startserver \
-f $SYBASE/$SYBASE_ASE/install/RUN_${BACKUPSERVER} > /dev/null"
  ret=$? 
  if [ $ret -eq 0 ]
  then
      echo -n "$SYBASE_BS_START                    ["
      echo -n -e "3[32m Success 3[0m"
      echo "]"
  else
      echo -n "$SYBASE_BS_START                    ["
      echo -n -e "3[31m Failed 3[0m"
      echo "]"
                exit 1
  fi  
}

#stop sybase adaptive server and backup server
stop() {
  SYBASE_BS_STOP=$"Stopping ${NAME} Backup Server"
  pid=$(pidof backupserver)
  if [ $pid > 0 ]
  then
  $SU root -c "kill -9 $pid > /dev/null"
      echo -n "$SYBASE_BS_STOP                     ["
      echo -n -e "3[32m Success 3[0m"
      echo "]"
  else
      echo -n "$SYBASE_BS_STOP                     ["
      echo -n -e "3[31m Failed 3[0m"
      echo "]"
  fi

  SYBASE_ASE_STOP=$"Stopping ${NAME} Adaptive Server: "
  $SU sybase -c ". $SYBASE/SYBASE.sh; isql -S $SERVER -U sa -P sybase < \
$SYBASE/$SYBASE_ASE/upgrade/shutdown.sql > /dev/null"
  ret=$?
  if [ $ret -eq 0 ]
  then
      echo -n "$SYBASE_ASE_STOP            ["
      echo -n -e "3[32m Success 3[0m"
      echo "]"
  else
      echo -n "$SYBASE_ASE_STOP            ["
      echo -n -e "3[31m Failed 3[0m"
      echo "]"
      exit 1
  fi
}

restart() {
  stop
  start
}

# Check Sybase Adaptive Server and Backup Server status
status() {
  dataserver=$(pidof dataserver)
  backupserver=$(pidof backupserver)
  if [ -n "$dataserver" ]; then
      echo "sybase Adaptive Server is running!" && exit 0 || exit $?
  else
      echo "sybase Adaptive Server is stopped!"

  fi

  if [ -n "$backupserver" ]; then     
      echo "sybase Backup Server is running!" && exit 0 || exit $?
  else
      echo "sybase Backup Server is stopped!"
      exit 1
  fi
}

case "$1" in
  start)
      start
      ;;
  stop)
      stop
      ;;
  restart)
      restart
      ;;
  status) 
      status
      ;;
  *)
      echo $"Usage: $0 {start|stop|restart|status}"
      exit 1
esac

O script é aprovado Compatível com LSB , mas não funciona!

#!/bin/sh
#
# Startup script for Sybase ASE
# Description: Service script for starting/stopping/monitoring \
#              Sybase Adaptive Server on: \
#                            Red Hat Enterprise Linux 6 \
# Release date 2015-08-11
# Version 1 
# Processname: dataserver
# (1) Before running this script, we assume that user has installed
#     Sybase ASE 15.0.2 or higher version on the machine.
# (2) This script should be put under /etc/init.d. Its owner should be "root" with 
#     execution permission.
# (3) You must define the variables "SYBASE" "SERVER" BACKUPSERVER"
# (4) You can change Adaptive Server login name and password in line 96,
#     defaults are "sa" and "sybase"



SYBASE=/opt/sybase
SERVER=PLDBSV
BACKUPSERVER=PLDBSV_BS

# Source environment variables.
. $SYBASE/SYBASE.sh


# Find the name of the script
NAME='basename $0'


# For SELinux we need to use 'runuser' not 'su'
if [ -x /sbin/runuser ]
then
    SU=runuser
else
    SU=su
fi


# Start sybase Adaptive Server and Backup Server
start() {
    SYBASE_ASE_START=$"Starting ${NAME} Adaptive Server: "
    $SU sybase -c ". $SYBASE/SYBASE.sh; $SYBASE/$SYBASE_ASE/install/startserver \
-f $SYBASE/$SYBASE_ASE/install/RUN_${SERVER} > /dev/null"
    ret=$? 
    if [ $ret -eq 0 ]
    then    
        echo -n "$SYBASE_ASE_START                    ["
        echo -n -e "3[32m Success 3[0m"  
        echo "]"
    else
        echo -n "$SYBASE_ASE_START           ["
        echo -n -e "3[31m Failed 3[0m"
        echo "]"
                exit 1
    fi

    for ((i=1; i<31; i++))
    do
        sleep 1
        echo "waitting $i sec to prepare Backup Server!"
    done

    SYBASE_BS_START=$"Starting ${NAME} Backup Server: "
    $SU sybase -c ". $SYBASE/SYBASE.sh; $SYBASE/$SYBASE_ASE/install/startserver \
-f $SYBASE/$SYBASE_ASE/install/RUN_${BACKUPSERVER} > /dev/null"
    ret=$? 
    if [ $ret -eq 0 ]
    then
        echo -n "$SYBASE_BS_START                    ["
        echo -n -e "3[32m Success 3[0m"
        echo "]"
    else
        echo -n "$SYBASE_BS_START                    ["
        echo -n -e "3[31m Failed 3[0m"
        echo "]"
                exit 1
    fi  
}

#stop sybase adaptive server and backup server
stop() {
    SYBASE_BS_STOP=$"Stopping ${NAME} Backup Server"
    pid=$(pidof backupserver)
    if [ $pid > 0 ]
    then
    $SU root -c "kill -9 $pid > /dev/null"
        echo -n "$SYBASE_BS_STOP                     ["
        echo -n -e "3[32m Success 3[0m"
        echo "]"
    else
        echo -n "$SYBASE_BS_STOP                     ["
        echo -n -e "3[31m Failed 3[0m"
        echo "]"
    fi

    SYBASE_ASE_STOP=$"Stopping ${NAME} Adaptive Server: "
    $SU sybase -c ". $SYBASE/SYBASE.sh; isql -S $SERVER -U sa -P sybase < \
$SYBASE/$SYBASE_ASE/upgrade/shutdown.sql > /dev/null"
    ret=$?
    if [ $ret -eq 0 ]
    then
        echo -n "$SYBASE_ASE_STOP            ["
        echo -n -e "3[32m Success 3[0m"
        echo "]"
    else
        echo -n "$SYBASE_ASE_STOP            ["
        echo -n -e "3[31m Failed 3[0m"
        echo "]"
        exit 0
    fi
}

restart() {
    stop
    start
}

# Check Sybase Adaptive Server and Backup Server status
status() {
    dataserver=$(pidof dataserver)
    backupserver=$(pidof backupserver)
    if [ -n "$dataserver" ]; then
        echo "sybase Adaptive Server is running!"
    else
        echo "sybase Adaptive Server is stopped!" 

    fi

    if [ -n "$backupserver" ]; then     
        echo "sybase Backup Server is running!" && exit 0 || exit $?
    else
        echo "sybase Backup Server is stopped!"
        exit 3
    fi
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    status) 
        status
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 1
esac

Você tem alguma sugestão de como resolver o problema?

    
por Arthur Cheng 20.04.2016 / 09:33

2 respostas

1

Os resultados de pcs resource show ase157_res são op start timeout="20s" ?

Como são necessários 30 segundos para "/etc/init.d/that_script start", timeout= deve ser maior que isso.

    
por 21.04.2016 / 18:49
0

Você já tentou adicionar um exit 3 na função de status do script para torná-lo compatível?

Algo como isso deve funcionar:

# Check Sybase Adaptive Server and Backup Server status
status() {
  dataserver=$(pidof dataserver)
  backupserver=$(pidof backupserver)
  if [ -n "$dataserver" ]; then
      echo "sybase Adaptive Server is running!" && exit 0 || exit $?
  else
      echo "sybase Adaptive Server is stopped!"
      exit 3
  fi

  if [ -n "$backupserver" ]; then     
      echo "sybase Backup Server is running!" && exit 0 || exit $?
  else
      echo "sybase Backup Server is stopped!"
      exit 1
  fi
}

EDIT0 : A ação com falha foi para a operação de início. Quando estou tentando depurar o que está falhando em um script, começo a lançar comandos "logger" para poder depurar onde / por que a falha está ocorrendo observando os logs.

Algo parecido com isto:

# Start sybase Adaptive Server and Backup Server
start() {
  logger "DEBUG: ENTERED START FUNCTION
  SYBASE_ASE_START=$"Starting ${NAME} Adaptive Server: "
  $SU sybase -c ". $SYBASE/SYBASE.sh; $SYBASE/$SYBASE_ASE/install/startserver \
-f $SYBASE/$SYBASE_ASE/install/RUN_${SERVER} > /dev/null"
  ret=$?
  logger "DEBUG: RETURN CODE: $ret"
  logger "DEBUG: CHECK THE VARS:"
  logger "DEBUG: \$SU=$SU"
  logger "DEBUG: \$SYBASE/SYBASE.sh=$SYBASE/SYBASE.sh"
  logger "DEBUG: \$SYBASE_ASE=$SYBASE_ASE"
  logger "DEBUG: \${SERVER}=${SERVER}"
  if [ $ret -eq 0 ]
  then
      echo -n "$SYBASE_ASE_START                    ["
      echo -n -e "3[32m Success 3[0m"
      echo "]"
      logger "DEBUG: We're about to leave \$ret -eq 0"
  else
      echo -n "$SYBASE_ASE_START           ["
      echo -n -e "3[31m Failed 3[0m"
      echo "]"
      logger "DEBUG: We're about to leave \$ret -ne 0"
                exit 1
  fi

Em seguida, dê uma olhada nos logs (/ var / log / messages ou / var / log / syslog) e procure por suas mensagens "DEBUG" para determinar onde no script as coisas estão falhando.

    
por 21.04.2016 / 01:11