rcron je výkonný nástroj, který pomáhá systémovým administrátorům při nastavování redundance úloh cron a převzetí služeb při selhání přes skupiny počítačů. RCRON zajišťuje, že úloha nainstalovaná na několika počítačích bude spuštěna vždy pouze na aktivním.
Fungování RCRON
Vysoká dostupnost pomocí RCRON (Jeden uzel bude označen jako Aktivní a Druhý uzel bude označen jako Pasivní), Na obou bude stejná konfigurace cronu, jediný rozdíl bude aktivní/pasivní stav v souboru.
Pro automatické přepínání aktivního/pasivního stavu budeme používat KEEPALIVED Daemon, který využívá signál keepalive pro komunikaci mezi 2 uzly. Pokud po odeslání signálu není přijata žádná odpověď, předpokládá se, že spojení nefunguje.
V tomto scénáři je jeden uzel označen jako KEEPALIVED master a druhý jako KEEPALIVED backup. Hlavní uzel bude udržovat stav rcron aktivní a záložní uzel bude udržovat stav rcron pasivní. Jakmile se hlavní uzel dostane dolů, vyšle signál s prioritou 0 do záložního uzlu, který se přepne a bude se chovat jako MASTER UZEL a postupně označí rcron jako aktivní, jakmile se hlavní uzel znovu objeví, záložní uzel. přepne do záložního režimu.
Kroky instalace a konfigurace RCRON na CentOS/RHEL
V mém scénáři mám dva linuxové stroje, jeden je primární a druhý je podřízený.
Krok 1 :Povolit předávání IP na obou uzlech. Upravte soubor /etc/sysctl.conf a proveďte níže uvedenou změnu
net.ipv4.ip_forward = 1 # sysctl -p ; Save the Changes without rebooting the Machine
Krok 2 :Přidejte úložiště EPEL na oba uzly.
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm
Krok 3 :Nainstalujte potřebné balíčky na Oba uzly.
# yum install subversion byacc flex gcc
Krok 4 :Pokud získáváte internet z proxy serveru, nastavte http_proxy pro svn.
# mkdir /root/.subversion/ # vi ~/.subversion/servers http-proxy-exceptions = *.example.com http-proxy-host = www.example.com http-proxy-port = 8080 http-compression = no
Krok 5 :Pokud získáváme připojení k internetu přímo, přeskočte nastavení proxy. Stáhněte si software rcron ze SVN.
# cd /root; # svn co http://rcron.googlecode.com/svn/trunk rcron # cd rcron/rcron # ./configure # make # make install
Krok 6 :Vytvořte adresář na obou uzlech.
# mkdir /etc/rcron/
############################################## For MASTER SERVER Setup RCRON.conf as follows ############################################## # vi /etc/rcron/rcron.conf # An arbitrary name cluster_name = cluster # A file containing either the word "active" or the word "passive" state_file = /var/run/rcron/state # The default state in case state_file can't be read #default_state = active syslog_facility = LOG_CRON syslog_level = LOG_INFO # We can tune jobs niceness/priorities nice_level = 19
+++++++++++++++++++++++++++++++++++++++++++++++ For BACKUP SERVER NODE , Setup RCRON.conf as follows +++++++++++++++++++++++++++++++++++++++++++++++ vi /etc/rcron/rcron.conf; # An arbitrary name cluster_name = cluster # A file containing either the word "active" or the word "passive" state_file = /var/run/rcron/state # The default state in case state_file can't be read #default_state = passive syslog_facility = LOG_CRON syslog_level = LOG_INFO # We can tune jobs niceness/priorities nice_level = 19
Na hlavním uzlu Spustit pod příkazy :
# mkdir /var/run/rcron # touch /var/run/rcron/state # echo "active" > /var/run/rcron/state
Na podřízeném uzlu spusťte níže uvedené příkazy :
# mkdir /var/run/rcron # touch /var/run/rcron/state # echo "passive" > /var/run/rcron/state
Krok 7 :Nyní nainstalujte balíček keepalive na oba uzly.
a) Stáhněte si nejnovější zdrojový tarball:
# cd /root # wget http://cgit.luffy.cx/keepalived/snapshot/keepalived-1.2.7.tar.gz
b) Nainstalujte balíček RPM BUILD:
# yum -y install rpm-build
c) Rozbalte tar ball a upravte soubor keepalived.spec.in:
# tar -zxvf keepalived-1.2.7.tar.gz # mkdir -p /root/rpmbuild/SOURCES/ # cp /root/keepalived-1.2.7.tar.gz /root/rpmbuild/SOURCES/
nahradit z verze 1.2.2 na verzi:1.2.7:
# vi /root/keepalived-1.2.7/keepalived.spec.in # yum -y install popt* # cd /root/keepalived-1.2.7 # rpmbuild -ba keepalived.spec.in
Příkaz výše vytvoří zkompilované RPM ze zdroje v umístění:
/root/rpmbuild/RPMS/x86_64/keepalived-1.2.7-5.x86_64.rpm
Nyní nainstalujte rpm pomocí příkazu rpm:
# rpm -ivh /root/rpmbuild/RPMS/x86_64/keepalived-1.2.7-5.x86_64.rpm
Krok 8 :NASTAVTE konfiguraci keepalved.
Pro hlavní uzel nastavte následující:
# vi /etc/keepalived/keepalived.conf vrrp_instance VI_1 { state MASTER interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 31 priority 101 advert_int 5 vrrp_unicast_bind 172.16.243.144 vrrp_unicast_peer 172.16.243.145 authentication { auth_type PASS auth_pass 1111 } notify_backup "/bin/echo passive > /var/run/rcron/state" notify_master "/bin/echo active > /var/run/rcron/state" notify_fault "/bin/echo passive > /var/run/rcron/state" }
Pro záložní uzel:
# vi /etc/keepalived/keepalived.conf vrrp_instance VI_1 { state BACKUP interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 31 priority 100 advert_int 5 vrrp_unicast_bind 172.16.243.145 vrrp_unicast_peer 172.16.243.144 authentication { auth_type PASS auth_pass 1111 } notify_backup "/bin/echo passive > /var/run/rcron/state" notify_master "/bin/echo active > /var/run/rcron/state" notify_fault "/bin/echo passive > /var/run/rcron/state" }
Kde „172.16.243.145“ a „172.16.243.144“ jsou adresy IP počítačů se systémem Linux.
Krok 9 :Vytvořte ukázkový záznam crontab na masteru i slave.
* * * * * /usr/local/bin/rcron --conf /etc/rcron/rcron.conf echo `date` >> /tmp/output
Spusťte službu Keepalive na obou uzlech:
# service keepalived start ; chkconfig keepalived on
Poznámka :V případě, že bude démon keepalived zabit, vytvoříme skript crontab.
* * * * * * /root/keep-alive-monitor
Obsah skriptu:
# cat /root/keep-alive-monitor #!/bin/sh echo "test" >> /tmp/monitor; ps -ef|grep -v grep|grep -i keepalived; if [ $? -eq 0 ] ; then exit 0 else echo "passive" > /var/run/rcron/state; /etc/init.d/keepalived restart; fi