Использование HAProxy для балансировки нагрузки между локациями
Часто возникают ситуации, когда сервисы запускают свои бэкенд-приложения на нескольких площадках, распределенных по всему миру. Трафик клиентов обычно привязывается к тому или иному сайту в зависимости от местоположения клиента и настроек геобалансировки. Трафик внутри площадок, как правило, распределяется между несколькими экземплярами приложений.
Иногда случается так, что сервисы привлекают больше трафика, чем могут обработать, и один или несколько сайтов оказываются перегружены. Для решения этой проблемы необходимо добавить дополнительные ресурсы на перегруженные сайты, в то время как другие площадки могут оставаться незадействованными. Ситуация может усугубиться, если нагрузка приходит всплесками, поскольку владельцы сервисов вынуждены платить за мощности, которые большую часть времени не используются.
Мой доклад о том, как использовать известное open-source решение для балансировки нагрузки (HAProxy), чтобы автоматически перераспределять нагрузку между несколькими площадками в момент резких всплесков трафика.
Перебалансировка срабатывает, когда на определенной площадке достигается определенный уровень запросов. Скорость запросов агрегируется между несколькими экземплярами HAProxy, и каждый процесс балансировки нагрузки знает о нагрузке на каждой площадке по всему миру. Таким образом, решение о перенаправлении трафика принимается с учетом того, что соседние сайты уже могут быть перегружены. Аналогичная функциональность присутствует в коммерческой версии HAProxy (Global Profiling Engine), но можно реализовать что-то подобное бесплатно, и я хочу поделиться, как это сделать. Интересный побочный эффект этого метода заключается в возможности информировать приложения о текущем уровне трафика на площадках, чтобы они могли принимать внутренние решения, например, пропускать некоторые ресурсоемкие операции в такие «часы пик».
Спикеры
Приглашенные эксперты
Константин Лебедев
Компания: Mayflower