A máme tu poslední část nastavení load balanceru. Nejdřív jsme udělali jednoduchý balancer pro dva servery. Pak jsme z něj udělali cluster, abychom nepřišli o služby v případě,
že nám jeden balancer nefunguje. A teď si nastavíme, jak kontrolovat, jestli na Exchange serverech běží služby a máme tam teda z balanceru posílat vůbec požadavky. Protože asi nemá
smysl, chtít se připojovat na server, na kterém neběží IIS.
Budeme kontrolovat pouze to jestli nám odpoví služba. A to pouze IIS a SMTP. Dělá se to pomocí scriptů, kterými se pokouším připojit a kontroluju, jestli se ozvalo, co mělo.
Tahle část howto byla nejtěžší protože jednak nejsem programátor a napsat něco v linuxu je pro mě už úplně scifi. Takže uvedené příklady rozhodně neberte jako něco, co byste měli
nasazovat ve firmě. Je to spíš takový příklad, jak to asi funguje.
Začneme u IIS. Budeme se připojovat k OWA, protože tam máme zapnutou form based authentizaci, tedy se nám po připojení vrací nějaký webový formulář a my víme, co na něm asi je.
Proto víme, co hledat. Takže buď se připojte na konzoli vašeho linuxu nebo si stáhněte putty a připojte se pomocí SSH. Pak si vytvoříme soubor owa_check.sh, který umístíme do
/etc/sysconfig/ha/. Na tom umístění až tak nesejde, ale chci mít všechny věci, které se týkají balanceru pohromadě a v tomhle adresáří je umístěna konfigurace. Script bude vypadat
takto:
#!/bin/bash
content=$(wget -q -O - -nc --no-check-certificate https://$1:$2/owa)
if [[ $content == *"Outlook Web App"* ]]; then
echo "OK"
else
echo "FAILURE"
fi
exit 0
Co to vlastně znamená. Programem wget se připojíme na adresu, kterou dostane v proměnné $1 na port $2. Obsah se uloží do proměnné $content. A my v ní pak hledáme text Outlook Web
App. Pokud najdeme, vracíme OK, pokud ne, tak vracíme FAILURE. Ještě nastavíme vlastnictví souboru a práva. Opět upozorňuju, že neručím za to, že to takhle musí být nastaveno. Ale
mám odzkoušeno, že to funguje. Pošleme následující dva příkazy:
chown root:piranha /etc/sysconfig/ha/owa_check.sh
chmod 754 /etc/sysconfig/ha/owa_check.sh
Než se pustíte do dalšího, tak si script spusťte ručně. Musí vrátit OK. A musíme ho spustit s dvěma parametry. Prvním je IP adresa serveru a druhým port. V mém případě bych teda
volal /etc/sysconfig/ha/owa_check.sh 192.168.2.44 443 a /etc/sysconfig/ha/owa_check.sh 192.168.2.46 443. Funguje? Jestli ne, tak vám něco nefunguje a nebo jste se někde překlepli nebo se vám špatně zkopírovaly nějaké
znaky. Teď si pustíme piranha-gui v prohlížeči a nastavíme si, že se má script použít. V mém případě teda otevřu http://192.168.2.61:3636 a příhlásím se. Kliknu na virtual servers.
Pak zaškrtnu políčko u Exchange-443 a kliknu dole na tlačítko EDIT.
Na další obrazovce kliknu na MONITORING SCRIPTS. Dostaneme se do obrazovky, kde napíšeme, jak se má spouštět náš script. Do políčka Sending Program dáme:
/etc/sysconfig/ha/owa_check.sh %h %p
Do políčka Expect dáme:
OK
Bude to vypadat takto:
A klikneme na Accept. Teď se vrátíme do linuxové konzole a restartujeme službu pulse.
service pulse restart
Chvíli počkáme a pak se podíváme do logu, jak to dopadlo. Spustíme příkaz:
cat /var/log/messages
Já musím hledat tyto řádky:
Aug 18 16:40:47 localhost nanny[43974]: [ active ] making 192.168.2.46:443 available
Aug 18 16:40:47 localhost nanny[43973]: [ active ] making 192.168.2.44:443 available
To znamená, že je všechno v pořádku a servery běží. Pokud by bylo něco špatně, tak by se tam objevilo něco podobného:
Aug 18 16:40:47 localhost nanny[43999]: Trouble. Received results are not what we expected from (192.168.2.44:443)
Někdy je potřeba chvíli počkat a všechno se chytne, takže příkaz cat /var/log/messages zopakujte a podívejte se, jestli už nejsou servery aktivní. O úspěchu či neúspěchu se taky
přesvědčíte ve web gui, pokud kliknete na CONTROL/MONITORING.
Pokud vidíte aktivní routy, tak je všechno OK a můžete stejné nastavení udělat pro druhý balancer.
A teď se pustíme do monitorování SMTP. To bude trošku těžší a budeme k tomu potřebovat jeden linuxový nástroj, který nemáme v minimální konfiguraci nainstalovaný. Jmenuje se expect.
A kromě něj budeme potřebovat klasický telnet, abychom se mohli připojit na port 25 a otestovat si SMTP spojení. Nainstalujeme je spuštěním příkazů:
yum install expect
yum install telnet
Expect nám umožní, abychom z shellu vytvořili telnetem spojení a mohli posílat příkazy do toho otevřeného spojení podle toho, co se nám vrátí. Budeme potřebovat dva scripty.
První se jmenuje smtp_check.sh a bude obsahovat tohle:
/etc/sysconfig/ha/smtp.exp $1 > /tmp/smtp_result.txt
if grep -q "Microsoft ESMTP MAIL Service ready" /tmp/smtp_result.txt
then
echo "OK"
else
echo "FAILED"
fi
rm -f /tmp/smtp_result.txt
exit 0
A druhý se bude jmenovat smtp.exp a bude obsahovat tohle:
#!/usr/bin/expect
spawn telnet [lindex $argv 0] 25
expect "*Microsoft ESMTP MAIL*"
send quit\r
interact
Teď nastavíme oprávnění a vlastnictví k souborům:
chown root:piranha /etc/sysconfig/ha/smtp*
chmod 754 /etc/sysconfig/ha/smtp*
A opět si zkusíme spustit script ručně. Tentokrát jen s jedním parametrem, protože port 25 tam mám natvrdo. Budeme spouštět /etc/sysconfig/ha/smtp_check.sh 192.168.2.44 a
/etc/sysconfig/ha/smtp_check.sh 192.168.2.46. Musí vrátit OK. Pokud ne, tak si zkuste přímo telnet na port 25 a pošlete si mail ručně. Tam se nejlíp projeví chyba. No a zbytek
už je stejný jako v předchozím případě. Otevřete web gui piranhy, najdete monitoring pro SMTP, napíšete cestu ke scriptu a parametr. Napíšete, jakou očekáváte odpověď.
Restartujete službu pulse a zkontrolujete /var/log/messages. A samozřejmě můžeme zkontrolovat, jak to vypadá ve web gui, jestli jsou routy vytvořeny.
A podobným způsobem můžete monitorovat cokoliv, pokud víte, co máte očekávat a umíte to zpracovat.
Další články o load balanceru:
|