nginx-ingress sticky-сессия для приложения websocket - PullRequest
0 голосов
/ 27 мая 2019

У меня есть приложение .net websocket внутри кластера K8s.Мне нужно реализовать липкую сессию для веб-сокета, используя nginx с открытым исходным кодом.

Я прочитал документацию по nginx и kubernetes.https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#session-affinity

В нем говорится, что мы можем использовать приведенную ниже конфигурацию для липкой сессии:

nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "ingresscoookie"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800

, но, похоже, это не работает.Я попробовал пример кода, предоставленного kubernetes здесь https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/affinity/cookie/ingress.yaml.

Это работает для меня, поэтому я считаю, что сходство сеансов на основе файлов cookie, похоже, не работает для веб-сокетов.

При дальнейшем копании документациион говорит, что я могу использовать алгоритм хэширования IP.поэтому я попытался использовать приведенную ниже аннотацию.

nginx.ingress.kubernetes.io/upstream-hash-by: "$remote_addr"

это также не удалось.Запросы по-прежнему сбалансированы с использованием алгоритма по умолчанию.

Как добиться устойчивости сеанса?

...