J'ai mis en place un cluster à deux nœuds (actif/passif) avec Corosync/Pacemaker et nginx comme proxy inverse. Le système d'exploitation est RHEL7 et la machine n'a qu'une seule interface réseau pour le moment.
J'ai configuré deux ressources :
- cluster-vip pour l'IP virtuelle partagée
- reverse-proxy pour nginx
Voici les déclarations des deux ressources :
pcs resource create cluster-vip ocf:heartbeat:IPaddr2 ip=192.168.0.1 cidr_netmask=24 op monitor interval=30s
pcs resource create reverse-proxy systemd:nginx op monitor interval=5s meta failure-timeout=60s
pcs constraint colocation add reverse-proxy with cluster-vip INFINITY
pcs constraint order cluster-vip then reverse-proxy
Hier, j'ai remarqué un comportement inattendu en faisant une capture de réseau. Lorsqu'il communique avec les clients, le nœud actif utilise l'adresse IP virtuelle (192.168.0.1). Lorsqu'il communique avec les serveurs web situés sur le réseau interne, il utilise l'adresse IP primaire de l'interface au lieu de la vip (192.168.0.2 ou 192.168.0.3 selon le noeud actif).
En conséquence, je suis obligé de créer deux règles différentes sur mon pare-feu (une pour le nœud 1 et une pour le nœud 2) au lieu de simplement autoriser le vip à communiquer avec les serveurs web. J'ai l'intention d'ajouter d'autres nœuds au cluster, et il serait pratique de ne pas avoir à autoriser chaque nœud un par un et de n'autoriser le vip qu'une fois pour toutes.
Ce comportement a-t-il une explication logique ? Existe-t-il un moyen de dire à pacemaker de n'utiliser que le vip ? Et est-ce une bonne pratique ? Je ne veux pas faire de bêtises, donc si vous pensez que je ne devrais pas le faire, je serais heureux d'entendre pourquoi.
Salutations