Interruttore
In SKOOR 6.2 la semantica del comando switch
è cambiata in modo significativo. Nelle versioni precedenti, il comando switch
invertiva completamente i ruoli di primario e standby. Da SKOOR 6.2 il comando switch esegue solo un failover dal primario allo standby. Per ottenere di nuovo una replica funzionante, è necessario eseguire manualmente un createslave
sul nuovo primario. Questa soluzione copre molto meglio i casi d'uso più comuni, fornendo failover molto più rapidi.
Failover
Si può ottenere eseguendo il seguente comando sullo standby o sul primario corrente. Se il primario non è più accessibile, il comando deve essere eseguito sullo standby:
# /opt/eranger/bin/eranger-server-replication.pl switch 10.1.0.89 10.1.0.89 checking ssh for user reranger localhost (10.1.0.89) is slave, master 10.1.0.88 is up will convert localhost to master and 10.1.0.88 to slave press ENTER to continue, Ctrl-C to abort >
Premere Invio per continuare. L'output dovrebbe essere simile a questo:
10.1.0.89 calling script /opt/eranger/sbin/vip-switch.sh 10.1.0.89 pre s2m 10.1.0.88 calling eranger-server-syncfs.sh 10.1.0.89 10.1.0.88 calling eranger-server-sync-collector-bin.pl 10.1.0.88 calling script /opt/eranger/sbin/vip-switch.sh 10.1.0.89 pre m2s 10.1.0.88 OK> 10.1.0.90 removed from eth0 10.1.0.89 from slave to master 10.1.0.89 current master: 10.1.0.88 10.1.0.89 eranger start httpd at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 httpd already running (not starting) 10.1.0.89 done 10.1.0.89 eranger start eranger-report at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 start eranger-report (service eranger-report ).. 10.1.0.89 done 10.1.0.89 eranger start eranger-server at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 start eranger-server (service eranger-server ).. 10.1.0.89 done 10.1.0.89 eranger start eranger-ethd at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 start eranger-ethd (service eranger-ethd ).. 10.1.0.89 done 10.1.0.89 eranger start eranger-eth-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 start eranger-eth-alerter (service eranger-eth-alerter ).. 10.1.0.89 done 10.1.0.89 eranger start eranger-collector at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 start eranger-collector (service eranger-collector ).. 10.1.0.89 delete /opt/eranger/collector/ringbuffer1.bin 10.1.0.89 done 10.1.0.89 eranger start eranger-agent at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 eranger-agent already running (not starting) 10.1.0.89 done 10.1.0.89 eranger start eranger-ic-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 start eranger-ic-alerter (service eranger-ic-alerter ).. 10.1.0.89 done 10.1.0.89 eranger start httpd at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 httpd already running (not starting) 10.1.0.89 done 10.1.0.89 eranger start eranger-report at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 eranger-report already running (not starting) 10.1.0.89 done 10.1.0.89 eranger start eranger-server at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 eranger-server already running (not starting) 10.1.0.89 done 10.1.0.89 eranger start eranger-ethd at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 start eranger-ethd (service eranger-ethd ).. 10.1.0.89 done 10.1.0.89 eranger start eranger-eth-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 start eranger-eth-alerter (service eranger-eth-alerter ).. 10.1.0.89 done 10.1.0.89 eranger start eranger-collector at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 eranger-collector already running (not starting) 10.1.0.89 done 10.1.0.89 eranger start eranger-agent at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 eranger-agent already running (not starting) 10.1.0.89 done 10.1.0.89 eranger start eranger-ic-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.89 start eranger-ic-alerter (service eranger-ic-alerter ).. 10.1.0.89 done 10.1.0.89 calling script /opt/eranger/sbin/vip-switch.sh 10.1.0.89 post s2m 10.1.0.89 OK> 10.1.0.90 added to eth0. 10.1.0.89 OK> 10.1.0.90 configured in /etc/sysconfig/network-scripts/ifcfg-eth0:0. 10.1.0.88 calling script /opt/eranger/sbin/vip-switch.sh 10.1.0.89 post m2s 10.1.0.89 10.1.0.89 checking ssh for user reranger
Lo script:
renderà lo standby corrente il nuovo primario
eseguirà tutti i pre-script se definiti in eranger-replication.cfg
disattiva la sincronizzazione del filesystem (servizio syncfs) sul vecchio primario
arrestare i servizi eranger-server, eranger-collector e eranger-report sul vecchio primario
avviare i servizi eranger-server, eranger-collector e eranger-report sul nuovo primario
avviare httpd ed eranger-agent, se non già in esecuzione sul primario e sullo standby
effettuare il login a tutti i collettori esterni e modificare eranger-collector.cfg in modo che consegnino i loro dati al nuovo server primario (non funziona con il parametro server<n>_address impostato come indirizzo http)
eseguire eventuali post-script se definiti in eranger-replication.cfg
Attivare la replica tra il nuovo e il vecchio primario
Questo passaggio deve essere eseguito solo quando il vecchio primario è ancora disponibile e si prevede di passare nuovamente al vecchio sistema.
Per ottenere una replica funzionante dal nuovo primario al nuovo standby, è necessario eseguire un createstandby
sul nuovo primario.
/opt/eranger/bin/eranger-server-replication.pl createslave
IP virtuale
L'esempio precedente è stato eseguito quando il vecchio primario era ancora in funzione e disponibile. Dopo un passaggio riuscito, gli utenti finali dovranno essere avvisati di utilizzare l'indirizzo IP o il nome DNS del nuovo primario .
L'assegnazione di un IP virtuale e il suo spostamento sul primario attivo con l'IP-aliasing sono supportati (vedere Impostazione dell'indirizzo IP virtuale tramite script pre e post) e nell'esempio precedente è stato utilizzato il corrispondente script pre e post vip-switch.sh.
Commutazione di ritorno
Prima di tornare al vecchio primario, è necessario eseguire un createslave
sul nuovo primario.
Non è necessario che il primario attuale sia in funzione perché lo standby possa subentrare. Lo switch può essere effettuato anche sullo standby quando il primario corrente è guasto (non disponibile). È necessario prestare attenzione quando si riporta online il vecchio primario, poiché è ancora configurato come primario. Arrestare i processi eranger-server, eranger-collector ed eranger-scheduler sul vecchio primario ed eseguire il comando createslave sul primario attivo corrente . Per ritornare ai ruoli predefiniti, eseguire nuovamente il comando switch.
Si presume che lo switch sia solo temporaneo e che dopo aver riportato il primario in funzione venga eseguito un altro switch verso il primario originale. Pertanto, gli indirizzi IP del primario e dello standby nel file eranger-replication.cfg non vengono scambiati quando si effettua uno switch. La commutazione funziona ancora con questa configurazione, solo quando si esegue una nuova operazione createslave dal nuovo primario gli indirizzi IP devono essere scambiati in eranger-replication.cfg.
Stato dello SKOOR Engine dopo lo switch
Dopo lo switch, il comando eRanger.sh status mostra il seguente output sul nuovo primario:
# /opt/eranger/bin/eRanger.sh status Running /opt/eranger/bin/eRanger.sh with root privileges... eRanger Server installation... Current eRanger Status: Status postgresql: started Status postgresql replication: started Status postfix: started Status rsyslog: started Status snmptrapd: stopped Status http server: started Status eRanger Server: started Status eRanger Collector: started Status eRanger Report: started Status eRanger Agent: started Status eRanger Webservice: started
e il seguente output sul nuovo standby:
# /opt/eranger/bin/eRanger.sh status Running /opt/eranger/bin/eRanger.sh with root privileges... eRanger Server installation... Current eRanger Status: Status postgresql: started Status postgresql replication: started Status postfix: started Status rsyslog: started Status snmptrapd: stopped Status http server: started Status smsd: stopped Status eRanger Server: stopped (postgresql slave) Status eRanger Collector: stopped (postgresql slave) Status eRanger Report: stopped (postgresql slave) Status eRanger Agent: stopped Status eRanger Webservice: started
Modalità non interattiva
Lo switch può essere eseguito in modalità non interattiva aggiungendo l'opzione -f. Questa opzione va utilizzata se lo script deve essere eseguito senza sorveglianza e nel caso in cui uno o alcuni dei collettori abbiano installato una versione di SKOOR non identica a quella presente sul primario e sullo standby. Di seguito viene mostrato l'output dell'esecuzione di switch con -f, sullo standby corrente, cioè il primario originale. Questo secondo comando switch ripristina i ruoli originali di primario e standby.
# /opt/eranger/bin/eranger-server-replication.pl -f switch 10.1.0.88 10.1.0.88 checking ssh for user reranger localhost (10.1.0.88) is slave, master 10.1.0.89 is up will convert localhost to master and 10.1.0.89 to slave 10.1.0.88 calling script /opt/eranger/sbin/vip-switch.sh 10.1.0.88 pre s2m 10.1.0.89 calling eranger-server-syncfs.sh 10.1.0.88 10.1.0.89 calling eranger-server-sync-collector-bin.pl 10.1.0.89 calling script /opt/eranger/sbin/vip-switch.sh 10.1.0.88 pre m2s 10.1.0.89 OK> 10.1.0.90 removed from eth0 10.1.0.88 from slave to master 10.1.0.88 current master: 10.1.0.89 10.1.0.88 eranger start httpd at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 httpd already running (not starting) 10.1.0.88 done 10.1.0.88 eranger start eranger-report at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 start eranger-report (service eranger-report ).. 10.1.0.88 done 10.1.0.88 eranger start eranger-server at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 start eranger-server (service eranger-server ).. 10.1.0.88 done 10.1.0.88 eranger start eranger-ethd at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 start eranger-ethd (service eranger-ethd ).. 10.1.0.88 done 10.1.0.88 eranger start eranger-eth-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 start eranger-eth-alerter (service eranger-eth-alerter ).. 10.1.0.88 done 10.1.0.88 eranger start eranger-collector at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 start eranger-collector (service eranger-collector ).. 10.1.0.88 delete /opt/eranger/collector/ringbuffer1.bin 10.1.0.88 done 10.1.0.88 eranger start eranger-agent at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 eranger-agent already running (not starting) 10.1.0.88 done 10.1.0.88 eranger start eranger-ic-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 start eranger-ic-alerter (service eranger-ic-alerter ).. 10.1.0.88 done 10.1.0.88 copied file to /var/lib/pgsql/data/ NOTICE: pg_stop_backup complete, all required WAL segments have been archived 10.1.0.88 eranger start httpd at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 httpd already running (not starting) 10.1.0.88 done 10.1.0.88 eranger start eranger-report at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 eranger-report already running (not starting) 10.1.0.88 done 10.1.0.88 eranger start eranger-server at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 eranger-server already running (not starting) 10.1.0.88 done 10.1.0.88 eranger start eranger-ethd at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 start eranger-ethd (service eranger-ethd ).. 10.1.0.88 done 10.1.0.88 eranger start eranger-eth-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 start eranger-eth-alerter (service eranger-eth-alerter ).. 10.1.0.88 done 10.1.0.88 eranger start eranger-collector at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 eranger-collector already running (not starting) 10.1.0.88 done 10.1.0.88 eranger start eranger-agent at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 eranger-agent already running (not starting) 10.1.0.88 done 10.1.0.88 eranger start eranger-ic-alerter at /opt/eranger/bin/eranger-server-replication.pl line 1717. 10.1.0.88 start eranger-ic-alerter (service eranger-ic-alerter ).. 10.1.0.88 done 10.1.0.88 calling script /opt/eranger/sbin/vip-switch.sh 10.1.0.88 post s2m 10.1.0.88 OK> 10.1.0.90 added to eth0. 10.1.0.88 OK> 10.1.0.90 configured in /etc/sysconfig/network-scripts/ifcfg-eth0:0. 10.1.0.89 calling script /opt/eranger/sbin/vip-switch.sh 10.1.0.88 post m2s 10.1.0.88 10.1.0.88 checking ssh for user reranger