У меня возникла странная проблема с SignalR с помощью разных балансировщиков нагрузки (я попробовал балансировку эластичной нагрузки и HAProxy).SignalR через балансировщик нагрузки
Моя установка выглядит следующим образом:
клиент C# -> HAProxy -> (SignalR Хост 1 или SignalR хоста 2)
HAProxy настроен на roundrobin с печеньем для обеспечения сессии липкости
баланс roundrobin
печенья SERVERID вставки непрямого NoCache
Когда у меня есть один SignalR хост за прокси (с помощью длинного опроса или сервера Отправить событие) все работает отлично. Я могу подключиться, вызвать методы и обработать обратные вызовы.
Как только я добавляю второй сервер SignalR, все начинает плохо работать. Я могу подключиться нормально, а соединения правильно загружают баланс. Я могу отправлять сообщения, и они правильно прикрепляются к серверу. Проблема в том, что обратные вызовы просто не возвращают мой клиент через прокси.
Что такое недоумение, это прекрасно работает с одним хостом, настроенным на балансировщике нагрузки.
Другое примечание: я не хочу масштабировать SignalR с объединительной панелью. Мои хосты signalr не должны знать друг о друге или заботиться о подключенных клиентах. В моей архитектуре SignalR является интерфейсом уровня уровня приложения, который обрабатывает широковещательные услуги связи. Я использую Signlar, чтобы поддерживать push-уведомления из приложения.
Мысли?
Вы счастливы, что сообщение, посланное клиентом не может достичь других подключенных клиентов из-за них, возможно, является подключен к различным концентраторам? – cdsln
Да, как я уже сказал, signalr - это внешний интерфейс другого уровня приложений. Связь между концентраторами осуществляется через этот другой уровень. – bsmatt