Avatar billede herlock Nybegynder
24. juli 2003 - 16:10 Der er 4 kommentarer og
1 løsning

to cron or not to cron

Jeg er netop blevet færdig med en cluster løsning til overvågning af vores netværk med nagios indeholdende 2 noder som lever bag en virtuel IP (hvad ellers :)

Nu er der bare en lille hage som jeg lige havde overset...cronjobs...det er sådan at jeg har et par cronjobs kørende på den primære node som automatisk henter konfigurationer fra vores routers, switches osv. hver nat.

DET vil jeg ikke have kører på den sekundære...kun i tilfælde af failover så derfor...

Jeg mangler en løsning som kan aktivere cronjobs i tilfælde af at eksempelvis httpd bliver aktiv (det er en af de services som heartbeat starter ved failover til sekundær node) OG som fjerner/deaktiverer cronjobs når httpd bliver stoppet.

Jeg kunne godt file lidt rundt i /etc/init.d/httpd og sætte lidt under start og stop men for mit vedkommende vil det hurtigt blive et projekt og jeg håber derfor nogen her på eksperten er "stive" nok i start/stop scripts til at kunne lave mig en eksempel-krølle jeg kan bruge til scenariet.
Avatar billede skau Nybegynder
25. juli 2003 - 08:41 #1
Jeg har lavet et script der kaldes og som checker om man er på den "varme node" - hvis den er så afvikles det script/program der er argument. I eksemplet her hedder scriptet master.sh og det der skal afvikles er /appl/oracle/bin/cleanup_eao.sh

---------------------- start ---------------------------
#!/bin/ksh

#execute job only when running on master node
if [ $# -lt 1 ]
then
        echo "Usage: $0 <command> <arg 1> <arg ...> <arg n>"
        exit 1
fi

# Is it safe to execute
. /usr/opt/drift/lib/global.env
if [ "$MAINTENANCE" = "YES" ]; then
exit 1
fi

CMD="$1";
shift 1
case "`/usr/bin/hostname`" in
        msldb1) IP="10.255.90.12"
                ;;
        msldb2) IP="10.255.90.12"
                ;;
        msldb3) IP="10.255.90.76"
                ;;
        msldb4) IP="10.255.90.76"
                ;;
esac
if [ `/usr/sbin/ifconfig -a | grep -c "$IP"` -eq 1 ]
then
        $CMD $*
fi
-------------------------- stop ------------------------------

Cron entry:
0 7 * * 6 master.sh /appl/oracle/bin/cleanup_eao.sh
Avatar billede herlock Nybegynder
31. juli 2003 - 09:18 #2
Hmmm...har grublet lidt over denne skau, og som jeg læser det er det nødvendigt at jeg et sted definerer at aktiv heartbeat node har en system variabel ved navn MAINTENANCE som er alt andet en YES

Du er nok nød til at skære lidt i pappet :)

alternativt vil jeg cron'e på en lock fil i rel til de processor der bliver aktive på den aktive node og derefter kører et script, men det ser jo spændende ud og jeg vil gerne forstå det...og aflevere points :)
Avatar billede skau Nybegynder
31. juli 2003 - 12:53 #3
Grunen til at der er en maintenance variabel, er at jeg har mulighed for at sætte denne variabel til yes hvis jeg ikke vil have at scriptet skal køre (cron afvikler jo altid men nogen gange arbejder man måske på systemet så kan det have katastrofale følger at afvikle scriptet) (Det skal siges jeg benytter det på næsten alle clusterafhængige cronjobs, til overvågning kan det nok være ligemeget)
Det skal også siges, at jeg sourcer en environmentfil i starten (. /usr/opt/drift/lib/global.env) som læser maintenance statussen (jeg har så selv. scripts til at sætte den til YES eller NO.

Hvis alt dette er overkill i din situation kan du bare udelade følgende

# Is it safe to execute
. /usr/opt/drift/lib/global.env
if [ "$MAINTENANCE" = "YES" ]; then
exit 1
fi
Avatar billede skau Nybegynder
31. juli 2003 - 12:54 #4
Grunen = Grunden
Avatar billede herlock Nybegynder
31. juli 2003 - 13:52 #5
Tror du har vist mig lyset nu...bukker og takker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester