22
0
Fork 0

Amélioration HowtoVRRP

This commit is contained in:
Romain Dessort 2017-09-13 09:47:36 -04:00
parent e397b47850
commit 5448d7d258
1 changed files with 30 additions and 6 deletions

View File

@ -7,7 +7,7 @@ Le protocole [VRRP](https://www.ietf.org/rfc/rfc3768.txt) permet à plusieurs é
## Installation ## Installation
Le [paquet officiel vrrpd](https://packages.debian.org/jessie/vrrpd) officiel pose différents soucis, nous utilisons à la place un [paquet avec plusieurs patchs](#patchs-sur-paquet-patchés) disponible sur le [repository Evolix](http://pub.evolix.net/jessie/) : Le [paquet officiel vrrpd](https://packages.debian.org/jessie/vrrpd) pose différents soucis, nous utilisons à la place un [paquet avec plusieurs patchs](#patchs-sur-paquet-patchés) disponible sur le [dépôt Evolix](http://pub.evolix.net/jessie/) :
~~~ ~~~
# apt install vrrpd=1.0-2.evolix # apt install vrrpd=1.0-2.evolix
@ -15,9 +15,9 @@ Le [paquet officiel vrrpd](https://packages.debian.org/jessie/vrrpd) officiel po
> *Note* : Nous avons entrepris la ré-écriture d'un démon _vrrpd_ : [uvrrpd](https://forge.evolix.org/projects/uvrrpd) mais nous ne l'utilisons pas encore en production. > *Note* : Nous avons entrepris la ré-écriture d'un démon _vrrpd_ : [uvrrpd](https://forge.evolix.org/projects/uvrrpd) mais nous ne l'utilisons pas encore en production.
### Patchs sur paquet patchés ### Patchs sur le paquet Debian
Notre paquet **vrrpd** intègre différents patches, notamment un script permettant d'utiliser les *macvlan* : Notre paquet *vrrpd* intègre différents patches, notamment un script permettant d'utiliser les *macvlan* :
~~~ ~~~
- debian/patches/010-vrrpd-1.0_to_1.0-1exp1 - debian/patches/010-vrrpd-1.0_to_1.0-1exp1
@ -56,12 +56,18 @@ net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2 net.ipv4.conf.all.arp_announce=2
~~~ ~~~
Il faut aussi ajuster ce paramètre sysctl pour pouvoir écouter sur une IP vrrp en mode slave (donc non présente localement): Il faut aussi ajuster ce paramètre sysctl pour pouvoir écouter sur une adresse IP non présente localement (lorsque la machine est slave) :
~~~ ~~~
net.ipv4.ip_nonlocal_bind=1 net.ipv4.ip_nonlocal_bind=1
~~~ ~~~
Au niveau du pare-feu, il faut également ajouter la règle suivante :
~~~
# iptables -A INPUT -s <adresse IP du pair> -d 224.0.0.18 -j ACCEPT
~~~
Puis, on lance par exemple la commande suivante : Puis, on lance par exemple la commande suivante :
~~~ ~~~
@ -77,7 +83,7 @@ Détails des options utilisées :
* `-v 42` : identifiant VRID (il doit être unique sur un même segment réseau) * `-v 42` : identifiant VRID (il doit être unique sur un même segment réseau)
* `-p 100` : priorité entre 1 et 255 (défaut : 100) * `-p 100` : priorité entre 1 et 255 (défaut : 100)
* `-l foo` : nom de l'instance * `-l foo` : nom de l'instance
* `-a pw/OxPASSWORD` : mot de passe en hexa * `-a pw/OxPASSWORD` : mot de passe en hexadécimal
Au bout de quelques dizaines de secondes, vrrpd va passer dans l'état _master_ et créer l'interface `vrrp_${vrid}_${interface}` avec l'adresse IP et l'adresse MAC `00:00:5e:00:01:${vrid}`: Au bout de quelques dizaines de secondes, vrrpd va passer dans l'état _master_ et créer l'interface `vrrp_${vrid}_${interface}` avec l'adresse IP et l'adresse MAC `00:00:5e:00:01:${vrid}`:
@ -89,14 +95,28 @@ vrrp_2_eth0 Link encap:Ethernet HWaddr 00:00:5e:00:01:2a
[...] [...]
~~~ ~~~
On devrait voir cela dans les logs (syslog) :
~~~
Apr 23 18:26:28 lb01 vrrpd->lan[57143]: Starting (adver_int: 10000000, vrid: 42, use virtual mac: yes)
Apr 23 18:26:28 lb01 vrrpd->lan[57143]: VRRP ID 42 on eth0 (prio: 100) : we are now a backup router.
Apr 23 18:26:59 lb01 vrrpd->lan[57143]: VRRP ID 42 on eth0 (prio: 100): we are now the master router.
~~~
Sur une autre machine, après avoir également ajusté les paramètres _sysctl_, on lance la même commande avec une priorité plus faible : Sur une autre machine, après avoir également ajusté les paramètres _sysctl_, on lance la même commande avec une priorité plus faible :
~~~ ~~~
# vrrpd -i eth0 -x -D -d 10 -v 42 -p 90 -a pw/0xPASSWORD -l foo 192.0.2.42/27 # vrrpd -i eth0 -x -D -d 10 -v 42 -p 90 -a pw/0xPASSWORD -l foo 192.0.2.42/27
~~~ ~~~
Cette machine va rester en état _slave_ tant qu'elle capte des messages d'avertissement de la machine _master_. Cette machine va rester en état _slave_ tant qu'elle capte des messages d'avertissement de la machine _master_ :
~~~
Apr 23 18:26:28 lb02 vrrpd->lan[57143]: Starting (adver_int: 10000000, vrid: 42, use virtual mac: yes)
Apr 23 18:26:28 lb02 vrrpd->lan[57143]: VRRP ID 42 on eth0 (prio: 90) : we are now a backup router.
~~~
Le démon n'a pas de script d'init, on rajoute la ligne de commande ci-dessus directement dans le fichier */etc/rc.local*.
## Logs ## Logs
@ -104,3 +124,7 @@ Cette machine va rester en état _slave_ tant qu'elle capte des messages d'avert
* L'historique des changements d'états dans `/var/log/vrrpd/state.$vrid` * L'historique des changements d'états dans `/var/log/vrrpd/state.$vrid`
* L'état courant se trouve dans /var/run/vrrpd/vrrp-${instance_name} * L'état courant se trouve dans /var/run/vrrpd/vrrp-${instance_name}
* Un fichier PID est dans `/var/run/vrrpd_${instance_name}_${vrid}.pid` * Un fichier PID est dans `/var/run/vrrpd_${instance_name}_${vrid}.pid`
## Bascule d'un serveur à l'autre
Pour faire en sorte que l'adresse IP bascule sur le serveur slave, il suffit de couper vrrpd sur la machine *master*. La machine *slave* détectera alors qu'il est tout seul est prendra l'adresse IP.