J'ai configuré keepalived sur deux machines Debian pour une haute disponibilité, mais j'ai rencontré le nombre maximum d'IP virtuelles que je peux assigner à mon vrrp_instance
. Comment pourrais-je configurer et échouer plus de 20 IP virtuelles?
Voici la configuration, très simple:
LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 - 10.200.85.200
Chaque machine exécute également une liaison Apache (plus tard Nginx) sur les adresses IP virtuelles pour la terminaison du certificat client SSL et le proxy pour les serveurs Web principaux. La raison pour laquelle j'ai besoin de tant de VIP est l'impossibilité d'utiliser VirtualHost sur HTTPS.
Voici mon keepalived.conf:
vrrp_script chk_apache2 {
script "killall -0 apache2"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
10.200.85.100
.
. all the way to
.
10.200.85.200
}
Une configuration identique se trouve sur la machine BACKUP, et cela fonctionne bien, mais uniquement jusqu'à la 20e IP.
J'ai trouvé un HOWTO traitant de ce problème. Fondamentalement, ils suggèrent d'avoir un seul VIP et d'acheminer tout le trafic "via" cette adresse IP, et "tout ira bien". Est-ce une bonne approche? J'utilise des pare-feu pfSense devant les machines.
Citation du lien ci-dessus:
ip route add $VNET/N via $VIP
or
route add $VNET netmask w.x.y.z gw $VIP
Merci d'avance.
ÉDITER:
@David Schwartz a dit qu'il serait judicieux d'ajouter une route, j'ai donc essayé d'ajouter une route statique au pare-feu pfSense, mais cela n'a pas fonctionné comme je m'y attendais.
Route pfSense:
Interface: LAN
Destination network: 10.200.85.200/32 (virtual IP)
Gateway: 10.200.85.100 (floating virtual IP)
Description: Route to VIP .100
J'ai également vérifié que le transfert de paquets était activé sur mes hôtes:
$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
Suis-je en train de mal faire? J'ai également supprimé tous les VIP du keepalived.conf pour qu'il échoue uniquement le 10.200.85.100.
la source
Réponses:
La solution la plus simple sans changer votre architecture actuelle consiste à utiliser virtual_ipaddress_excluded . Par exemple
virtual_ipaddress_excluded contient une liste d'adresses IP que keepalived fera monter et descendre sur le serveur, mais elles ne sont pas incluses dans le paquet VRRP lui-même, donc elles ne comptent pas dans la limite des 20 adresses IP.
Dans mes configurations, j'aime allouer une adresse IP spécifiquement pour virtual_ipaddress . c'est-à-dire celui qui est inclus dans les paquets VRRP et qui met tout le reste dans virtual_ipaddress_excluded . C'est une bonne idée car vous ne voulez pas avoir à changer l'adresse IP principale simplement parce qu'un client est parti.
la source