В kubernetes у меня есть развертывание из 3 модулей, отвечающих за сокеты.
Я хочу сбалансировать нагрузку трафика между модулями развертывания. Для этого я использую контроллер NGINX Ingress, установленный через Helm, используя диаграмму stable / nginx-ingress .
. Проблема в том, что клиенты всегда подключаются к одному и тому же модулю. Балансировка отсутствует.
Чтобы проверить балансировку нагрузки, я использую несколько телефонов с данными (2-6 телефонов). Каждый из них открывает сокет соединения.
У меня есть 2 правила входа. Для сокетов я использую:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-socket-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/websocket-services: "node-socket-service"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/upstream-hash-by: "$host"
spec:
tls:
- hosts:
- example.com
rules:
- host: example.com
http:
paths:
- path: /socket.io/
backend:
servicePort: 4000
serviceName: node-socket-service
Сервис:
apiVersion: v1
kind: Service
metadata:
name: node-socket-service
spec:
type: ClusterIP
selector:
component: node-socket
ports:
- port: 4000
targetPort: 4000
Я попытался изменить значение upstream-hash-by
с помощью: $binary_remote_addr
$remote_addr
$host
ewma
$request_uri
, безуспешно ...
Интересно, хорошо ли то, что я делаю тест? Может быть, балансировка нагрузки работает хорошо, но ей нужно больше клиентов.