rcron ist ein leistungsstarkes Tool, das Systemadministratoren beim Einrichten von Cron-Job-Redundanz und Failover über Gruppen von Maschinen unterstützt. RCRON stellt sicher, dass ein auf mehreren Rechnern installierter Job immer nur auf dem aktiven läuft.
Arbeitsweise von RCRON
Hohe Verfügbarkeit mit RCRON (ein Knoten wird als aktiv und der zweite Knoten als passiv gestempelt), die gleiche Cron-Konfiguration wird auf beiden sein, der einzige Unterschied wäre der aktive/passive Status in einer Datei.
Für das automatische Umschalten des Aktiv-/Passiv-Zustands verwenden wir den KEEPALIVED-Daemon, der das Keepalive-Signal für die Kommunikation zwischen 2 Knoten verwendet. Wenn nach dem Senden eines Signals keine Antwort empfangen wird, wird davon ausgegangen, dass die Verbindung unterbrochen ist.
In diesem Szenario wird ein Knoten als KEEPALIVED-Master und der zweite als KEEPALIVED-Backup markiert. Der Master-Knoten hält den rcron-Zustand aktiv und der Backup-Knoten hält den rcron-Zustand passiv. Sobald der Master-Knoten ausfällt, sendet er ein 0-Prioritätssignal an den Backup-Knoten, der umschaltet und sich wie ein MASTER-KNOTEN verhält und rcron fortlaufend als aktiv markiert, sobald der Master-Knoten, der Backup-Knoten, wieder hochfährt wechselt in den Backup-Modus.
Installations- und Konfigurationsschritte von RCRON auf CentOS/RHEL
In meinem Szenario habe ich zwei Linux-Maschinen, eine ist primär und die zweite ist Slave.
Schritt 1 :Aktivieren Sie die IP-Weiterleitung auf beiden Knoten. Bearbeiten Sie die Datei /etc/sysctl.conf und nehmen Sie die folgende Änderung vor
net.ipv4.ip_forward = 1 # sysctl -p ; Save the Changes without rebooting the Machine
Schritt 2 :Fügen Sie das EPEL-Repository auf beiden Knoten hinzu.
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # rpm -ivh epel-release-6-8.noarch.rpm
Schritt 3 :Installieren Sie die erforderlichen Pakete auf beiden Knoten.
# yum install subversion byacc flex gcc
Schritt 4 :Wenn Sie Internet vom Proxy-Server erhalten, dann setzen Sie http_proxy für 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
Schritt 5 :Wenn wir eine direkte Internetverbindung erhalten, überspringen Sie die Proxy-Einstellungen. Laden Sie die rcron-Software von SVN herunter.
# cd /root; # svn co http://rcron.googlecode.com/svn/trunk rcron # cd rcron/rcron # ./configure # make # make install
Schritt 6 :Erstellen Sie das Verzeichnis auf beiden Knoten.
# 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
Führen Sie auf dem Master-Knoten die folgenden Befehle aus :
# mkdir /var/run/rcron # touch /var/run/rcron/state # echo "active" > /var/run/rcron/state
Führen Sie auf dem Slave-Knoten die folgenden Befehle aus :
# mkdir /var/run/rcron # touch /var/run/rcron/state # echo "passive" > /var/run/rcron/state
Schritt 7 :Installieren Sie nun das Keepalive-Paket auf beiden Knoten.
a) Laden Sie den neusten Quell-Tarball herunter:
# cd /root # wget http://cgit.luffy.cx/keepalived/snapshot/keepalived-1.2.7.tar.gz
b) Installieren Sie das RPM BUILD-Paket:
# yum -y install rpm-build
c) Entpacken Sie die Tar-Kugel und bearbeiten Sie die Datei 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/
von Version 1.2.2 auf Version:1.2.7 ersetzen:
# vi /root/keepalived-1.2.7/keepalived.spec.in # yum -y install popt* # cd /root/keepalived-1.2.7 # rpmbuild -ba keepalived.spec.in
Der obige Befehl erstellt ein kompiliertes RPM aus der Quelle am Speicherort:
/root/rpmbuild/RPMS/x86_64/keepalived-1.2.7-5.x86_64.rpm
Installieren Sie nun rpm mit dem rpm-Befehl:
# rpm -ivh /root/rpmbuild/RPMS/x86_64/keepalived-1.2.7-5.x86_64.rpm
Schritt 8 :SETUP der Keepalive-Konfiguration.
Richten Sie für den Master-Knoten Folgendes ein:
# 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" }
Für den Sicherungsknoten:
# 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" }
Wobei „172.16.243.145“ und „172.16.243.144“ die IP-Adresse von Linux-Rechnern sind.
Schritt 9 :Beispiel-Crontab-Eintrag auf Master und Slave erstellen.
* * * * * /usr/local/bin/rcron --conf /etc/rcron/rcron.conf echo `date` >> /tmp/output
Starten Sie den Keepalive-Dienst auf beiden Knoten:
# service keepalived start ; chkconfig keepalived on
Hinweis :Für den Fall, dass der Keepalived-Daemon getötet wird, werden wir ein Crontab-Skript erstellen.
* * * * * * /root/keep-alive-monitor
Inhalt des Skripts:
# 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