1 votes

approche pour re-router les protocoles (en clair) pour les machines derrière un routeur qui sont hors service.

Je cherche depuis un certain temps déjà comment y parvenir, mais je n'arrive pas à trouver de solutions similaires ou à en synthétiser une à partir de mes connaissances.

Voici les détails de mon installation : J'ai une passerelle/routeur qui a la liaison montante vers l'internet. "Derrière, il y a plusieurs serveurs différents. Certains d'entre eux ont une IP publique, d'autres non. Dans tous les cas, tous les services que je veux exposer sont exposés soit en débloquant le port respectif sur l'IP cible, soit en DNATant le port vers l'une des machines sans IP publique. L'ensemble de cette configuration fonctionne bien (pour l'essentiel, il s'agit d'un jeu de règles basé sur un filtre réseau combiné à quelques entrées de table de routage).

Maintenant, le problème : il arrive que les machines situées derrière le routeur soient en panne (je ne peux pas me permettre une redondance supplémentaire pour le moment). Si cela se produit, j'aimerais que l'utilisateur d'un service - en particulier HTTP - puisse bénéficier d'une "meilleure" expérience utilisateur qu'un délai d'attente sur le réseau et qu'il dispose d'un serveur "de secours" qui n'afficherait qu'un bref avis indiquant que le service derrière le routeur est en panne pour le moment. Ainsi, si le routeur ne peut pas atteindre le service, il devrait réacheminer le trafic de manière dynamique vers le serveur de "secours".

Quelqu'un connaît-il une solution à ce problème ou peut-il suggérer une façon de l'aborder ? Les suggestions de termes de recherche sont également les bienvenues ...

3voto

Holger Just Points 3305

Une solution serait d'utiliser un équilibreur de charge comme HAProxy . Il prend en charge le concept de serveur de secours, de sorte que vous pouvez acheminer votre trafic vers votre serveur normal, à condition qu'il réponde aux contrôles réguliers effectués par l'équilibreur de charge. S'il ne répond plus, le trafic peut être acheminé vers des serveurs de secours qui, dans votre cas, pourraient simplement afficher une note "désolé".

L'inconvénient de cette approche est bien sûr que vous devez maintenir l'équilibreur de charge, qui peut constituer un autre point de défaillance unique. Si votre passerelle/routeur est un véritable système linux (par opposition à une boîte en plastique), ce n'est probablement pas un problème, car il est déjà un point de défaillance unique et peut probablement aussi faire fonctionner l'équilibreur de charge :)

Plus généralement, le problème à résoudre n'est pas de rediriger le trafic (il existe de nombreuses solutions pour cela) mais de détecter qu'un hôte est hors service et de modifier le routage/la redirection en conséquence. La même chose est nécessaire lorsque le serveur est remis en service, de sorte que le trafic soit à nouveau acheminé vers le serveur réel.

0voto

Steven Points 2979

La solution la moins chère, vous devriez écrire un script qui interroge le serveur backend et met à jour votre transfert de port quand il tombe en panne. Vous feriez suivre le trafic vers un autre serveur qui contient votre message d'erreur.

Les détails du script dépendent complètement des détails spécifiques de vos systèmes. Un peu de code pseudo bash très grossier :

wget backendserver > /dev/null
test_for_failure
if failed; then
  iptables -D <port forward rule>
  iptables -A <new forward rule>
else
  verify iptables is sending to the backend
fi

Dans notre environnement, tout le trafic est acheminé vers un serveur, qui fait ensuite office de proxy vers les backends. Il est configuré pour afficher les messages appropriés pendant les pannes. Cependant, il peut toujours échouer et provoquer des délais d'attente. Il est cependant dévoué à sa tâche, ce qui rend les pannes rares. L'étape suivante consisterait à l'intégrer dans un cluster, pour augmenter le temps de fonctionnement ; pour nous, le rapport coût/bénéfice n'est pas suffisant.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X