2017-01-11 2 views
0

Beim Versuch, meine Anwendung, die auf dem Andockfenster Swarm läuft, auf den Azure Container Service zu portieren, stosse ich auf den Load Balancer-Teil des Azure. Lokal habe ich eine Container-Instanz von HAproxy, die auf Swarm Master läuft und mehrere Web-Container läuft. Web-Container haben gerade die Ports freigegeben, und sie sind nicht den Computern zugeordnet, auf denen sie ausgeführt werden. Der HAproxy-Container hat den Port dem Master zugeordnet und kommuniziert intern mit meinen Webcontainern zum Lastenausgleich. Dies gibt mir die Möglichkeit, eine beliebige Anzahl von Containern mit einer begrenzten Anzahl von Arbeitern in Docker Swarm zu betreiben. Im Azure Container Service sehe ich, dass Azure Load Balancer nur mit Ports kommuniziert, die zugeordnet sind, dh ich kann nur einen Container pro Agent ausführen oder ich habe einen internen Load Balancer in meinen Containern, was bedeutet, dass die Benutzer durchgehen 2 Load Balancer, bevor Sie meine Anwendung treffen.Azure Container Services Portlastenausgleich

Kein ideales Szenario, wenn meine Anwendung Sticky-Sitzungen verwendet. Also Anscheinend Microsofts Aussage "Alles funktioniert gleich in Azure-Containern" geht für einen Wurf? Was sind die verfügbaren Lösungen oder mache ich hier etwas falsch?

Grüße, Harneet

+0

Wenn Sie zwei Agenten haben, haben Sie zwei VMs im Agentenpool und nicht zwei Container im Pool. Ich denke also, Sie können viele Container haben und die Ressourcen von VMs für Agenten auswählen, für die Sie die Kapazität benötigen. Und danach lässt ACS LB das Balancing durchführen, ohne dass HAProxy benötigt wird. – hB0

Antwort

0

Die Lösung in ACS ist fast identisch. Verwenden Sie HAProxy und lassen Sie die Azure LB dazu sprechen. Der einzige Unterschied besteht darin, dass Sie den Proxy nicht auf dem Master ausführen, sondern Swarm für einen Agenten bereitstellen.

Sie sollten auf Ihren Mastern keine Workloads ausführen. Was würden Sie tun, wenn Sie einen DDoS-Angriff haben und beispielsweise Ihre Master nicht erreichen können? Wenn Swarm den Proxy für Sie bereitstellt, bedeutet dies, dass Sie auch die Integrität des Proxys überwachen können.

Sie könnten, wenn Sie wirklich wollten, den Proxy auf dem Master ausführen, wie Sie es jetzt tun. Die Lösung wäre die gleiche, wenn die Azure LB eine öffentliche Verbindung zum Proxy herstellt, wie Sie es gerade tun.

+0

Das klingt nicht zu überzeugend, jede Anfrage wird durch 2 Load Balancer durchgeführt, bevor sie die eigentliche Web-Anwendung trifft. Auch was passiert mit mehreren Anwendungen im Cluster, ist es möglich, mehrere Lastenausgleichsfunktionen in Azure hinzuzufügen, um verschiedene Anwendungen in demselben Schwarm zu hören. –

+0

Nun, der Verkehr muss irgendwie in die Azure-Netzwerke gelangen. Wir stellen fest, dass die meisten Kunden den zusätzlichen Netzwerk-Hop für die Fähigkeit zur Migration von Container-Workloads auf eine beliebige Infrastruktur handeln. Diese Kunden, die die Netzwerk-Hops minimieren möchten, können jedoch Azure Traffic Manager verwenden, der LB für einzelne Container im Cluster bereitstellt. – rgardler

+0

Tut mir leid, ich hätte Application Gateway auch als Option erwähnt, da es billiger ist ;-) – rgardler