Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Балансировка
высоконагруженных
систем
Евгений Пивень
IPONWEB
RTB
IPONWEB
• Вся инфраструктура в облаках (AWS и GCE)
• Миллионы HTTP-запросов в секунду
• Короткие ответы
• Кэширование не актуально
• Суточные и событийные колебания
Япония и другие страны
IPONWEB и RTB
• Вся инфраструктура в облаках (AWS и GCE)
• Миллионы HTTP-запросов в секунду
• Короткие ответы
• Кэширование не актуально
• Суточные и событийные колебания
• Разброс пользователей по всему миру
• Серверный и пользовательский трафик
Серверный и пользовательский трафик
Зачем балансировать?
• Масштабируемость
• Доступность
Что ещё?
• SSL offload
SSL offload
Что ещё?
• SSL offload
• Sticky / session affinity
Sticky балансировка
Что ещё?
• SSL offload
• Sticky / session affinity
• Fallback
Fallback
Нормальная балансировка
Что-то пошло не так
Метрики — это хорошо
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (IPONWEB)
Серверный трафик
• Гибкие возможности решения проблем
• Можно договориться с клиентом
• Возможность разделения
• Можно даже забанить
DNS-балансировка
google.com. A 173.194.122.194
google.com. A 173.194.122.201
google.com. A 173.194.122.199
google.com. A 173.194.122.195
google.com. A 173.194.122.196
google.com. A 173.194.122.193
google.com. A 173.194.122.197
google.com. A 173.194.122.200
google.com. A 173.194.122.198
google.com. A 173.194.122.192
google.com. A 173.194.122.206
}Round-robin DNS pool
Проблемы Round-Robin DNS
• Нет status checks
• Нет понимания гео-локации клиента
• Распределение не идеально для серверного трафика
gdnsd
gdnsd
• DYNA записи
• geoIP
• Status checks
• TTL
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (IPONWEB)
gdnsd: weighted
• weighted пулы можно разбивать
• веса можно использовать для staging / instance types
• DNS cache
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (IPONWEB)
> 253 хостов
• Проблема только у AWS DNS [уже нет]
Мы же в облаках!
• Вертикальное масштабирование — временное решение
• Облачные решения балансировки: ELB
ELB
ELB
• CNAME
• SSL offload
• Status checks
• Pre-warmup
• Балансировка по скорости ответа
ALB
• Path-based routing
• WebSocket, HTTP/2
• Контейнеры
GLB vs ELB/ALB
• 1 IP (!)
GLB
GLB vs ELB/ALB
• 1 IP (!)
• Sticky: по IP и cookie
• Instant warm-up
• Резкое изменение числа бэкендов
• 80/8080
• Нет SNI
А как же пользователи?
Требования
• Sticky
• Fallback
nginx + Lua
• Lua
• Sticky
• Hash Ring
• Fallback
upstream backend-1 {
server backend-1.local max_fails=x fail_timeout=y;
server unix:/var/run/nginx_fallback.sock backup;
}
upstream backend-2 {
server backend-2.local max_fails=x fail_timeout=y;
server unix:/var/run/nginx_fallback.sock backup;
}
Облака vs свои решения
• Vendor lock
• Проблемы с отладкой
• Всегда хочется больше возможностей
• Поддержка
• Стоимость серверов vs стоимость трафика
Какие ещё решения бывают?
• Hardware балансировщики
• lighttpd, haproxy, проприетарные приложения etc.
Выводы
• Облачные балансировщики - это удобно, но есть минусы
• Всегда смотрите на требования
• Периодически пересматривайте решения
Balance is good

More Related Content

Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (IPONWEB)