« LINUX:Loadbalancing - Distributeur (gate) » : différence entre les versions
(Page créée avec « ---- ''→ retour aux Serveurs en Loadbalancing'' ---- =But= Ce router aura pour tâche de rediriger et de répartir les requêtes venant des clients en fonction des disponibilités des serveurs du cluster. Nous allons utiliser une fonctionnalité de Linux, le LVS ou Linux Virtual Server. L'outil Ldirectord va nous y aider. Nous avons vu sont installation dans l'article sur Ldirectord.... ») |
Aucun résumé des modifications |
||
(4 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
---- | ---- | ||
''→ [[LINUX:Pacemaker - Serveurs en Loadbalancing (gate)|retour aux Serveurs en Loadbalancing]]'' | ''→ [[LINUX:Pacemaker - Serveurs en Loadbalancing (gate)|retour aux Serveurs en Loadbalancing (gate)]]'' | ||
---- | ---- | ||
=But= | =But= | ||
Cette machine aura pour tâche de rediriger et de répartir les requêtes venant des clients en fonction des disponibilités des serveurs du cluster. | |||
Nous allons utiliser une fonctionnalité de Linux, le LVS ou Linux Virtual Server. L'outil Ldirectord va nous y aider. Nous avons vu sont installation dans l'article sur [[LINUX:Ldirectord|Ldirectord]]. | Nous allons utiliser une fonctionnalité de Linux, le LVS ou Linux Virtual Server. L'outil Ldirectord va nous y aider. Nous avons vu sont installation dans l'article sur [[LINUX:Ldirectord|Ldirectord]]. | ||
Ligne 14 : | Ligne 14 : | ||
Nous allons utiliser cette machine de façon autonome mais il est très facile de l'utiliser dans une structure en Failover. | Nous allons utiliser cette machine de façon autonome mais il est très facile de l'utiliser dans une structure en Failover. | ||
Il suffit de reprendre la configuration de l'article sur les [[LINUX:Pacemaker - Routers inter LAN en Failover|Routers inter LAN en Failover]]. A la configuration de Pacemaker, on ajoute une ressource activant le service "ldirectord.service". | Il suffit de reprendre la configuration de l'article sur les [[LINUX:Pacemaker - Routers inter LAN en Failover|Routers inter LAN en Failover]]. Mais dans notre cas, nous n'avons pas à faire à un router; il n'y a qu'un seul interface réseau. Donc de cette configuration, on ne conserve qu'une adresse IP virtuelle. | ||
A la configuration de Pacemaker, on ajoute une ressource activant le service "ldirectord.service". | |||
pcs resource create ClusterLdirectord systemd:ldirectord op monitor interval=30s | pcs resource create ClusterLdirectord systemd:ldirectord op monitor interval=30s | ||
ou | ou | ||
Ligne 141 : | Ligne 142 : | ||
Ensuite viennent divers blocs, un par protocol analysé: | Ensuite viennent divers blocs, un par protocol analysé: | ||
* '''virtual''' : chaque bloc débute par ce mot; il est suivi de l'adresse IP virtuelle utilisée par le client qui fait sa requête suivie du port du protocol utilisé par le client. Cette adresse correspond au nom de machine | * '''virtual''' : chaque bloc débute par ce mot; il est suivi de l'adresse IP virtuelle utilisée par le client qui fait sa requête suivie du port du protocol utilisé par le client. Cette adresse correspond au nom de machine distrinutrice "cluster.home.dom" et à l'adresse IP "192.168.1.73". | ||
* '''real''' : est présent plusieurs fois, une ligne par serveur qui procure ce service. Dans notre cas, nous avons deux serveurs dans le cluster. Le premier paramètre est l'adresse IP réelle du serveur suivie par le n° du port de ce service sur ce serveur. Elle est suvie du type de redirection; nous utilisons le type "'''gate'''" ou "routage direct" qui est le plus simple et qui correspond à notre schéma. Enfin on attribue un poids pour la sélection; par exemple, pour le protocole HTTP (port 80), la machine "fo1.home.dom" ("192.168.1.71") recevra 100 fois moins de requêtes que la machine "fo2.home.dom" ("192.168.1.72"). | * '''real''' : est présent plusieurs fois, une ligne par serveur qui procure ce service. Dans notre cas, nous avons deux serveurs dans le cluster. Le premier paramètre est l'adresse IP réelle du serveur suivie par le n° du port de ce service sur ce serveur. Elle est suvie du type de redirection; nous utilisons le type "'''gate'''" ou "routage direct" qui est le plus simple et qui correspond à notre schéma. Enfin on attribue un poids pour la sélection; par exemple, pour le protocole HTTP (port 80), la machine "fo1.home.dom" ("192.168.1.71") recevra 100 fois moins de requêtes que la machine "fo2.home.dom" ("192.168.1.72"). | ||
* '''checktype''' : définit le type de traitement; nous utilisons le type "negotiate"; ce type va utiliser les routines de vérification incluses dans le programme. On peut utiliser le type "external" qui va utiliser un script externe créé par vous-même pour faire la vérification du bon fonctionnement du service sur la machine désignée. | * '''checktype''' : définit le type de traitement; nous utilisons le type "negotiate"; ce type va utiliser les routines de vérification incluses dans le programme. On peut utiliser le type "external" qui va utiliser un script externe créé par vous-même pour faire la vérification du bon fonctionnement du service sur la machine désignée. | ||
Ligne 159 : | Ligne 160 : | ||
=SSL= | =SSL= | ||
Quatre services utilisent le cryptage SSL et les certificats associés: HTTPS, SMTPS, POPS et IMAPS. Pour valiser ces connexions, | Quatre services utilisent le cryptage SSL et les certificats associés: HTTPS, SMTPS, POPS et IMAPS. Pour valiser ces connexions, Ldirectord doit aussi valider leurs certificats. | ||
Mais les certificats utilisés n'ont pas été validés par une authorité de certification officielle (CA). Il nous faut l'intégrer à la liste officielle | Mais les certificats utilisés n'ont pas été validés par une authorité de certification officielle (CA). Il nous faut l'intégrer à la liste officielle de la machine distributrice comme expliqué dans l'article sur les [[LINUX:Cryptage sous Linux|Certificats sous Linux]]. | ||
Dans l'article sur le [[LINUX:Pacemaker - Paramétrage des services en Failover|Paramétrage des services en Failover]], nous avions créé les certificats. Le certificat de l'authorité de certification (CA) se nomme "ca.home.crt". On va le copier dans le répertoire "/etc/pki/ca-trust/source/anchors" | Dans l'article sur le [[LINUX:Pacemaker - Paramétrage des services en Failover|Paramétrage des services en Failover]], nous avions créé les certificats. Le certificat de l'authorité de certification (CA) se nomme "ca.home.crt". On va le copier dans le répertoire "/etc/pki/ca-trust/source/anchors" de la machine distributrice "cluster.home.dom". Ensuite on exécute la commande: | ||
update-ca-trust | update-ca-trust | ||
pour l'intégrer à la liste officielle des authorités de certification officielle (CA). | pour l'intégrer à la liste officielle des authorités de certification officielle (CA). | ||
Ligne 183 : | Ligne 184 : | ||
-> RemoteAddress:Port Forward Weight ActiveConn InActConn | -> RemoteAddress:Port Forward Weight ActiveConn InActConn | ||
TCP cluster.home.dom:smtp lblcr persistent 3600 | TCP cluster.home.dom:smtp lblcr persistent 3600 | ||
-> fo1.home.dom:smtp | -> fo1.home.dom:smtp Route 65000 0 0 | ||
-> fo2.home.dom:smtp | -> fo2.home.dom:smtp Route 650 0 0 | ||
TCP cluster.home.dom:http lblcr persistent 3600 | TCP cluster.home.dom:http lblcr persistent 3600 | ||
-> fo1.home.dom:http | -> fo1.home.dom:http Route 650 0 0 | ||
-> fo2.home.dom:http | -> fo2.home.dom:http Route 65000 0 0 | ||
TCP cluster.home.dom:pop3 lblcr persistent 3600 | TCP cluster.home.dom:pop3 lblcr persistent 3600 | ||
-> fo1.home.dom:pop3 | -> fo1.home.dom:pop3 Route 65000 0 0 | ||
-> fo2.home.dom:pop3 | -> fo2.home.dom:pop3 Route 65000 0 0 | ||
TCP cluster.home.dom:imap lblcr persistent 3600 | TCP cluster.home.dom:imap lblcr persistent 3600 | ||
-> fo1.home.dom:imap | -> fo1.home.dom:imap Route 65000 0 0 | ||
-> fo2.home.dom:imap | -> fo2.home.dom:imap Route 65000 0 0 | ||
TCP cluster.home.dom:https lblcr persistent 3600 | TCP cluster.home.dom:https lblcr persistent 3600 | ||
-> fo1.home.dom:https | -> fo1.home.dom:https Route 650 0 0 | ||
-> fo2.home.dom:https | -> fo2.home.dom:https Route 65000 0 0 | ||
TCP cluster.home.dom:smtps lblcr persistent 3600 | TCP cluster.home.dom:smtps lblcr persistent 3600 | ||
-> fo1.home.dom:smtps | -> fo1.home.dom:smtps Route 65000 0 0 | ||
-> fo2.home.dom:smtps | -> fo2.home.dom:smtps Route 650 0 0 | ||
TCP cluster.home.dom:submission lblcr persistent 3600 | TCP cluster.home.dom:submission lblcr persistent 3600 | ||
-> fo1.home.dom:submission | -> fo1.home.dom:submission Route 65000 0 0 | ||
-> fo2.home.dom:submission | -> fo2.home.dom:submission Route 650 0 0 | ||
TCP cluster.home.dom:imaps lblcr persistent 3600 | TCP cluster.home.dom:imaps lblcr persistent 3600 | ||
-> fo1.home.dom:imaps | -> fo1.home.dom:imaps Route 65000 0 0 | ||
-> fo2.home.dom:imaps | -> fo2.home.dom:imaps Route 65000 0 0 | ||
TCP cluster.home.dom:pop3s lblcr persistent 3600 | TCP cluster.home.dom:pop3s lblcr persistent 3600 | ||
-> fo1.home.dom:pop3s | -> fo1.home.dom:pop3s Route 65000 0 0 | ||
-> fo2.home.dom:pop3s | -> fo2.home.dom:pop3s Route 65000 0 0 | ||
---- | ---- | ||
Ligne 235 : | Ligne 236 : | ||
---- | ---- | ||
''→ [[LINUX:Pacemaker - Serveurs en Loadbalancing (gate)|retour aux Serveurs en Loadbalancing]]'' | ''→ [[LINUX:Pacemaker - Serveurs en Loadbalancing (gate)|retour aux Serveurs en Loadbalancing (gate)]]'' | ||
---- | ---- | ||
__NOEDITSECTION__ | __NOEDITSECTION__ | ||
[[Category:LINUX]] | [[Category:LINUX]] |
Dernière version du 22 juin 2023 à 21:42
→ retour aux Serveurs en Loadbalancing (gate)
But
Cette machine aura pour tâche de rediriger et de répartir les requêtes venant des clients en fonction des disponibilités des serveurs du cluster.
Nous allons utiliser une fonctionnalité de Linux, le LVS ou Linux Virtual Server. L'outil Ldirectord va nous y aider. Nous avons vu sont installation dans l'article sur Ldirectord.
Cet outil vérifie la disponibilité des services des serveurs du cluster. Ensuite toute requête lui venant de la part de clients sera redirigée vers un des deux serveurs du cluster en fonction des disponibilités.
Configuration en Failover
Nous allons utiliser cette machine de façon autonome mais il est très facile de l'utiliser dans une structure en Failover.
Il suffit de reprendre la configuration de l'article sur les Routers inter LAN en Failover. Mais dans notre cas, nous n'avons pas à faire à un router; il n'y a qu'un seul interface réseau. Donc de cette configuration, on ne conserve qu'une adresse IP virtuelle. A la configuration de Pacemaker, on ajoute une ressource activant le service "ldirectord.service".
pcs resource create ClusterLdirectord systemd:ldirectord op monitor interval=30s
ou
pcs resource create ClusterLdirectord ocf:heartbeat:ldirectord configfile=/etc/ha.d/ldirectord.cf ldirectord=/usr/sbin/ldirectord op monitor interval=30s
et ensuite:
pcs constraint colocation add ClusterLdirectord with ClusterIPint score=INFINITY pcs constraint order ClusterIPint then start ClusterLdirectord
Fichier de configuration
Le fichier de configuration se nomme "/etc/ha.d/ldirectord.cf". Il existe plusieurs types de configuration. Voici le contenu choisi:
emailalert="root" emailalertfreq=3600 emailalertstatus=all quiescent=yes checkinterval=20 fork=yes virtual=192.168.1.73:80 real=192.168.1.71:80 gate 650 real=192.168.1.72:80 gate 65000 request="vivant.html" receive="Je suis vivant." checktype=negotiate service=http scheduler=lblcr persistent=3600 protocol=tcp checkport=80 virtual=192.168.1.73:443 real=192.168.1.71:443 gate 650 real=192.168.1.72:443 gate 65000 request="vivant.html" receive="Je suis vivant." checktype=negotiate service=https scheduler=lblcr persistent=3600 protocol=tcp checkport=443 virtual=192.168.1.73:110 real=192.168.1.71:110 gate 65000 real=192.168.1.72:110 gate 65000 service=pop scheduler=lblcr persistent=3600 protocol=tcp checktype=negotiate checkport=110 login="testmail" passwd="Bateau52Ivre" virtual=192.168.1.73:143 real=192.168.1.71:143 gate 65000 real=192.168.1.72:143 gate 65000 service=imap scheduler=lblcr persistent=3600 protocol=tcp checktype=negotiate checkport=143 login="testmail" passwd="Bateau52Ivre" virtual=192.168.1.73:993 real=192.168.1.71:993 gate 65000 real=192.168.1.72:993 gate 65000 service=imaps scheduler=lblcr persistent=3600 protocol=tcp checktype=negotiate checkport=993 login="testmail" passwd="Bateau52Ivre" virtual=192.168.1.73:995 real=192.168.1.71:995 gate 65000 real=192.168.1.72:995 gate 65000 service=pops scheduler=lblcr persistent=3600 protocol=tcp checktype=negotiate checkport=995 login="testmail" passwd="Bateau52Ivre" virtual=192.168.1.73:25 real=192.168.1.71:25 gate 65000 real=192.168.1.72:25 gate 650 service=smtp scheduler=lblcr persistent=3600 protocol=tcp checktype=negotiate checkport=25 virtual=192.168.1.73:587 real=192.168.1.71:587 gate 65000 real=192.168.1.72:587 gate 650 service=submission scheduler=lblcr persistent=3600 protocol=tcp checktype=negotiate checkport=587 virtual=192.168.1.73:465 real=192.168.1.71:465 gate 65000 real=192.168.1.72:465 gate 650 service=smtps scheduler=lblcr persistent=3600 protocol=tcp checktype=negotiate checkport=465
En début, diverses options générales sont reprises. Les noms de variables sont parlantes. Voyez l'aide pour plus de détails; il existe d'autres options.
Par exemple:
- checkinterval : définit en secondes l'interval entre deux vérifications. La réactivité du système dépend de ce paramètre.
Ensuite viennent divers blocs, un par protocol analysé:
- virtual : chaque bloc débute par ce mot; il est suivi de l'adresse IP virtuelle utilisée par le client qui fait sa requête suivie du port du protocol utilisé par le client. Cette adresse correspond au nom de machine distrinutrice "cluster.home.dom" et à l'adresse IP "192.168.1.73".
- real : est présent plusieurs fois, une ligne par serveur qui procure ce service. Dans notre cas, nous avons deux serveurs dans le cluster. Le premier paramètre est l'adresse IP réelle du serveur suivie par le n° du port de ce service sur ce serveur. Elle est suvie du type de redirection; nous utilisons le type "gate" ou "routage direct" qui est le plus simple et qui correspond à notre schéma. Enfin on attribue un poids pour la sélection; par exemple, pour le protocole HTTP (port 80), la machine "fo1.home.dom" ("192.168.1.71") recevra 100 fois moins de requêtes que la machine "fo2.home.dom" ("192.168.1.72").
- checktype : définit le type de traitement; nous utilisons le type "negotiate"; ce type va utiliser les routines de vérification incluses dans le programme. On peut utiliser le type "external" qui va utiliser un script externe créé par vous-même pour faire la vérification du bon fonctionnement du service sur la machine désignée.
- service : dans cas de "checktype=negotiate", il définit la routine interne qui sera utilisée.
- checkport : est là au cas où vous n'utilieriez pas un port standard.
- protocol : se passe de commentaire; nos services utilisent le protocole "tcp".
- scheduler : spécifie le mode de répartition; il y en a beaucoup; nous avons choisi "lblcr". Il utilise le système des poids; tous ne le permettent pas. La répartition est aléatoire mais il veille à ce que la charge par machine respecte les poids. Si pour un client donné (adresse IP source), une connexion est envoyée à un serveur, les suivantes suivront le même chemin.
- persistent : temps en secondes gardant la connexion en mémoire
Ensuite nous trouvons plusieurs options spécifiques à chaque protocole:
- HTTP et HTTPS
- request : fourni l'URL à interroger; le paramètre donné est "vivant.html"; c'est pour cette raison que nous avons créé le fichier "/data/web/vivant.html" dans de l'article précédent.
- receive : attend la réponse "Je suis vivant.".
- POP, POPS, IMAP et IMAPS
- login : fournit le nom d'utilisateur de messagerie pour effectuer une connexion au compte; c'est pour cette raison que nous avons créé le le compte "testmail" dans de l'article précédent.
- passwd : fournit le mot de passe associé.
SSL
Quatre services utilisent le cryptage SSL et les certificats associés: HTTPS, SMTPS, POPS et IMAPS. Pour valiser ces connexions, Ldirectord doit aussi valider leurs certificats.
Mais les certificats utilisés n'ont pas été validés par une authorité de certification officielle (CA). Il nous faut l'intégrer à la liste officielle de la machine distributrice comme expliqué dans l'article sur les Certificats sous Linux.
Dans l'article sur le Paramétrage des services en Failover, nous avions créé les certificats. Le certificat de l'authorité de certification (CA) se nomme "ca.home.crt". On va le copier dans le répertoire "/etc/pki/ca-trust/source/anchors" de la machine distributrice "cluster.home.dom". Ensuite on exécute la commande:
update-ca-trust
pour l'intégrer à la liste officielle des authorités de certification officielle (CA).
Activation et lancement du service
La configuration terminée, il faut activer et lancer ce service "ldirectord.service":
systemctl enable ldirectord.service systemctl start ldirectord.service
Statut
Pour visualiser l'état du système, on utilise la commande suivante:
ipvsadm
qui donne:
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP cluster.home.dom:smtp lblcr persistent 3600 -> fo1.home.dom:smtp Route 65000 0 0 -> fo2.home.dom:smtp Route 650 0 0 TCP cluster.home.dom:http lblcr persistent 3600 -> fo1.home.dom:http Route 650 0 0 -> fo2.home.dom:http Route 65000 0 0 TCP cluster.home.dom:pop3 lblcr persistent 3600 -> fo1.home.dom:pop3 Route 65000 0 0 -> fo2.home.dom:pop3 Route 65000 0 0 TCP cluster.home.dom:imap lblcr persistent 3600 -> fo1.home.dom:imap Route 65000 0 0 -> fo2.home.dom:imap Route 65000 0 0 TCP cluster.home.dom:https lblcr persistent 3600 -> fo1.home.dom:https Route 650 0 0 -> fo2.home.dom:https Route 65000 0 0 TCP cluster.home.dom:smtps lblcr persistent 3600 -> fo1.home.dom:smtps Route 65000 0 0 -> fo2.home.dom:smtps Route 650 0 0 TCP cluster.home.dom:submission lblcr persistent 3600 -> fo1.home.dom:submission Route 65000 0 0 -> fo2.home.dom:submission Route 650 0 0 TCP cluster.home.dom:imaps lblcr persistent 3600 -> fo1.home.dom:imaps Route 65000 0 0 -> fo2.home.dom:imaps Route 65000 0 0 TCP cluster.home.dom:pop3s lblcr persistent 3600 -> fo1.home.dom:pop3s Route 65000 0 0 -> fo2.home.dom:pop3s Route 65000 0 0
Accès pour les clients
Notons que sur les machines clients, le nom de machine "cluster.home.dom" doit être connu et lié à l'adresse IP "192.168.1.73". (serveur DNS ou fichiers "hosts" local)
Pour accéder au site Web, l'URL est:
https://cluster.home.dom
qui affichera:
Nom du serveur: fo1.home.dom
Du côté de la messagerie, Le serveur est "cluster.home.dom". Par exemple pour l'utilisateur "pdupont", l'adresse mail est "pdupont@failover.dom" et le nom de compte est "pdupont" accompagné du mot de passe Linux associé. Le reste est classique.
→ retour aux Serveurs en Loadbalancing (gate)