Я хочу использовать nginx.ingress.kubernetes.io/upstream-hash-by
для сетевых подключений нескольких клиентов, когда связанные клиенты (на основе URL) должны придерживаться одного и того же сервера.
Ingress- nginx, кажется, перебалансирует трафик c когда что-то меняет количество реплик (модуль отключается и будет автоматически заменен новым, или число увеличивается в масштабе времени выполнения).
Проблема с этим перебалансированием заключается в том, что он не прерывает существующие соединения. Таким образом, соединения веб-сокетов, которые уже существуют (для уже хэшированного URL), остаются в модуле A, в то время как новые подключения к тому же URL внезапно распределяются в новый порожденный модуль B.
Это мое входное определение:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: websocket-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/upstream-hash-by: "$1"
spec:
rules:
- http:
paths:
- path: /socket-service/?clients/(.*)/.*
backend:
serviceName: websocket-test
servicePort: 80
Существует ли конфигурация, позволяющая каким-либо образом управлять этим поведением, либо отключая «перебалансировку», либо автоматически прерывая существующие соединения?