Могу ли я иметь липкие сессии с HAProxy и socket.io с аутентификацией?

У меня есть несколько экземпляров socket.io с аутентификацией, работающей под HAProxy, и мне нужно заставить этот запрос аутентификации и соединение с сокетом идти к одному и тому же экземпляру. Я настроил HAProxy на основеэтот ответ на вопрос ТАК с некоторыми изменениями как так:

global
    maxconn     4096 # Total Max Connections. This is dependent on ulimit
    nbproc      2

defaults
    mode        http

frontend all 0.0.0.0:80
    timeout client 86400000
    default_backend www_backend
    acl is_websocket hdr(Upgrade) -i WebSocket
    acl is_websocket hdr_beg(Host) -i ws

    use_backend socket_backend if is_websocket

backend www_backend
    balance url_param sessionId
    option forwardfor # This sets X-Forwarded-For
    timeout server 30000
    timeout connect 4000
    server server1 localhost:8081 weight 1 maxconn 1024 check
    server server2 localhost:8082 weight 1 maxconn 1024 check
    server server3 localhost:8083 weight 1 maxconn 1024 check

backend socket_backend
    balance url_param sessionId
    option forwardfor # This sets X-Forwarded-For
    timeout queue 5000
    timeout server 86400000
    timeout connect 86400000
    server server1 localhost:8081 weight 1 maxconn 1024 check
    server server2 localhost:8082 weight 1 maxconn 1024 check
    server server3 localhost:8083 weight 1 maxconn 1024 check

Я пробовал url_param (где sessionId - параметр строки запроса, передаваемый как в вызове аутентификации, так и в соединении веб-сокета) и источник в качестве параметров баланса, но кажется, что HAProxy разрешает только эти параметры для соединений HTTP и поэтому игнорирует их для фактического веб-сокета подключение. В результате иногда запрос на аутентификацию и подключение к сокету оказываются на разных серверах, что неприемлемо для нашего приложения.

Есть ли способ получить это желаемое поведение?

Ответы на вопрос(4)

Ваш ответ на вопрос