2016-06-24 25 views
1

Anwendungsfall: Haproxy Container läuft mit Docker komponieren. Ich möchte, dass der Container erkennt, welche Hosts verfügbar sind, um die haproxy-Konfiguration neu zu erstellen und neu zu laden.Wie kann ein Container Hosts auflisten, die im Netzwerk verfügbar sind?

Ich weiß, dass es einen oder mehrere Container namens server1 und server2 geben wird. Innerhalb des Haproxy-Containers kann ich DNS für Server1 abfragen und mehr als eine IP-Adresse erhalten. Ist das der einzige Weg zu wissen, wann ein neuer Server1-Cointainer verfügbar wird oder stirbt? Ich weiß, dass ich die Docker-API von Python in einem Container verwenden kann, dem der Docker-Host-Socket zugeordnet ist, aber ich bin mir nicht sicher, ob das funktioniert, wenn ich mit Schwarm arbeite.

Die perfekte Lösung wäre eine API oder ein Befehl, mit dem ich einen Event-Handler registrieren kann, der aufgerufen wird, wenn ein neuer Container dem Netzwerk beitritt.

Antwort

0

Es gibt eine Lösung, die Sie verwenden können Registrator (https://github.com/gliderlabs/registrator), Konsul und Konsul Vorlage.

Konsul ist ein Service-Discovery Consul-Vorlage überwacht Konsul und aktualisiert HA Proxy-Konfiguration und neu zu laden. Der Registrator hört Docker Engine ab und aktualisiert Consul, wenn ein Container hoch oder runter ist.

Bitte sehen Sie das Bild:

enter image description here

Für das gesamte Tutorial, können Sie in meinem Blog verweisen (https://sonnguyen.ws/microservices-with-docker-swarm-and-consul/) zu wissen, wie es zu implementieren.