pacemaker corosynce lsb resource script( Sybase Database ASE Server and Backup Server)

5,094

The results of pcs resource show ase157_res is op start timeout="20s" ?

Since it takes 30 seconds to "/etc/init.d/that_script start", timeout= must be more than that.

Share:
5,094

Related videos on Youtube

Arthur Cheng
Author by

Arthur Cheng

Updated on September 18, 2022

Comments

  • Arthur Cheng
    Arthur Cheng almost 2 years

    I'm trying to create a lsb resource with pcs on rhel7.2 The "sybase" script is about Sybase Database ASE Server and Backup Server Startup & Stop & Restart $ status script

    Before

    [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
    

    After I add 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
    

    Error

    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

    So I followed the steps detailed in Appendix G. Init Script LSB Compliance to check my sybase script.

    When I tested item 5 of these steps, my output printed result:0

    Status (stopped):

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

    My questions:

    • Did the script accept the command?
    • Did the script indicate the service was not running?
    • Did the command print result: 3 (in addition to its usual output)?
    • How can I fix it?
    #!/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 "\033[32m Success \033[0m"  
          echo "]"
      else
          echo -n "$SYBASE_ASE_START           ["
          echo -n -e "\033[31m Failed \033[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 "\033[32m Success \033[0m"
          echo "]"
      else
          echo -n "$SYBASE_BS_START                    ["
          echo -n -e "\033[31m Failed \033[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 "\033[32m Success \033[0m"
          echo "]"
      else
          echo -n "$SYBASE_BS_STOP                     ["
          echo -n -e "\033[31m Failed \033[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 "\033[32m Success \033[0m"
          echo "]"
      else
          echo -n "$SYBASE_ASE_STOP            ["
          echo -n -e "\033[31m Failed \033[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
    

    The script is all pass LSB-compatible, but it doesn't work!

    #!/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 "\033[32m Success \033[0m"  
            echo "]"
        else
            echo -n "$SYBASE_ASE_START           ["
            echo -n -e "\033[31m Failed \033[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 "\033[32m Success \033[0m"
            echo "]"
        else
            echo -n "$SYBASE_BS_START                    ["
            echo -n -e "\033[31m Failed \033[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 "\033[32m Success \033[0m"
            echo "]"
        else
            echo -n "$SYBASE_BS_STOP                     ["
            echo -n -e "\033[31m Failed \033[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 "\033[32m Success \033[0m"
            echo "]"
        else
            echo -n "$SYBASE_ASE_STOP            ["
            echo -n -e "\033[31m Failed \033[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
    

    Do you have any suggestions how to solve the problem ?

  • Arthur Cheng
    Arthur Cheng about 8 years
    Thank you! I did it but it still doesn't works. Here is the script I changed.
  • Matt Kereczman
    Matt Kereczman about 8 years
    @ArthurCheng: I see that it was a start operation failure now. I added a bit on debugging the script that might help you find the problem.
  • Matt Kereczman
    Matt Kereczman about 8 years
    I missed the "Timed Out" bit. This is probably the correct solution.