Projet

Général

Profil

Routage h7 » Historique » Version 3

Élie Bouttier, 11/03/2018 16:01

1 1 Élie Bouttier
h1. Routage h7
2 1 Élie Bouttier
3 1 Élie Bouttier
L’allocation d’une IP dans djadhere provoque le routage de cette dernière sur h7.
4 1 Élie Bouttier
Pour cela, un cron sur h7 s’occupe toute les minutes de répercuter les modifications effectuées sur djadhere.
5 1 Élie Bouttier
6 1 Élie Bouttier
Les scripts s’occupant du routage se trouvent dans le dossier @h7:/root/routing@.
7 1 Élie Bouttier
8 1 Élie Bouttier
h2. CRON
9 1 Élie Bouttier
10 1 Élie Bouttier
Le cron est installé via @/etc/cron.d/routing@.
11 1 Élie Bouttier
Il lance le script @/root/routing/update-ip-ttnn@.
12 1 Élie Bouttier
13 1 Élie Bouttier
Ce script télécharge depuis djadhere la dernière version de @ip_ttnn.txt@ avec curl (et s’arrête là en cas d’erreur de curl).
14 1 Élie Bouttier
Un git diff est effectué sur le fichier ip_ttnn.txt afin de tester s’il a été modifié.
15 1 Élie Bouttier
Si c’est le cas, il est commité localement et le script @check-routing ip_ttnn.txt@ est lancé.
16 1 Élie Bouttier
17 1 Élie Bouttier
h2. Le script de routage
18 1 Élie Bouttier
19 1 Élie Bouttier
20 1 Élie Bouttier
<pre>
21 1 Élie Bouttier
root@h7:~/routing# ./check-routing --help
22 1 Élie Bouttier
usage: check-routing [-h] [--quiet] [--fix] [--force] db
23 1 Élie Bouttier
24 1 Élie Bouttier
positional arguments:
25 1 Élie Bouttier
  db          the ip_ttnn.txt file
26 1 Élie Bouttier
27 1 Élie Bouttier
optional arguments:
28 1 Élie Bouttier
  -h, --help  show this help message and exit
29 1 Élie Bouttier
  --quiet     do not print executed commands
30 1 Élie Bouttier
  --fix       run ip commands needed to fix the routing ; if absent, they are
31 1 Élie Bouttier
              printed but not executed
32 1 Élie Bouttier
  --force     by-pass mad guard (more than 10 commands, change cluster's IPs
33 1 Élie Bouttier
              route)
34 1 Élie Bouttier
</pre>
35 1 Élie Bouttier
36 1 Élie Bouttier
Le script de routage lis le fichier @ip_ttnn.txt@ passé en argument et vérifie pour toutes les IPs que les routes associées, IPv4 et IPv6, sont correctes.
37 3 Élie Bouttier
Les IPs connues comme appartenant à h7, définie dans @IP_LOCALS@, sont ignorées ; un message d’erreur est affiché si leur route n’est ni @custom@, ni @reserved@.
38 1 Élie Bouttier
39 1 Élie Bouttier
La vérification parse le résultat d’@ip route get@ et, si nécessaire, ajoute les actions nécessaires à la liste @CMDS@ :
40 1 Élie Bouttier
* @ip route add@ si la route est manquante
41 1 Élie Bouttier
* @ip route delete@ si elle ne devrait pas être présente
42 1 Élie Bouttier
* @ip route delete@ puis @ip route add@ si elle est incorrecte.
43 1 Élie Bouttier
44 1 Élie Bouttier
Si l’IP est actuellement routé sur le vlan openstack (@eth3.3132@), l’action se voit ajouter un attribut « need --force ».
45 1 Élie Bouttier
46 1 Élie Bouttier
S’il y a plus de 10 actions nécessaires, le script refuse de continuer sans l’option @--force@.
47 1 Élie Bouttier
Finalement, pour chaque action, celle-ci est affiché.
48 1 Élie Bouttier
Si le script est lancé avec @--fix@, la commande est lancé (sauf si @--force@ est également nécessaire mais absent des aguments du script).
49 2 Élie Bouttier
50 2 Élie Bouttier
h2. Et au démarrage ?
51 2 Élie Bouttier
52 2 Élie Bouttier
Le script @/root/ip_ttnn.sh@, lancé par @/etc/rc.local@ s’en occupe.