Partage
  • Partager sur Facebook
  • Partager sur Twitter

Principe d'une Cluster failover

    15 mars 2019 à 11:02:27

    Bonjour à tous !

    On trouve sur Internet pas mal de ressources qui expliquent comment réaliser un Cluster Haute Disponibilité (ou failover) sous Debian en utilisant HeartBeat et Pacemaker. Néanmoins, je n'arrive pas à trouver de ressources expliquant ce qui se passe du point de vue réseau.

    Supposons que je possède sur un même réseau local deux serveurs Web d'IP respectives 192.168.1.1 et 192.168.1.2. J'ai sur ces deux machines un serveur Web Apache, et je possède une troisième machine me servant de DNS pour accéder à monsite.com. Finalement, toutes les requêtes vers mon site arrivent bien sur le port 80 de ma première machine. Supposons alors ladite machine tombe. Que la seconde en soit notifiée, je conçois, on envoie une requête, il répond pas, il est mort. Maintenant, comment cette machine peut prendre le relais ? Faut-il que je dise à mon DNS que lorsque ma première machine meurt, il indique l'adresse IP de la seconde ?

    En bref, étant donné deux serveurs Web, y a-t-il moyen de faire en sorte que l'un prenne le relais de l'autre sans configurer de troisième machine ? Parce que j'ai l'impression que c'est ce que me vendent les ressources que je trouve mais je n'arrive pas à comprendre ce qu'il se passe alors.

    Merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      15 mars 2019 à 11:23:46

      Hello,

      La plupart du temps on utilise une IP flotante, ou floating IP (voir sur internet pour plus de détails).

      En gros chaque serveur a une Ip et en plus il existe une IP flotante commune (3 Ip au total). l'IP flotante ne change pas et est celle qui doit être renseignée dans le DNS. Par contre, la correspondance MAC <->Ip flotante peut changer suivant la dispo des serveurs via un ARP gratuitous. (en placant la mac du serveur 1 quand il marche ou du serveur 2 si il ne marche plus).

      Cherche sur internet Ip flotante ou floating Ip avec le serveur que tu veux mettre en place (ici un serveur web).

      -
      Edité par nicox11 15 mars 2019 à 11:27:48

      • Partager sur Facebook
      • Partager sur Twitter
        15 mars 2019 à 15:57:21

        Du coup, je renseigne dans mon DNS l'IP flottante en question. Cette IP, elle désigne dans mon DNS ma première machine. Si cette première machine est amenée à tomber, ce dont le DNS est au courant soit en checkant régulièrement qu'elle est vivante soit par signal de la deuxième machine, alors l'IP en question désignera désormais la deuxième machine. C'est bien ça ? :)
        • Partager sur Facebook
        • Partager sur Twitter
          15 mars 2019 à 16:10:00

          Le DNS ne rentre pas en jeu dans ce mécanisme. Il pointe en permanance vers l'ip flotante.

          Si tu as :

          Machine A X.X.X.X

          Machine B Y.Y.Y.Y

          et Ip flotante Z.Z.Z.Z

          Ton enregistrement DNS sera toujours toto => Z.Z.Z.Z

           Ce qui détermine vers quelle machine est redirigé le paquet est en fait le protocole ARP.

          En général, c'est les deux machines qui se "check" entre elles. Elles décident entre elles qui doit "porter" l'ip flotante (via un systeme de priorité par exemple). Ensuite, la machine "passive" (celle qui ne porte pas l'ip flotante) vérifie en continue que la machine "active" fonctionne toujours.

          A ce stade, la table ARP renseigne Z.Z.Z.Z => mac adress Machine A

          Si la machine passive se rend compte que la machine active ne fonctionne plus, elle émet un paquet de type "ARP gratuitous" qui permet de mettre à jour la correspondance MAC <=> IP flotante vers sa propre adresse mac. Ainsi la bascule s'effectue et tous les flux de l'IP flotante sont en direction de l'adresse MAC de la machine passive. Tu obtiens un système redondant :)

          A ce stade, la table ARP renseigne Z.Z.Z.Z => mac address Machine B

          Après il faut bien comprendre à quoi sert l'adresse IP/MAC et le protocole ARP.

          -
          Edité par nicox11 15 mars 2019 à 16:14:31

          • Partager sur Facebook
          • Partager sur Twitter
            15 mars 2019 à 16:32:14

            D'accord merci beaucoup !

            Un cas de figure que je n'ai pas rencontré en cours néanmoins : que se passe-t-il dans ce cas si le serveur B n'est pas sur le même sous-réseau que le serveur A ? Une requête va arriver, et la machine va devoir rediriger la requête vers une adresse MAC qui n'est pas sur son réseau...  :'(

            • Partager sur Facebook
            • Partager sur Twitter
              15 mars 2019 à 16:36:10

              BunshinKage a écrit:

              D'accord merci beaucoup !

              Un cas de figure que je n'ai pas rencontré en cours néanmoins : que se passe-t-il dans ce cas si le serveur B n'est pas sur le même sous-réseau que le serveur A ? Une requête va arriver, et la machine va devoir rediriger la requête vers une adresse MAC qui n'est pas sur son réseau...  :'(


              Si A et B sont dans des réseaux différents, il vaut mieux utiliser un outil externe je pense :)
              • Partager sur Facebook
              • Partager sur Twitter
                16 mars 2019 à 9:43:07

                @nicox11: Tu pourras regarder le fonctionnement de CARP sous OpenBSD qui, en plus d'avoir une IP flottante, possède une MAC flottante. Ca permet d'éviter les mises à jour de cache ARP qui peuvent parfois être délicates, notamment pour les machines qui ne tiennent pas comptes des gratuitous ARP. La bascule se fait dans la table CAM des switchs, instantanément, et pour toutes les machines du réseau :-)
                • Partager sur Facebook
                • Partager sur Twitter

                Principe d'une Cluster failover

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown