Подтвердить что ты не робот

Каковы проблемы с использованием WebSockets с прокси-серверами и балансировщиками нагрузки?

Я читаю SockJS node сервер. Документация гласит:

Часто WebSockets не играют хорошо с прокси-серверами и балансировщиками нагрузки. Развертывание сервера SockJS за Nginx или Apache может быть болезненным. К счастью, последние версии превосходного балансировщика нагрузки HAProxy способны прокси-соединения WebSocket. Мы предлагаем поставить HAProxy в качестве балансировщика нагрузки на первой линии и использовать его для разделения трафика SockJS на обычные HTTP-данные.

Мне интересно, может ли кто-нибудь расширить проблему, решаемую HAProxy в этом случае? В частности:

  • Почему веб-порты не работают с прокси-серверами и балансировщиками нагрузки?
  • Почему развертывание Sockjs, расположенного за Apache, является болезненным?
4b9b3361

Ответ 1

1. Почему веб-порты не работают с прокси-серверами и балансировщиками?

Я бы порекомендовал вам прочитать эту статью на Как веб-сокеты HTML5 взаимодействуют с прокси-серверами Питера Любберса. Он должен охватывать все, что вам нужно знать о WebSocket и прокси - и, следовательно, балансировщики нагрузки.

2. Почему развертывание Sockjs, расположенного за Apache, болезненно?

Существует модуль для обработки соединений WebSocket, но в настоящее время Apache не поддерживает WebSocket и не выглядит так, как это будет в любое время вскоре основанный на этой ошибке, поданной на apache - реализация HTML5 Websocket. Предполагается, что он действительно лучше подходит для шаблона модуля.

Итак, это "больно" просто потому, что это непросто - нет официальной поддержки, и поэтому у нее нет сообщества, которое в противном случае могло бы иметь.

Там также могут быть другие боли в SockJS имеет резервные передачи на основе HTTP. Таким образом, вам необходимо проксировать как соединения WebSocket (используя модуль apache-websocket), так и HTTP-запросы, когда используется резервная копия.

В связи с этим: Nginx v1.3 был выпущен в феврале с поддержкой WebSocket.