Мы запускаем наши серверы на инстансах AWS EC2. Серверы должны предоставлять HTTP на порт 80 и RTMP (TCP) на порт 1935.
Запуск одного экземпляра работает нормально. Но как только я использую Elastic Load Balancing для балансировки нагрузки между двумя экземплярами EC2, через минуту соединение RTMP (TCP) теряется. Несмотря на то, что наше приложение должно допускать разрывы соединения, сейчас этого не происходит.
Используя haproxy для балансировки нагрузки, мы не наблюдаем этих преждевременных отключений. Тем не менее, Elastic Load Balancer привлекает нас из-за функции автоматического масштабирования.
Есть ли предложения, почему это происходит, когда мы используем AWS Elastic Load Balancer?
Благодаря l1x я сам нашел ответ на форуме сообщества разработчиков AWS.
Похоже, что происходит тайм-аут соединения.
Если нет данных, записанных или прочитанных при подключении к балансировщику нагрузки в течение 60 секунд, соединение закрывается.
Вы можете периодически отправлять в сокет какие-то контрольные данные, чтобы соединение не было закрыто. Какие запросы вы выполняете, которые занимают больше 60 секунд и не отправляют / не получают никаких данных?
Согласно ветке из ветки, инженеры AWS, тем не менее, исследуют эту проблему. Возможно, в ближайшем будущем тайм-аут можно будет настроить.
А пока я попробую решение для сердцебиения.
Думаю, вам нужно изучить эту проблему глубже, попросив их оказать вам поддержку. Слишком мало информации для удаленного ответа на ваш вопрос :)