diff --git a/defaults.inc b/defaults.inc index e5adae0a..538ca306 100755 --- a/defaults.inc +++ b/defaults.inc @@ -1,6 +1,6 @@ #!/usr/bin/env bash -VERS='4.6.20-04302023' +VERS='4.6.21-04302023' #NODETYPES=WEB,LB NODETYPES=MYSQL,LB,WEB,NC,WPD,LPD,MM,PW diff --git a/inc/status.inc b/inc/status.inc index de2006f3..08bcad77 100755 --- a/inc/status.inc +++ b/inc/status.inc @@ -412,101 +412,74 @@ STATUS(){ echo -e "${idsST[Bold]}"; DIVIDER echo -e "${idsCL[Yellow]} Replication Status Between the Primary and Secondary Nodes${idsCL[Default]}" DIVIDER; echo -e "${idsST[Reset]}" + if [ "${ST_ACTION}" != "report" ]; then + msg="Starting processes to collect/monitor replication status" + c=0; cw=30; spc=''; spc1=${cw}-${#msg}; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + else + spc=' ' + fi + echo -e " ${idsCL[LightCyan]}${msg}${spc}: " fi - - for NTYPE in "${NODE_TYPES[@]}"; do PH=${NTYPE}_HOSTS[0] PH_CMD="ssh root@${!PH}" var=${NTYPE}_REPL_CHECK[@] if [ ! -z ${!var+x} ]; then - nid=1 var=${NTYPE}_HOSTS[@] for nip in "${!var}"; do if [[ $(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) != *"${nip}"* ]] && [ "${nip}" != "${!PH}" ]; then if [ ! -f ${FOLDER}/${!PH}.down ] && [ ! -f ${FOLDER}/${nip}.down ]; then var2=${NTYPE}_REPL_CHECK[@] for rcheck in "${!var2}"; do - if [ "${1}" != "check" ]; then - timeout=`date --date='1 minutes' +%s` - else - timeout=`date --date='2 minutes' +%s` - fi - checked=false - until [ "${checked}" == "" ]; do - if [ "${PH_CMD}" == "" ]; then - ssh -q root@${nip} [[ -f ${REPL_CHECKS[${rcheck}]}/test.repl ]] && checked=`ssh root@${nip} "cat ${REPL_CHECKS[${rcheck}]}/test.repl" | diff - ${REPL_CHECKS[${rcheck}]}/test.repl` - else - ssh -q root@${nip} [[ -f ${REPL_CHECKS[${rcheck}]}/test.repl ]] && checked="`${PH_CMD} \"ssh root@${nip} \"cat ${REPL_CHECKS[${rcheck}]}/test.repl\" | diff - ${REPL_CHECKS[${rcheck}]}/test.repl\"`" - fi - [ "`date +%s`" -gt "${timeout}" ] && timeout=true && break - done - [ "${timeout}" == "true" ] && touch ${TMPFOLDER}/repl.${rcheck}.${nip}.timeout || touch ${TMPFOLDER}/repl.${rcheck}.${nip}.good + REPLCHECK "${rcheck}" "${nip}" "${PH_CMD}" "${ST_ACTION}" & >/dev/null 2>&1 done - fi fi - nid=`expr $nid + 1` done fi done + [ "${ST_ACTION}" != "check" ] && echo -e "${idsCL[Green]}Done${idsCL[Default]}" - - - # replcheckstart=`date +%s` - # echo "$(date) - STARTING REPL CHECK - $(SHOW_TIME $(expr `date +%s` - $replstart) s)" >> ${FOLDER}/log.repl for NTYPE in "${NODE_TYPES[@]}"; do PH=${NTYPE}_HOSTS[0] PH_CMD="ssh root@${!PH}" var=${NTYPE}_REPL_CHECK[@] if [ ! -z ${!var+x} ]; then - nid=1 - var=${NTYPE}_HOSTS[@] for nip in "${!var}"; do - - # echo "CHECK: ${NTYPE} - ${nip}" - if [[ $(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) != *"${nip}"* ]] && [ "${nip}" != "${!PH}" ]; then if [ "${ST_ACTION}" != "check" ]; then echo -e " ${idsCL[LightCyan]}${NM_NODETYPES[$NTYPE]}-Node1 (${!PH}) <--> ${idsST[Bold]}${NM_NODETYPES[$NTYPE]}-Node${nid} (${nip})${idsST[Reset]}${idsCL[Default]}" DIVIDER false green fi - - # checkhost=$(CHECK_HOST ${nip}) - #if [ "${checkhost}" != "false" ]; then if [ ! -f ${FOLDER}/${!PH}.down ] && [ ! -f ${FOLDER}/${nip}.down ]; then var2=${NTYPE}_REPL_CHECK[@] - # timeout=`date --date='20 seconds' +%s` for rcheck in "${!var2}"; do if [ "${ST_ACTION}" != "check" ]; then - [ "${ST_ACTION}" != "report" ] && c=0; cw=30; spc=''; spc1=${cw}-${#REPL_DESC[${rcheck}]}; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done || spc=' ' + if [ "${ST_ACTION}" != "report" ]; then + c=0; cw=30; spc=''; spc1=${cw}-${#REPL_DESC[${rcheck}]}; until [ $c = ${spc1} ]; do spc="${spc} "; c=`expr $c + 1`; done + else + spc=' ' + fi echo -en " ${REPL_DESC[${rcheck}]}${spc}: " - timeout=`date --date='2 minutes' +%s` - else - timeout=`date --date='2 minutes' +%s` + fi - checked=false - until [ "${checked}" = "" ]; do - if [ "${PH_CMD}" = "" ]; then - ssh -q root@${nip} [[ -f ${REPL_CHECKS[${rcheck}]}/test.repl ]] && checked=`ssh root@${nip} "cat ${REPL_CHECKS[${rcheck}]}/test.repl" | diff - ${REPL_CHECKS[${rcheck}]}/test.repl` - else - ssh -q root@${nip} [[ -f ${REPL_CHECKS[${rcheck}]}/test.repl ]] && checked="`${PH_CMD} \"ssh root@${nip} \"cat ${REPL_CHECKS[${rcheck}]}/test.repl\" | diff - ${REPL_CHECKS[${rcheck}]}/test.repl\"`" - fi - if [ "`date +%s`" -gt "${timeout}" ]; then - timeout=true - break + checked="" + until [ "${checked}" != "" ]; do + if [ -f ${TMPFOLDER}/repl.${rcheck}.${nip}.good ]; then + checked=good + elif [ -f ${TMPFOLDER}/repl.${rcheck}.${nip}.timeout ]; then + checked=timeout fi done - if [ "${timeout}" = "true" ]; then + if [ "${checked}" == "timeout" ]; then [ "${ST_ACTION}" != "check" ] && echo -e "${idsCL[Red]}Timeout${idsCL[Default]}" if [ ! -f ${FOLDER}/${nip}-${rcheck}.down ]; then touch ${FOLDER}/${nip}-${rcheck}.down SENDNOTICE "Repl-Timeout-'${NM_NODETYPES[$NTYPE]}-Node${nid}'" "${REPL_DESC[${rcheck}]} (${REPL_CHECKS[${rcheck}]})" 1 echo "$(date) - ${nip} - ${NM_NODETYPES[$NTYPE]}-Node${nid} - (${REPL_DESC[${rcheck}]}) Replicated folder timeout, it is not syncing" >> ${LOGFILE} fi - # echo "$(date) - TIMEOUT - ${rcheck} - ${rrmsg}" >> ${FOLDER}/log.repl else [ "${ST_ACTION}" != "check" ] && echo -e "${idsCL[Green]}Good${idsCL[Default]}" if [ -f ${FOLDER}/${nip}-${rcheck}.down ]; then @@ -514,7 +487,6 @@ STATUS(){ SENDNOTICE "Repl-Timeout-'${NM_NODETYPES[$NTYPE]}-Node${nid}'" "Replicated folder is back up!\n${REPL_DESC[${rcheck}]} (${REPL_CHECKS[${rcheck}]})" echo "$(date) - ${nip} - ${NM_NODETYPES[$NTYPE]}-Node${nid} - (${REPL_DESC[${rcheck}]}) Replicated folder is back up" >> ${LOGFILE} fi - # echo "$(date) - SYNCED - ${rcheck} - ${rrmsg}" >> ${FOLDER}/log.repl fi done else @@ -525,7 +497,6 @@ STATUS(){ fi if [ "${ST_ACTION}" != "check" ]; then echo; fi fi - nid=`expr $nid + 1` done fi done @@ -697,10 +668,10 @@ STATUS(){ REPLCHECK(){ - nip= - rcheck= - PH_CMD= - if [ "${1}" != "check" ]; then + rcheck=${1} + nip=${2} + PH_CMD=${3} + if [ "${4}" != "check" ]; then timeout=`date --date='1 minutes' +%s` else timeout=`date --date='2 minutes' +%s`