Назад | Перейти на главную страницу

Как запустить сервер Parse Live Query (веб-сокеты) за балансировщиком нагрузки AWS?

ParseLiveQuery зависит от веб-сокетов. В более общем плане этот вопрос может касаться того, чтобы веб-сокеты работали за AWS ELB.

Я использую новый сервер Parse Server, настроенный в AWS с использованием Elastic Beanstalk (EB). EB настраивает экземпляр EC2 за балансировщиком нагрузки, и для работы нам необходимо автоматическое масштабирование. Сервер разбора работает очень хорошо.

Я настраиваю наш сервер для использования новой реализации Parse Live Query, которая использует WebSockets.

  1. Локально у меня все работает.
  2. Мое приложение клиента iOS подключится и будет работать, если я подключу LiveQueryClient напрямую к общедоступному DNS одного из наших экземпляров ParseServer. например http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com
  3. Однако я недостаточно силен, чтобы понять, почему наш код LiveQuery не работает через DNS-запись Load Balancer. например http://parseserver-xxxxxx-env.us-east-1.elasticbeanstalk.com

Я получаю ошибку 404, если указываю клиенту на балансировщик нагрузки: Error Domain=SRWebSocketErrorDomain Code=2132 "received bad response code from server 404"

Если он работает локально - например, обходя LB, то я бы предположил, что LB не настроен для передачи запросов к внутренним серверам на этом порту. Вашему LB потребуются некоторые новые правила для маршрутизации трафика на поддерживаемые вами хосты в зависимости от порта назначения, который прослушивает ваша служба. Дополнительные сведения см. В AWS.

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-add-or-delete-listeners.html

похоже, что веб-сокеты официально не поддерживаются в AWS ELB, поэтому вам может потребоваться один из текущих обходных путей https://forums.aws.amazon.com/thread.jspa?messageID=589328