Controllare se un web server e’ attivo in presenza di proxy (es. Tomcat + Varnish)

Zenload stabilisce se un server presente in una sua farm è attivo verificando se risponde sulla porta configurata al momento della creazione della farm.

Se però tra webserver e Zenload è presente un ulteriore server che funge da proxy (ad esempio per url rewriting o caching), Zenload deve essere configurato per bilanciare le chiamate sulla porta su cui è in ascolto il proxy, e non più su quella del web server: in caso il web server andasse in crash, Zenload non se ne accorgerebbe perchè il proxy continuerebbe a funzionare.

Per risolvere questo problema è stato creato uno script da inserire in cron, che ogni 5 minuti controlla se il web server è attivo: in caso risulti non attivo, ferma il servizio del proxy, facendo in modo che anche Zenload si accorga del blocco.

Script di esempio

Questo script è stato utilizzato in un setup così composto:

  • 4 server Tomcat in ascolto sulla porta 8080
  • 4 proxy server Varnish in ascolto sulla porta 6081 che effettuano url rewriting verso i 4 Tomcat
  • Zenload configurato per bilanciare sulla porta 6081

Per controllare se Tomcat è attivo o meno viene utilizzato lo script di controllo check_tcp di Nagios

#!/usr/bin/perl

$now=`date +”%d-%m-%y alle %H:%M”`;

$to=’you@example.com’;

$H=`hostname -s`;

chomp ($H);

$from= ‘zenload@’ . $H . ‘.example.com’;

$subject=’Servizio Varnish Arrestato su host ‘ . $H . ‘ il ‘ . $now;

$fx=”/usr/lib64/nagios/plugins/check_tcp -H localhost -p 6081 -q q |grep Conne”;

$T=system “$fx”;

if ($T!=0) {

$ex=”/usr/lib64/nagios/plugins/check_tcp -H localhost -p 8080 -q q |grep Conne”;

$R=system “$ex”;

if ($R==0) {$D = `service varnish stop`;

open(MAIL, “|/usr/sbin/sendmail -t”);

## Mail Header

print MAIL “To: $to\n”;

print MAIL “From: $from\n”;

print MAIL “Subject: $subject\n\n”;

## Mail Body

print MAIL “Il servizio Varnish e\’ stato arrestato”;

close(MAIL);

}

}

© 2021 Catfish Blog | Tema: Storto di CrestaProject WordPress Themes.