Interrupteur

Dans SKOOR 6.2, la sémantique de la commande switch a changé de manière significative. Dans les versions précédentes, la commande switch inversait complètement les rôles de primaire et de standby. Depuis SKOOR 6.2, la commande switch n'effectue qu'un basculement du primaire vers le standby. Pour que la réplication fonctionne à nouveau, il faut effectuer manuellement un createslave sur le nouveau primaire. Cela couvre beaucoup mieux les cas d'utilisation courants en fournissant des basculements beaucoup plus rapides.

Basculement

Le basculement peut être réalisé en exécutant la commande suivante sur le standby ou le primaire actuel. Si le primaire n'est plus accessible, la commande doit être exécutée sur le 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 >

Appuyez sur Entrée pour continuer. La sortie devrait ressembler à ceci :

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

Le script va :

  • faire du standby actuel le nouveau primaire

  • exécuter tous les pré-scripts définis dans le fichier eranger-replication.cfg

  • désactiver la synchronisation du système de fichiers (service syncfs) sur l'ancien primaire

  • arrêter les services eranger-server, eranger-collector et eranger-report sur l'ancien primaire

  • démarrer les services eranger-server, eranger-collector et eranger-report sur le nouveau primaire

  • démarrer httpd et eranger-agent s'ils ne sont pas déjà en cours d'exécution sur le primaire et le standby

  • se connecter à tous les collecteurs externes et modifier eranger-collector.cfg afin qu'ils livrent leurs données au nouveau serveur primaire (ne fonctionne pas si le paramètre server<n>_address définit une adresse http)

  • exécuter tous les post-scripts définis dans le fichier eranger-replication.cfg

Activer la réplication entre le nouveau et l'ancien serveur primaire

Cette étape ne doit être effectuée que lorsque l'ancien système primaire est encore disponible et qu'il est prévu de revenir à l'ancien système.

Pour obtenir une réplication opérationnelle du nouveau primaire vers le nouveau standby, il faut effectuer un createstandby sur le nouveau primaire.

/opt/eranger/bin/eranger-server-replication.pl createslave

IP virtuel

L'exemple ci-dessus a été réalisé alors que l'ancien système primaire fonctionnait encore et était disponible. Après une commutation réussie, les utilisateurs finaux devront être informés qu'ils doivent utiliser l'adresse IP ou le nom DNS du nouveau serveur primaire .

L'attribution d'une adresse IP virtuelle et son déplacement vers le serveur primaire actif avec IP-aliasing sont pris en charge (voir Configuration d'une adresse IP virtuelle à l'aide de pré et post-scripts) et le pré et post-script correspondant vip-switch.sh est utilisé dans l'exemple ci-dessus.

Commutation en arrière

Avant de rebasculer sur l'ancien primaire, il faut effectuer un createslave sur le nouveau primaire.

Il n'est pas nécessaire que le système primaire actuel soit en cours d'exécution pour que le système de secours puisse prendre le relais. La commutation peut également être effectuée sur le système de secours lorsque le système primaire actuel est en panne (indisponible). Des précautions doivent être prises lors de la remise en ligne de l'ancien primaire, car il est toujours configuré comme primaire. Arrêtez les processus eranger-server, eranger-collector et eranger-scheduler sur l'ancien primaire et lancez la commande createslave sur le primaire actif actuel . Pour revenir aux rôles par défaut, lancez à nouveau la commande switch.

On suppose que la commutation n'est que temporaire et qu'après avoir rétabli le primaire, une autre commutation vers le primaire d ' origine est effectuée. Par conséquent, les adresses IP du primaire et du standby dans le fichier eranger-replication.cfg ne sont pas échangées lors d'une commutation. La commutation en arrière fonctionne toujours avec cette configuration, mais c'est seulement lors d'une nouvelle opération de création d'esclave à partir du nouveau primaire que les adresses IP doivent être échangées dans le fichier eranger-replication.cfg.

État du moteur SKOOR Engine après la commutation

Après le basculement, la commande status de eRanger.sh montre la sortie suivante sur le nouveau primaire :

# /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

et la sortie suivante sur le nouveau 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

Mode non interactif

Le commutateur peut être exécuté en mode non interactif en ajoutant l'option -f. Utilisez cette option si le script doit être exécuté sans surveillance et dans le cas où l'un ou certains des collecteurs ont une version de SKOOR Collector installée qui n'est pas identique à celle du collecteur primaire et du collecteur de secours. Ce qui suit montre le résultat de l'exécution de la commande switch en utilisant -f, sur le standby actuel, c'est-à-dire le primaire d'origine. Cette deuxième commande switch rétablit les rôles originaux du primaire et du 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