La cible CLUSTERIP est utilisée pour créer des clusters (grappes de serveurs) de noeuds répondant à la même adresse IP et MAC. C'est une forme simple de clustering où vous pouvez placer une IP virtuelle (VIP) sur tous les hôtes participant au cluster, et ensuite utiliser le CLUSTERIP sur chaque hôte qui est supposé répondre aux requêtes. La correspondance CLUSTERIP ne nécessite aucun matériel ou machine d'équilibrage de charge, il fait simplement son travail sur chaque partie hôte du cluster de machines. C'est une solution de clustering très simple et non prévue pour des clusters complexes et importants, elle ne possède pas de gestion de détection de collision native, mais peut être implémentée comme un simple script.
Tous les serveurs du cluster utilisent une Multicast MAC commune pour une VIP, et un algorithme spécial est utilisé dans la cible CLUSTERIP pour savoir quels participants au cluster répondront à chaque connexion. Une Multicast MAC est une adresse MAC (adresse matérielle) démarrant avec 01:00:5e. Un exemple d'adresse MAC serait 01:00:5e:00:00:20. La VIP peut être n'importe quelle adresse IP, mais doit être la même sur tous les hôtes.
Important | |
---|---|
Souvenez vous que CLUSTERIP peut interrompre des protocoles comme SSH, etc. La connexion s'acheminera proprement, mais si vous essayez en même temps sur le même hôte, vous pourrez être connecté sur une autre machine du cluster, avec un jeu de clés différent, et votre client ssh peut refuser de se connecter ou afficher des erreurs. Pour cette raison, ça ne fonctionne pas très bien avec certains protocoles, et ce peut être une bonne idée d'ajouter des adresses séparées qui peuvent être utilisées pour la maintenance et l'administration. Une autre solution est d'utiliser les mêmes clés SSH sur tous les hôtes du cluster. |
Le cluster peut être en équilibrage de charge avec trois sortes d'empreintes numériques. La première est seulement l'IP source (sourceip), la seconde est la source IP et le port (sourceip-sourceport) et la troisième la source IP le port source et le port destination (sourceip-sourceport-destport). La première est très utile si vous avez besoin de conserver les états entre connexions, par exemple un serveur web avec un panier d'achat virtuel peut conserver les états entre connexions, cet équilibrage de charge peut devenir un peu brouillon -- différentes machines peuvent avoir une charge plus haute que d'autres, etc. -- car les connexions depuis la même IP source iront vers le même serveur. L'empreinte numérique sourceip-sourceport est utile si vous voulez obtenir un équilibrage de charge un peu plus uniforme, et où les états n'ont pas à être conservés sur chaque serveur entre les connexions. Par exemple, une grosse page web de documentation avec peut être un simple moteur de recherche semble une bonne idée dans ce cas. La troisème empreinte numérique, sourceip-sourceport-destport, peut vous rendre des services si vous avez un hôte sur lequel tournent plusieurs services qui ne nécessitent pas que les états soient préservés entre les connexions. Ce peut être par exemple un simple ntp, dns et serveur web sur le même hôte. Chaque connexion vers chaque nouvelle destination devra être "renégociée" -- actuellement il n'y a pas de négociation, chaque hôte reçoit une connexion.
Chaque cluster CLUSTERIP possède un fichier
séparé dans le répertoire /proc/net/ipt_CLUSTERIP
, basé sur la VIP du
cluster. Si la VIP est 192.168.0.5 par exemple, faire un
cat
/proc/net/ipt_CLUSTERIP/192.168.0.5 pour voir à
quels noeuds la machine répond. Pour faire en sorte que la machine
réponde à une autre machine, placez le noeud 2, en utilisant
echo "+2" >>
/proc/net/ipt_CLUSTERIP/192.168.0.5. Pour le
supprimer lancez echo "-2" >>
/proc/net/ipt_CLUSTERIP/192.168.0.5.
Tableau 11.2. Options de la cible CLUSTERIP
Option | --new |
Exemple | iptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new ... |
Explication | Ceci crée une nouvelle entrée
CLUSTERIP. Elle doit
être placée dans la première règle pour une VIP, et est utilisée
pour créer un nouveau cluster. Si vous avez plusieurs règles de
connexion vers le même CLUSTERIP vous pouvez omettre le
mot-clé --new dans
toutes les références secondaires vers la même VIP . |
Option | --hashmode |
Exemple | iptables -A INPUT -p tcp -d 192.168.0.5 --dport 443 -j CLUSTERIP --new --hashmode sourceip ... |
Explication |
Le mot-clé --hashmode spécifie le genre d'empreinte numérique qui sera créée. Elle peut être l'une des trois suivantes :
L'empreinte numérique a été expliquée ci-dessus. De façon basique sourceip donnera de meilleures performances entre les connexions, mais ne possède pas un bon équlibrage de charge entre les machines. sourceip-sourceport procure un mode de hachage légèrement plus lent et n'a pas une bonne maintenance d'états entre les connexions, mais permet un meilleur équlibrage de charge. La dernière crée des modes de hachage très lents consommant beaucoup de mémoire, mais permet un équlibrage de charge très performant. |
Option | --clustermac |
Exemple | iptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5e:00:00:20 ... |
Explication | L'adresse MAC que le cluster écoute pour les nouvelles connexions. C'est une adresse Multicast MAC sur laquelle tous les hôtes sont en écoute. Voir plus haut pour plus d'explication. |
Option | --total-nodes |
Exemple | iptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5e:00:00:20 --total-nodes 2 ... |
Explication | Le mot-clé --total-nodes spécifie combien d'hôtes participent au cluster et répondront aux requêtes. Voir plus haut pour plus d'explication. |
Option | --local-node |
Exemple | iptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5e:00:00:20 --total-nodes 2 --local-node 1 |
Explication | C'est le numéro que cette machine a dans le cluster. Le cluster répond en séquence périodiquement, donc une fois qu'une nouvelle connexion est établie par le cluster, la machine suivante répond, et la suivante, ainsi de suite. |
Option | --hash-init |
Exemple | iptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5e:00:00:20 --hash-init 1234 |
Explication | Spécifie un grenage aléatoire pour l'initialisation du hachage. |
Avertissement | |
---|---|
Cette cible est en violation de la RFC 1812 - Requirements for IP Version 4 Routers aussi méfiez vous des problèmes qui pourraient survenir. La section 3.3.2 indique qu'un routeur ne doit jamais faire confiance à un autre routeur ou hôte qui indique utiliser une Multicast MAC. |
Note | |
---|---|
Fonctionne avec les derniers noyaux Linux 2.6, indiqué comme expérimental. |