Pacemaker: Comment configurer la passerelle par défaut pour Virtual IP?

J'ai trois nœuds et trois adresses IP virtuelles sur le même sous-réseau. Peu importe quelle adresse est attribuée à quel nœud. Les adresses IP sont disponibles publiquement. Nœuds - Celles-ci sont un équilibrage de charge qui distribuent des demandes Web à plusieurs systèmes internes.

Si tous les trois nœuds sont connectés au réseau, trois adresses seront équilibrées sur trois nœuds, de sorte que chaque nœud aura exactement une adresse.

Si seulement deux nœuds sont connectés au réseau, un nœud a une adresse et l'autre - deux.

Si un seul nœud est connecté au réseau, il dispose de trois adresses.

Cela fonctionne bien avec cette configuration de ressource:

primitive IP_10 ocf:heartbeat:IPaddr2 params ip="x.x.x.10" cidr_netmask="24" nic="eth1"
primitive IP_11 ocf:heartbeat:IPaddr2 params ip="x.x.x.11" cidr_netmask="24" nic="eth1"
primitive IP_12 ocf:heartbeat:IPaddr2 params ip="x.x.x.12" cidr_netmask="24" nic="eth1"
Maintenant le fait est que j'ai une passerelle par défaut (x.x.x.1), qui doit être configuré sur chaque nœud après avoir attribué l'une des adresses IP. De toute évidence, il est impossible de configurer la passerelle par défaut jusqu'à ce que l'adresse soit la destination.

La première chose que j'ai essayée - Il est de configurer la deuxième ressource pour chaque adresse, ocf: heartbeat: Route:

primitive default_gw_1 ocf:heartbeat:Route params destination="default" device="eth1" gateway="x.x.x.1"
primitive default_gw_2 ocf:heartbeat:Route params destination="default" device="eth1" gateway="x.x.x.1"
primitive default_gw_3 ocf:heartbeat:Route params destination="default" device="eth1" gateway="x.x.x.1"
Puis combiner ces ressources en groupes:

group net_10 IP_10 default_gw_1
group net_11 IP_11 default_gw_2
group net_12 IP_12 default_gw_3
Pendant que cela fonctionne, la passerelle par défaut est définie correctement une fois l'adresse attribuée. En cas d'interrupteur d'urgence, tout fonctionne toujours comme prévu. Cet exemple montre l'allocation possible des ressources après la déconnexion. Node1:

Node1: offline
Node2: net_10, net_11
Node3: net_12
Les problèmes surviennent quand Node1 Retourne sur le réseau. Ensuite, une des ressources sur le noeud 2, par exemple net_10, sera déplacé au nœud 1. Maintenant le gestionnaire de ressources ocf: heartbeat: Route Arrêté sur Node2, Supprime la passerelle par défaut et arrête effectivement l'accès à Node2, Puisqu'il n'a pas de passerelle par défaut. Ainsi, l'adresse restante sur Node2 (net_11) plus indisponible.

Ensuite, j'ai essayé de corriger le répartiteur de ressources ocf: heartbeat: Route, Désactiver la suppression de la route. Il semble que cela fonctionne, mais cela semble très laid.

Je suppose que cela devrait être la meilleure solution. Comment puis-je configurer afin que la passerelle par défaut reste installée sur le nœud lorsque ce nœud est attribué au moins une adresse IP?

(Pacemaker 1.1.7 dans Debian Wheezy)
Invité:

Catherine

Confirmation de:

Peut-être qu'il est tard, mais juste au cas où, si quelqu'un d'autre est utile.

Dans ce cas, vous devez créer un seul GW, Puis la clonant sur tous ses nœuds. L'exemple ci-dessous montre ce script en utilisant

pcs

syntaxe.

pcs cluster setup --name MyCluster node1 node2 node3 --start

pcs cluster cib cluster_cfg

pcs -f cluster_cfg property set stonith-enabled="false"

pcs -f cluster_cfg resource create IP_10 ocf:heartbeat:IPaddr2 ip="x.x.x.10" cidr_netmask="24" nic="eth1"
pcs -f cluster_cfg resource create IP_20 ocf:heartbeat:IPaddr2 ip="x.x.x.11" cidr_netmask="24" nic="eth1"
pcs -f cluster_cfg resource create IP_30 ocf:heartbeat:IPaddr2 ip="x.x.x.12" cidr_netmask="24" nic="eth1"

pcs -f cluster_cfg resource create default_gw ocf:heartbeat:Route destination="default" device="eth1" gateway="x.x.x.1"
pcs -f cluster_cfg resource clone default_gw

pcs -f cluster_cfg constraint order IP_10 then default_gw-clone
pcs -f cluster_cfg constraint order IP_20 then default_gw-clone
pcs -f cluster_cfg constraint order IP_30 then default_gw-clone

pcs -f cluster_cfg constraint colocation add IP_10 with IP_20 -1
pcs -f cluster_cfg constraint colocation add IP_10 with IP_30 -1
pcs -f cluster_cfg constraint colocation add IP_20 with IP_30 -1

pcs cluster cib-push cluster_cfg

Pour répondre aux questions, connectez-vous ou registre