1

Мы создаем масштабированное приложение, которое использует WebSockets на AWS EC2. Мы рассматривали возможность использования ELB для балансировки по умолчанию (Elastic Load Balancing), но это необязательно делает сам балансировщик нагрузки узким местом для тяжелых операций (см. this related thread), поэтому мы в настоящее время изучаем способ отправки клиенту подробности подключения «», например, «». Тем не менее, Elastic Load Balancer API, похоже, не поддерживает запрос сортировки «, дайте мне (общедоступную) информацию о соединении хорошего экземпляра», что является нечетным, поскольку это основная функциональность любого балансировщика нагрузки. Может, я просто не посмотрел в нужное место?Балансировка загрузки веб-узлов на AWS EC2

UPDATE:

В настоящее время мы исследуем два простых решений с использованием реализации по умолчанию:

  1. Use ELB in TCP mode который Туннели весь трафик через УДР.
  2. Просто подключитесь к публичному IP-адресу экземпляра, который ELB подключил к вашему запросу GET. Второе решение требует включения общедоступных IP-адресов, но не маршрутизирует весь трафик через ELB.

Я был обеспокоен этой самой последней частью, потому что предположил, что ELB не находится в том же здании, что и экземпляр, который он вам дал. Но я предполагаю, что он обычно находится в одном здании или имеет другое высокоскоростное соединение с экземплярами? В этом случае накладные расходы на туннелирование незначительны.

Оба решения кажутся одинаково жизнеспособными или я что-то наблюдаю?

+0

Что такое AWS ECL? –

+0

Это опечатка .... – Domi

ответ

1

Если вашему приложению удается сделать ELB узким местом, то вы довольно крупная рыба. Почему бы вам не попробовать сначала использовать свой балансировщик, доверяя им, что они выполняют свою работу правильно? Трудно сделать это «лучше», и самая сложная часть этого - определить, что «лучше» в первую очередь. Вы определенно не очень хорошо определили это в своем вопросе, поэтому я вполне уверен, что вы хорошо используете только свой балансировщик нагрузки.

В некоторых случаях может возникнуть смысл разработать собственную логику балансировки нагрузки, особенно если использование вашей машины зависит от очень специальных показателей, которые не доступны для системы ELB.

+0

Спасибо за ваш вклад! Я обновил свой вопрос, возможно, это разъясняет его. – Domi

1

Да, я бы сказал, что оба решения жизнеспособны.

Поверхность второго заключается в том, что она позволяет больше настраивать логику балансировки нагрузки, которую вы можете реализовать (обеспечивая улучшение по сравнению с циклическим шифрованием ELB), отправляя запросы на сервер вашего удобства после первоначального запроса HTTP GET.

Недостатком может быть на переднем крае безопасности. Неясно, является ли безопасность и SSL частью ваших требований, но в случае, если это так, второе решение заставляет вас обрабатывать его на уровне экземпляров ec2, что может быть неудобно и влияет на производительность каждого узла. В противном случае связь с websocket может остаться необеспеченной.

Смежные вопросы