Сравнение решений по балансировке высоконагруженных...

Preview:

Citation preview

Балансировка высоконагруженных системЕвгений Пивень 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

Нормальная балансировка

Что-то пошло не так

Метрики — это хорошо

Серверный трафик• Гибкие возможности решения проблем • Можно договориться с клиентом • Возможность разделения • Можно даже забанить

DNS-балансировка

google.com. A 173.194.122.194google.com. A 173.194.122.201google.com. A 173.194.122.199google.com. A 173.194.122.195google.com. A 173.194.122.196google.com. A 173.194.122.193google.com. A 173.194.122.197google.com. A 173.194.122.200google.com. A 173.194.122.198google.com. A 173.194.122.192google.com. A 173.194.122.206

}Round-robin DNS pool

Проблемы Round-Robin DNS• Нет status checks • Нет понимания гео-локации клиента • Распределение не идеально для серверного трафика

gdnsd

gdnsd• DYNA записи • geoIP • Status checks

• TTL

gdnsd: weighted• weighted пулы можно разбивать • веса можно использовать для staging / instance types

• DNS cache

> 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

Recommended