GNU/Linux >> Linux Esercitazione >  >> Linux

RCRON – Imposta l'alta disponibilità dei lavori cron

rcron è un potente strumento che aiuta gli amministratori di sistema a configurare la ridondanza dei lavori cron e il failover su gruppi di macchine. RCRON garantisce che un lavoro installato su più macchine venga eseguito solo su quella attiva in qualsiasi momento.

Funzionamento di RCRON

Alta disponibilità utilizzando RCRON (un nodo sarà contrassegnato come attivo e il secondo nodo sarà contrassegnato come passivo), la stessa configurazione di cron sarà su entrambi, l'unica differenza sarebbe lo stato attivo/passivo in un file.

Per la commutazione automatica dello stato attivo/passivo, utilizzeremo KEEPALIVED Daemon, che utilizza il segnale keepalive per la comunicazione tra 2 nodi. Dopo l'invio di un segnale, se non viene ricevuta alcuna risposta, si presume che il collegamento sia inattivo.

In questo scenario, un nodo è contrassegnato come master KEEPALIVED e il secondo come backup KEEPALIVED. Il nodo master manterrà attivo lo stato rcron e il nodo di backup manterrà lo stato rcron passivo. Non appena il Master Node scende, invierà un segnale di priorità 0 al Backup Node, che passerà e si comporterà come un MASTER NODE e contrassegnerà consecutivamente rcron come attivo non appena il nodo master riappare, il Backup Node passerà alla modalità di backup.

Passaggi di installazione e configurazione di RCRON su CentOS/RHEL

Nel mio scenario ho due macchine Linux, una è primaria e la seconda è slave.

Passaggio 1 :Abilita l'inoltro IP su entrambi i nodi. Modifica il file /etc/sysctl.conf e apporta le seguenti modifiche

net.ipv4.ip_forward = 1
# sysctl -p      ; Save the Changes without rebooting the Machine

Passaggio 2 :aggiungi il repository EPEL su entrambi i nodi.

# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm

Passaggio 3 :Installa i pacchetti necessari su entrambi i nodi.

# yum install subversion byacc flex gcc

Passaggio 4 :Se ottieni Internet dal server proxy, imposta http_proxy per 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

Passaggio 5 :Se riceviamo direttamente la connessione a Internet, salta le impostazioni del proxy. Scarica il software rcron da SVN.

# cd /root;
# svn co http://rcron.googlecode.com/svn/trunk rcron
# cd rcron/rcron
# ./configure
# make
# make install

Passaggio 6 :Crea la directory su entrambi i nodi.

# 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

Nel nodo principale, esegui sotto i comandi :

# mkdir /var/run/rcron
# touch /var/run/rcron/state
# echo "active" > /var/run/rcron/state

Sul nodo slave esegui i comandi seguenti :

# mkdir /var/run/rcron
# touch /var/run/rcron/state
# echo "passive" > /var/run/rcron/state

Passaggio 7 :Ora installa il pacchetto keepalive su entrambi i nodi.

a) Scarica l'ultimo tarball sorgente:

# cd /root
# wget http://cgit.luffy.cx/keepalived/snapshot/keepalived-1.2.7.tar.gz

b) Installare il pacchetto RPM BUILD:

# yum -y install rpm-build

c) Decomprimi il tar ball e modifica il file 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/

sostituire dalla versione 1.2.2 alla versione: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

Il comando precedente creerà un RPM compilato da Source nella posizione:

/root/rpmbuild/RPMS/x86_64/keepalived-1.2.7-5.x86_64.rpm

Ora installa rpm con il comando rpm:

# rpm -ivh /root/rpmbuild/RPMS/x86_64/keepalived-1.2.7-5.x86_64.rpm

Passaggio 8 :IMPOSTA la configurazione keepalive.

Per il nodo master, imposta quanto segue:

# 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"
}

Per il nodo di backup:

# 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"
}

Dove "172.16.243.145" e "172.16.243.144" sono gli indirizzi IP delle macchine Linux.

Passaggio 9 :crea una voce crontab di esempio sia su master che su slave.

* * * * * /usr/local/bin/rcron --conf /etc/rcron/rcron.conf echo `date` >> /tmp/output

Avvia il servizio Keepalive su entrambi i nodi:

# service keepalived start ; chkconfig keepalived on

Nota :Nel caso in cui il demone keepalived venga ucciso, creeremo uno script crontab.

* * * * * * /root/keep-alive-monitor

Contenuto dello script:

# 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


Linux
  1. Cron Jobs/Attività automatizzate

  2. Risoluzione dei problemi di Cron Jobs

  3. Come pianificare i lavori Cron con Crontab

  4. Utilizzo di lavori CRON per visitare l'URL?

  5. Come posso ottenere un elenco di tutti i lavori cron pianificati sulla mia macchina?

Pfsense alta disponibilità

Lavori Cron programmati

Come configurare Redis per un'elevata disponibilità con Sentinel in CentOS 8 – Parte 2

Spiegazione di Cron Jobs e Crontab su Linux

Come impostare e gestire i lavori Cron in cPanel

Tolleranza ai guasti di Linux:alta disponibilità di Linux