Я пытаюсь настроить эластичный балансировщик нагрузки для маршрутизации запросов в кластер серверов node.js, на которых работает Primus.io с sockjs для управления коммуникациями в реальном времени.
Я настроил балансировщик нагрузки для прослушивания со следующей конфигурацией:
- HTTPS 8084 -> HTTPS 8084 (порт, используемый на моих серверах node.js)
- SSL 443 -> TCP 80
Насколько я понимаю, единственный способ заставить веб-сокеты работать через ELB - это через SSL-> TCP, отсюда и вышеуказанная конфигурация.
Я правильно включил новый протокол прокси для ELB, как описано здесь:
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html
При попытке подключиться к серверу от клиента сначала отправляется запрос HTTPS, а затем, насколько я могу судить, его следует обновить до веб-сокетов. Но запрос просто не выполняется, когда я отправляю его на адрес балансировщика нагрузки.
Если я отправлю начальный запрос подключения Primus к IP-адресу одного сервера nodejs, например:
var primus = new Primus('https://ip.address.of.single.server:8084');
Запрос правильно возвращен и правильно обновлен до веб-сокетов.
Когда я переключаю IP-адрес на IP-адрес балансировщика, он терпит неудачу, и первоначальный https-запрос к серверу node.js ничего не возвращает. Я предполагаю, что это означает, что передача через веб-сокет не может быть установлена, но, честно говоря, у меня мало опыта в этой области, поэтому я могу ошибаться.
Кто-нибудь знает, что я делаю не так?
заранее спасибо