2017-06-22 3 views
1

Ceci est probablement une question simple mais je me demande comment les autres le font. J'ai un cluster Docker Swarm Mode avec 3 managers. Disons que ils ont la propriété intellectuelle deCluster Docker Swarm Hosts

  • 192.168.1.10
  • 192.168.1.20
  • 192.168.1.30

Je peux accéder à mon conteneur Web à travers l'un des IP de, à travers les mailles de routage interne etc. Mais au cas où l'hôte descendrait avec l'IP j'accède à mon conteneur web avec évidemment je ne serai plus routé vers le conteneur. J'ai donc besoin d'une sorte d'enregistrement DNS unique ou quelque chose qui me pointe vers une adresse active dans mon cluster.

Comment faites-vous les gars? Dois-je ajouter les trois adresses IP comme enregistrements A au DNS? Ou avez un équilibreur de charge/proxy inverse en face du cluster?

Je suppose qu'il ya plus d'une solution, serait bien d'entendre comment les autres ont résolu ce problème :-)

Merci beaucoup

Répondre

0

En supposant que votre serveur web a été lancé quelque chose comme ceci:

docker service create --replicas=1 -p 80:80 nginx:alpine 

Le cluster tentera de replanifier cette réplique si la réplique devait tomber pour une raison quelconque. Avec seulement 1 réplique, vous pouvez rencontrer un temps d'arrêt entre l'ancienne tâche disparaissant, dans la nouvelle tâche à venir ailleurs.

Une partie de l'objectif de conception de la fonction de maillage de routage était en effet de simplifier la configuration d'équilibrage de charge. Étant donné que tous les membres du cluster écoutent sur le port 80 dans mon exemple, votre équilibreur de charge peut simplement être configuré pour écouter les trois ips. En supposant que l'équilibreur de charge puisse détecter correctement le nœud qui tombe en panne, la tâche sera replanifiée quelque part dans le cluster, et l'un des deux nœuds restants sera en mesure d'acheminer le trafic via le maillage de routage.

+0

C'était ce que nous étions sur le point de configurer. Je me demandais quel type d'équilibreur de charge "externe" ou de proxy inverse en face de l'essaim est le plus commun? HAProxy, nginx ou un NLB? une suggestion quelle est une sorte de «meilleure pratique»? – Matteo

+0

De manière générale, je recommande de mettre un équilibreur de charge de couche 3 devant le maillage de routage en mode essaim. Je le trouve beaucoup plus commun à haproxy et nginx fonctionnant à l'intérieur du cluster de mode d'essaim. – programmerq