web server watchdog in resen problem backup serverja - Was: [LUGOS-PROG] Backup streznik na drugem omrezju

Rok Krulec Rok.Krulec at fpp.edu
Wed Nov 7 01:41:38 CET 2001


Zivijo,

tcpip at email.si je imel zelo zanimiv problem, ki sem ga resil kar v bashu
Prilagam bash programcke, ki niso dolgi in sem jih danes skomponiral.

Vsebina:
watchdog.www.sh - program, ki v intervalih preverja ce je dolocena
                  datoteka na web serverju dosegljiva.
watchdog.www.sh.down - program, ki se izvrsi, ce datoteka ni dosegljiva
watchdog.www.sh.up   - program, ki se izvrsi, ko datoteka postane spet dosegljiva

Prakticna uporaba:
1.) notify, da je dolocena link/masina/apache down
2.) v primeru gospoda tcpip at email.si se, ko dolocen server ni dosegljiv
    prizge drugo BIND konfiguracijo, ki kaze na backup streznik s cimer
    lahko dosezemo skoraj 100% dostopnopnost spletnih strani, ce imamo
    naprimer en primarni web server, enega backup pa na fizicno drugem
    omrezju. Backup server preverja primarnega in ko ta umre vskoci na
    pomoc tako da DNS querye, ki imajo npr. TTL=60 preusmeri nase.
    Backup server ima naprimer rsyncane Web podatke iz primarnega.

Beri thread: [LUGOS-PROG] Backup streznik na drugem omrezju

Skripte sem pravkar skomponiral, zato se niso precej stestirane. Je pa
prav fletno videti kako ta zadevscina deluje v praxi.

Spomocjo PHP in SNMP dodatka k PHPju bi lahko clovek naredil pravi DNS 
load balancing kar v bashu ali pa kaksen GEO DNS :} Ko bom potreboval,
dobite tudi to.

Rok Krulec

P.S.: Ce se da komu gledat kodo, mi jo lahko tudi komentira

Portoroz, 07.Nov 2001 @ 01:19 CET
Public GnuPG key @ http://rok.fpp.edu/pgp.key
-------------- next part --------------
#!/bin/bash
#
# Composed by <Rok.Krulec at codeartists.com> 20011107 at 0020
#
# Monitor URL on HOSTNAME, when DEAD, run watchdog.www.down.sh and vice versa with watchdog.www.up.sh
# Warning: URL must contain case sensitive HOSTNAME string
# Example: watchdog.www.sh TNT.kelt.si http://www.kelt.si/watchdog.html &
#
# Prerequisites: lynx
#

if [ -z "${2}" ]; then
   echo "Usage: `basename $0` HOSTNAME URL"
   exit 10
fi

# HTML check interval in seconds
CHECK_INTERVAL="60"

# HTTP connect timeout in seconds
HTTP_TIMEOUT="5"

# Untouchable stuff below this line
WATCHDOG_HOSTNAME="${1}"
WATCHDOG_URL="${2}"

LYNX_EXIT=`lynx ${WATCHDOG_URL} -dump -connect_timeout ${CONNECT_TIMEOUT}|grep ${WATCHDOG_HOSTNAME}`
if [ -z "${LYNX_EXIT}" ]; then
   logger "`hostname -f` web watchdog: ${WATCHDOG_HOSTNAME} DIED. Starting ${0}.down !"
   ${0}.down ${WATCHDOG_HOSTNAME} ${WATCHDOG_URL}
fi

while [ -z "${LYNX_EXIT}" ]; do
  sleep ${CHECK_INTERVAL}
  LYNX_EXIT=`lynx ${WATCHDOG_URL} -dump -connect_timeout ${CONNECT_TIMEOUT}|grep ${WATCHDOG_HOSTNAME}`
  if [ -n "${LYNX_EXIT}" ]; then
     logger "`hostname -f` web watchdog: ${WATCHDOG_HOSTNAME} ALIVE. Starting ${0}.up !"
     ${0}.up ${WATCHDOG_HOSTNAME} ${WATCHDOG_URL}
  fi
done

sleep ${CHECK_INTERVAL}
${0} "${WATCHDOG_HOSTNAME}" "${WATCHDOG_URL}" &
-------------- next part --------------
#!/bin/bash
#
# Composed by <Rok.Krulec at codeartists.com> 20011107 at 0022
#

# Location of the BIND config files
NAMED_CONF_NORMAL="/var/named/kelt.si~hosts.normal"
NAMED_CONF_BACKUP="/var/named/kelt.si~hosts.backup"
NAMED_CONF_CURRENT="/var/named/kelt.si~hosts"


ln -sf ${NAMED_CONF_NORMAL} ${NAMED_CONF_CURRENT}
killall -HUP named

# /opt/qmail_goodies/line2sms.sh 38631 633834 "`hostname` watchdog: ${1} ALIVE. `hostname` FREE."
-------------- next part --------------
#!/bin/bash
#
# Composed by <Rok.Krulec at codeartists.com> 20011107 at 0023
#

# Location of the BIND config files
NAMED_CONF_NORMAL="/var/named/kelt.si~hosts.normal"
NAMED_CONF_BACKUP="/var/named/kelt.si~hosts.backup"
NAMED_CONF_CURRENT="/var/named/kelt.si~hosts"

ln -sf ${NAMED_CONF_BACKUP} ${NAMED_CONF_CURRENT}
killall -HUP named

# /opt/qmail_goodies/line2sms.sh 38631 633834 "`hostname` watchdog: ${1} DEAD. `hostname` BACKUP."


More information about the lugos-list mailing list