Автомасштабирование Edge. Сокращение инстансов

Ilya K.

Member
Здравствуйте.
Используем автоматическое масштабирование Edge посредством AWS autoscalling (вместе с Classic load balancer).
Следующий сценарий:
-по умолчанию работает 1 edge.
-После подачи определённой нагрузки срабатывает политика, разворачивается дополнительный edge
-Подключаются новые пользователи, соединения по сокетам установлены с двумя edge.
-Часть пользователей закрывают соединения, но соединения, по прежнему, установлены с двумя edge.
-AWS инициирует сокращение второго инстанса (т.к. желаемое количество в политике установлено в 1). Все соединения на втором edge прерываются, соответственно, прерывается стрим у некоторых пользователей.

Можете ли порекомендовать методы перенаправления соединений на работающий инстанс?
Можно ли каким-либо образом настроить правило в AWS, по которому второй edge будет остановлен только в том случае, если на нём нет ни одного соединения по сокету?
Возможно, есть другие подходы.
 

Max

Administrator
Staff member
Добрый день.
Можете ли порекомендовать методы перенаправления соединений на работающий инстанс?
Можно ли каким-либо образом настроить правило в AWS, по которому второй edge будет остановлен только в том случае, если на нём нет ни одного соединения по сокету?
Возможно, есть другие подходы.
Посмотрите, пожалуйста, документацию AWS по CloudWatch metrics. Возможно, если настроить экспорт параметра со страницы статистики WCS
Code:
http://wcs:8081/?action=stat&params=connections_websocket
в CloudWatch, то можно будет настроить граничное условие для балансера.
Другой подход: использовать собственный бэкенд, который будет обрабатывать REST хуки /connect и /ConnectionStatusEvent. Если от какого-то клиента получили ConnectionStatusEvent со статусом DISCONNECTED, и инстанс, к которому был этот коннект (это можно определить по параметру sessionId), стал недоступен, передать клиенту адрес работающего инстанса.
Еще один вариант: при получении на стороне клиента SESSION_STATUS.FAILED автоматически возобновлять проигрывание, как показано здесь. В этом случае клиент сам переподключится к работающему инстансу, т.к. пойдет по websocket на балансер. Публикацию можно возобновлять аналогичным образом.
 
Top