Мы пытаемся разработать архитектуру, которая сможет обработать больше, чем 64k websockets.
Мы сначала попробовали Amazon ELB, но его дизайн не позволяет неожиданный скачок трафика, ни websocket. (Тайм-аут режима TCP websockets неожиданно)
С HAProxy не применяются те пределы, но мы будем ограничены ~64k websockets сохраняемый между HA и серверами бэкэнда.
Несколько решений, которые пришли на ум:
Существует ли лучший способ сделать это?
Если ваш 64k ограничение связано с портами исходных текстов, вы можете сделать что-то вроде следующего (немного хаккейского, но в настоящее время мы делаем в SE для вебсокетов (у нас есть что-то вроде .5 миллионов одновременно обычно с HAProxy):
server ny-web01-1 10.0.0.1:8081 check
server ny-web01-2 10.0.0.1:8082 check
server ny-web01-3 10.0.0.1:8083 check
Также несколько экземпляров можно сделать с keepalived. Просто сделайте что-нибудь вроде кругового DNS по нескольким IP-адресам. Просто убедитесь, что IP-адреса всегда получаются активными балансировщиками нагрузки, так как DNS сам по себе не даст вам балансировку нагрузки (здесь есть и другие опции, эта тоже простая)
.Вы можете настроить несколько систем HAproxy, которые имеют одинаковые IP-адреса, используя Anycast и BGP или какой-нибудь другой протокол пограничной маршрутизации. Таким образом, все HAproxy системы будут активны; если какая-либо из них пойдет вниз, вы остановите рекламный BGP маршрут на этой системе, и он через ~30 секунд прекратит принимать трафик; который будет перенаправлен на другие доступные системы, которые рекламируют тот же самый диапазон.
Например, проверьте эту url о том, как настроить такую раскладку
.