2017-09-16 2 views
0

Je suis en train d'optimiser l'équilibrage de charge Docker-Swarm d'une manière qu'il va d'abord les demandes vers les services de la priorité suivanteDocker Swarm - équilibrage de charge au noeud le plus proche premier

  1. même machine
  2. Même DC
  3. Partout ailleurs.

Compte tenu de la configuration suivante:

  • DataCenter-I
    • serveur-I
      • Nginx: 80
    • serveur-II
      • Nginx: 80
      • Travailleur
  • DataCenter-II
    • serveur-I
      • Nginx: 80
      • Travailleur

Dans le cas et DataCenter-I :: Serveur-II :: Worker émettra une demande d'API sur le port 80, le comportement souhaité est:

  • Vérifiez s'il y a des tâches (conteneurs) mappé au port: 80 sur le serveur local (DataCenter-I :: serveur-II)
  • et vérifier dans Fallback DataCenter locale (DataCenter-I :: serveur-I)
  • et vérifier Fallback dans tous les groupes (c.-à-DataCenter -II :: Server-I)

Ce cas est très utile lors de l'utilisation de travailleurs et le temps de réponse n'a pas d'importance lorsque la bande passante est importante.

S'il vous plaît aviser, Merci!

Répondre

0

Selon ce question j'ai demandé avant, l'essaim de docker utilise actuellement seulement le tourniquet et aucune indication pour être encore extensible. Cependant, Nginx Plus supporte la méthode d'équilibrage de charge least_time, qui, je pense, aura un module open-source similaire, et est similaire à ce dont vous avez besoin, avec peut-être le moindre effort. Ps: N'exécutez pas Nginx avec l'essaim docker. À la place, exécutez Nginx avec docker standard ou docker-compose dans le même réseau de docker de votre application. Vous ne voulez pas que swarmer swarm charge l'équilibrage de votre équilibreur de charge.