2017-06-20 2 views
2

Wenn Sie einen Pod in Openshift3 vergrößern, werden alle Anforderungen, die von derselben Client-IP-Adresse stammen, an den Container gesendet, mit dem die Sitzung verknüpft ist.Deaktivieren von Sticky-Sitzungen in Openshift3

Gibt es eine Konfiguration zum Deaktivieren von Sticky-Sitzungen? Wie kann ich die Optionen des internen HAProxy in Openshift verwalten?

Antwort

3

oc set env dc/router ROUTER_TCP_BALANCE_SCHEME=roundrobin wird den Lastausgleichsalgorithmus ändern, den haproxy für Routen verwendet, die er gerade durchläuft (Standard ist source). ROUTER_LOAD_BALANCE_ALGORITHM wird es für Routen ändern, wo es TLS beendet (Standard uns leastconn).

Weitere Informationen zum Ändern der Interna von Haproxy funktioniert in der OCP 3.5 docs.

+2

Siehe auch routespezifische Anmerkungen, um sie für bestimmte Routen anstelle der gesamten Proxykonfiguration zu überschreiben. https://docs.openshift.com/container-platform/3.5/architecture/core_concepts/routes.html#route-specific-annotations –

+0

Ich habe auch die Option hinzugefügt: oc set env dc/Spring-Boot-Beispiele ROUTER_TCP_BALANCE_SCHEME = roundrobin ROUTER_LOAD_BALANCE_ALGORITHM = Roundrobin –

2

Für die Nachwelt, und da ich das gleiche Problem hatte, möchte ich die Lösung, die ich verwendet habe, von Graham Dumpleton 's ausgezeichneten Kommentar zu dokumentieren.

Wie sich herausstellt, wird während der ersten Anfrage ein Cookie gesetzt, der nachfolgende Anfragen an dasselbe Back-End weiterleitet. So deaktivieren Sie dieses Verhalten auf einer Pro-Route Basis:

oc annotate routes myroute haproxy.router.openshift.io/disable_cookies='true' 

Dies das Cookie verhindert wird eingestellt und ermöglicht es der Abgleichsalgorithmus, um das entsprechende Back-End für nachfolgende Anforderungen von demselben Client auswählen. Um den Balance-Algorithmus zu ändern:

oc annotate routes myroute haproxy.router.openshift.io/balance='roundrobin' 

Mit diesen beiden Anmerkungen gesetzt, Anfragen vom gleichen Client-IP-Adresse werden zu jedem Back-End wiederum anstelle des gleichen Back-End über und über gesendet.