Load Balancer Балансировка нагрузки
Метод распределения заданий между несколькими сетевыми устройствами (например, серверами) с целью:
- оптимизации использования ресурсов
- сокращения времени обслуживания запросов
- горизонтального масштабирования кластера (динамическое добавление/удаление устройств)
- обеспечения отказоустойчивости (резервирования)
Зачем
- отказоустойчивость и масштабирование
- MariaDB и RabbitMQ в основе лежит разделение баз и брокеров по сервисам.
Паттерны
- Необходимо на уровне ИС поддерживать
- stateless ИС - Избегайте состояния (state) в вашем приложении
- Идемпотентность
- отказоустойчивость самого балансировщика. Просто установка балансировщика тоже создаёт точку отказа: балансировщик ломается — сервис падает. Чтобы так не получалось, мы использовали HAProxy совместно с ExaBGP.
- Балансировка HAProxy на базе DNS + BGP
- Доступность haproxy: heartbeat между ExaBGP и HAProxy
- синхронизировать сессии. При работе через распределенные балансировщики сложно организовать сохранение информации о сессиях клиентов. Но HAProxy — один из немногих балансировщиков, который умеет это за счёт функционала Peers — возможности передачи между различными процессами HAProxy таблицы сессий.