Масштабируйте HAProxy для больше, чем 64k websockets

Мы пытаемся разработать архитектуру, которая сможет обработать больше, чем 64k websockets.

Мы сначала попробовали Amazon ELB, но его дизайн не позволяет неожиданный скачок трафика, ни websocket. (Тайм-аут режима TCP websockets неожиданно)

С HAProxy не применяются те пределы, но мы будем ограничены ~64k websockets сохраняемый между HA и серверами бэкэнда.

Несколько решений, которые пришли на ум:

  • Несколько экземпляров HAProxy, баланса загрузки с DNS (Route53 имеют взвешенную опцию),
  • Два экземпляра HAProxy с Keepalived, несколько внутренних IP-адресов (не уверенный, если это выполнимо),

Существует ли лучший способ сделать это?

8
задан 5 March 2015 в 05:48
2 ответа

Если ваш 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 сам по себе не даст вам балансировку нагрузки (здесь есть и другие опции, эта тоже простая)

.
7
ответ дан 2 December 2019 в 23:03

Вы можете настроить несколько систем HAproxy, которые имеют одинаковые IP-адреса, используя Anycast и BGP или какой-нибудь другой протокол пограничной маршрутизации. Таким образом, все HAproxy системы будут активны; если какая-либо из них пойдет вниз, вы остановите рекламный BGP маршрут на этой системе, и он через ~30 секунд прекратит принимать трафик; который будет перенаправлен на другие доступные системы, которые рекламируют тот же самый диапазон.

Например, проверьте эту url о том, как настроить такую раскладку

.
0
ответ дан 2 December 2019 в 23:03

Теги

Похожие вопросы