41
Балансировка высоконагруженных систем Евгений Пивень IPONWEB

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

  • Upload
    ontico

  • View
    366

  • Download
    10

Embed Size (px)

Citation preview

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

Балансировка высоконагруженных системЕвгений Пивень IPONWEB

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

RTB

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

IPONWEB• Вся инфраструктура в облаках (AWS и GCE) • Миллионы HTTP-запросов в секунду • Короткие ответы • Кэширование не актуально • Суточные и событийные колебания

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

Япония и другие страны

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

IPONWEB и RTB• Вся инфраструктура в облаках (AWS и GCE) • Миллионы HTTP-запросов в секунду • Короткие ответы • Кэширование не актуально • Суточные и событийные колебания • Разброс пользователей по всему миру • Серверный и пользовательский трафик

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

Серверный и пользовательский трафик

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

Зачем балансировать?• Масштабируемость • Доступность

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

Что ещё?• SSL offload

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

SSL offload

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

Что ещё?• SSL offload • Sticky / session affinity

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

Sticky балансировка

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

Что ещё?• SSL offload • Sticky / session affinity • Fallback

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

Fallback

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

gdnsd

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

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

• TTL

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

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

• DNS cache

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

> 253 хостов• Проблема только у AWS DNS [уже нет]

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

Мы же в облаках!• Вертикальное масштабирование — временное решение • Облачные решения балансировки: ELB

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

ELB

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

ELB• CNAME • SSL offload • Status checks

• Pre-warmup • Балансировка по скорости ответа

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

ALB• Path-based routing • WebSocket, HTTP/2 • Контейнеры

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

GLB vs ELB/ALB• 1 IP (!)

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

GLB

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

GLB vs ELB/ALB• 1 IP (!) • Sticky: по IP и cookie • Instant warm-up

• Резкое изменение числа бэкендов • 80/8080 • Нет SNI

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

А как же пользователи?

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

Требования• Sticky • Fallback

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

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;}

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

Облака vs свои решения• Vendor lock • Проблемы с отладкой • Всегда хочется больше возможностей • Поддержка • Стоимость серверов vs стоимость трафика

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

Какие ещё решения бывают?• Hardware балансировщики • lighttpd, haproxy, проприетарные приложения etc.

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

Выводы• Облачные балансировщики - это удобно, но есть минусы • Всегда смотрите на требования • Периодически пересматривайте решения

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

Balance is good