Crans
  • Commentaires
  • Page immuable
  • Menu
    • Affichage
    • Carte locale du site
    • Pièces jointes
    • Informations
    • Code source
  • Connexion

Navigation

  • Modifications récentes
  • Recherche avancée
  • Aide
Version 16 à la date du 2017-02-15 10:45:28
CransWiki:
  • CransTechnique
  • AdminSystème
  • RoutageFailover

Routage failover

Au Crans, comme on aime la HA, depuis février 2017, on a 2 routeurs redondants, un master (odlyd) et un backup (sable)

Tout est normalement géré par bcfg2.

Comment ça marche ?

C'est simple comme dirait jammy. Voici ce qu'on veut faire, avoir 2 routeurs en parallèle. Pour cela, on utilise une vip comme le schéma ci-dessous. (Credit)

firewallha.png

Les vip

Premièrement il y a une instance keepalived qui assigne les ip du routeur.

Chaque machine dispose d'ip en dur (ex : odlyd.crans.org; 138.231.136.4) et en plus l'ip "passerelle" sur chaque vlan. De plus, coté zrt (vlan avec la dsi), l'ip est également gérée par keepalived. En voici la liste :

138.231.132.47/24 brd 138.231.132.255 dev ens scope global # vlan zrt, ip sortie
138.231.136.254/21 brd 138.231.143.255 dev crans scope global # vlan adh
10.231.136.254/24 brd 10.231.136.255 dev crans.2 scope global # vlan adm
138.231.148.254/21 brd 10.231.148.255 dev crans.3 scope global # vlan wifi
10.2.9.254/24 brd 10.2.9.255 dev crans.21 scope global # vlan appart
10.53.0.254/16 brd 10.53.254.255 dev crans.22 scope global # vlan federez

Les ip de sortie de la zone crans sont donc en .254 à présent, et gérées par keepalived.

En gros, coté interne, il y a 5 vip, et coté externe (zrt), une seule.

Quagga

Quand un routeur est activé, il faut donc lui assigner les ip. Mais pour communiquer nos routes avec la dsi; les routeurs doivent se parler (voir ospf). Le programme utilisé pour cela est quagga. Quand un routeur devient actif, il faut le démarrer, et l’éteindre quand il ne l'est plus, sous peine de déclencher un shitstorm de routes sur zrt.

Voici la ligne dans la conf keepalived (/etc/keepalived/keepalived.conf) qui commande cela :

  notify_master "/usr/sbin/service quagga start"
  notify_backup "/usr/sbin/service quagga stop"
  notify_fault "/usr/sbin/service quagga stop"

Activation/désactivation des routeurs

Sur odlyd

En temps normal, seul odlyd est actif et route. On peut vouloir activer le routage sur sable, soit en cas de défaillance, soit manuellement. Pour cela, keepalived fait appel à un programme externe qu'on a écrit. Il est à noter que cette conf n'est présente que sur odlyd, qui commande l'activation/désactivation. Si jamais odlyd ne répond plus, sable prendra automatiquement la main.

  track_script {
      check_routeur
  }
vrrp_script check_routeur {
    script       "/etc/keepalived/checkstatus.sh"
    interval 5   # check every 5 seconds
    fall 2       # require 2 failures for KO
    rise 2       # require 2 successes for OK
}

Ce script (très simple et à compléter éventuellement) fait 2 choses, il vérifie la présence d'un fichier vide MASTER dans /etc/keepalived, et le bon fonctionnement de quagga. Si ce n'est pas le cas, il renvoie un code de sortie non nul, et le failover s'active.

Si on veut manuellement désactiver le routage sur odlyd, il suffit de supprimer le fichier MASTER.

Le fichier checkstatus est également utilisé par monit, et en fault il signale que le routage est désactivé sur odlyd.

Sur sable

Lorsque sable s'active, il crée le fichier /etc/keepalived/BACKUP_ACTIVE. Un second script utilisé cette fois uniquement par monit, vérifie la non présence de ce script. Si il est présent, le routage failover est donc activé, et le signale à travers monit.

Utilisation pratique

Pour activer ou désactiver le routage sur odlyd (à la demande), il existe ces 2 commandes (qui créent et suppriment MASTER) :

.-(7:00:17)-(~)-------------------------------------------------------(detraz@odlyd)-
`--[1]-> disable-routage
[sudo] password for detraz on odlyd: 
Routage désactivé sur odlyd, activé sur le routeur backup

.-(7:00:56)-(~)--------------------------------------------------------(detraz@odlyd)-
`---> enable-routage
Routage activé sur odlyd, désactivé sur le routeur backup

Comportement observé, bugs connus

Lors de l'activation/désactivation, le lag dure 5 secondes. Si il dure plus ; s'inquiéter.

/!\ Attention, pour une raison encore obscure, sable ne peut pas router avec le parefeu allumé (sur lui). Il n'arrive alors même pas à prendre les ip, et provoque des erreurs noyaux. To fix.

/!\ Éviter de redémarrer inutilement keepalived sur odlyd, cela engendre un lag de 5sec également, ce qui est pénible.

  • Propulsé par MoinMoin
  • Mentions légales