Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей Зубов (CDNvideo)

8,668 views

Published on

Цель доклада – рассмотреть и систематизировать информацию о том, как балансировка нагрузки помогает делать миллионы людей счастливыми, сохраняя им нервные клетки, спасает беззащитные ПК и прочие девайсы от приступов ярости их владельцев во время бесконечных загрузок сайтов, а посетителям онлайн магазинов не дает побросать их виртуальные корзинки в бесконечных очередях на кассе.

Вашему вниманию будет представлен небольшой сравнительный анализ методов балансировки трафика, мы рассмотрим плюсы и минусы каждой схемы. Я расскажу, к каким хитростям можно прибегать, минуя большие затраты на покупку готовых решений и получая максимум профита от существующей инфраструктуры.

Доклад будет полезен всем, кто хочет знать, но боится спросить, благодаря чему HighLoad-проекты такие устойчивые и надежные. Тема наверняка заинтересует тех, кто только начинает свои шаги на пути к уверенному и высокопроизводительному сервису.

Тезисы доклада:
1. Что такое балансировка и зачем она вообще нужна? Когда хорошо бы об этом задуматься?
2. Реализация балансировки: виды, способы, практики.
3. Методы локальной балансировки
3.1. Балансировка на канальном уровне (L2-метод)
• Используем отдельным балансировщик
• Сократим расходы, избавимся от выделенного балансировщика
• Плюсы и минусы
3.2. Балансировка на сетевом уровне (L3-метод)
• Преимущества и недостатки
4. Методы глобальной балансировки
4.1. DNS балансировка.
• DNS Round Robin
• Сильные и слабые стороны подхода
4.2. HTTP Redirect
• Механизм балансировки на основе Redirect запросов
• Плюсы и минусы метода
4.3. Балансировка на базе Anycast
• Когда Anycast – это хорошо, а когда - не очень?
5. Некоторые не менее расп

Published in: Engineering
  • Be the first to comment

Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей Зубов (CDNvideo)

  1. 1. Как балансировать на сетевом канате под куполом тяжелой нагрузки? Сравнительный анализ методов балансировки трафика Сергей Зубов
  2. 2. Что такое балансировка и зачем она вообще нужна?
  3. 3. Что такое балансировка и зачем она вообще нужна?
  4. 4. Что такое балансировка и зачем она вообще нужна?
  5. 5. Какие цели преследует балансировка? • Основные цели: – Распределение нагрузки между серверами – Повышение отказоустойчивости – Защита от некоторых видов атак • Предъявляемые требования к системе балансировки: – Справедливость – Эффективность – Сокращение времени выполнения запроса – Сокращение времени отклика – Предсказуемость – Равномерная загрузка ресурсов системы – Масштабируемость
  6. 6. Методы локальной балансировки • На канальном уровне: – C применением отдельного балансировщика – C разделяемым адресом • На сетевом уровне • На транспортном уровне – Equal Cost Multiple Paths
  7. 7. Балансировка на канальном уровне
  8. 8. Балансировка на канальном уровне (shared address)
  9. 9. Балансировка на канальном уровне • Плюсы: – Не зависит от протоколов вышележащих уровней – Сокращение расходов за счет отказа от выделенного балансировщика – Обратный трафик в сторону клиента не нагружает балансировщик – Используется только один публичный адрес – Быстрое добавление и отключение сервера в кластере • Минусы: – Необходимо размещать сервера в одном сегменте – Ограничение по входящей полосе (в случае с shared address входящий трафик попадает на все сервера одновременно) • Решения: Linux Virtual Server
  10. 10. Балансировка на сетевом уровне
  11. 11. Балансировка на сетевом уровне • Преимущества: – Не зависит от протоколов высокого уровня – Полная прозрачность работы для серверов – Один публичный адрес • Недостатки: – Повышенная нагрузка на балансировщик за счет обратного трафика • Решения: Linux Virtual Server, различные аппаратные реализации
  12. 12. Балансировка на транспортном уровне (ECMP)
  13. 13. Балансировка на транспортном уровне • Преимущества: – Не зависит от протоколов высокого уровня – Один публичный адрес – Отсутствие необходимости приобретать дополнительное оборудование • Недостатки: – Необходимо ставить на сервера дополнительный софт – Отсутствует server-affinity (все соединения разрываются при добавлении/исключении сервера) – Ограничения количества ECMP на роутерах – Равномерность распределения нагрузки накладывает требование к выравниванию производительности серверов – Таймауты BGP приводят к распределению нагрузки на недоступный сервер • Решения: Сisco 3750X, 4500-X, 6500+Sup2T
  14. 14. Методы глобальной балансировки • DNS балансировка – DNS Round Robin • Балансировка на прикладном уровне: – Проксирование (Full Proxy) – Redirect запросов • Балансировка на сетевом уровне: – Anycast
  15. 15. DNS Round Robin
  16. 16. DNS Round Robin • Сильные стороны: – Абсолютная независимость от протокола высокого уровня – Независимость от нагрузки сервера благодаря кэширующим DNS-серверам – Универсальность (как локальная, так и глобальная балансировки) – Очень низкая стоимость решения и быстрый старт • Слабые стороны: – Сложно отключать сервера (необходимо доп. резервирование по типу CARP) – Сложно распределять нагрузку в нужной пропорции – Ограниченность IP-адресов (т.к. каждый сервер должен иметь свой глобальный IP) – Необходимость держать двойной запас серверной мощности • Решения: любой DNS сервер (например, Named)
  17. 17. Full proxy
  18. 18. Full proxy • Плюсы: – Server-affinity (по определенной настройке cookie) – Распределение разных типов запросов к разным серверам – Возможность анализировать и модифицировать запросы – Фильтрация запросов по URL (защита от разных атак) – Самостоятельно определяют работоспособность каждого узла • Минусы: – Необходимо балансировать нагрузку на сами балансировщики – Дополнительная точка отказа – Большое потребление ресурсов – Свой прокси для каждого протокола • Решения: HAProxy, nginx
  19. 19. Redirect запросов (http)
  20. 20. Redirect запросов • Плюсы: – Распределение запросов по разным серверам за счет анализа запроса • Минусы: – Достаточно малая применимость к протоколам высокого уровня – Увеличение времени отклика за счет обращения к редиректору – Два запроса к сервису на каждый запрос клиента • Решения: nginx
  21. 21. Балансировка на базе Anycast
  22. 22. Балансировка на базе Anycast • Плюсы: – Минимальные задержки при обработке запросов – Доставка трафика через немагистральные каналы (удешевление) – Распределением нагрузки занимается сама сеть – Высокая отказоустойчивость – Легко добавлять и выводить из работы сервера • Минусы: – Возможность перестроения маршрутов (критично для TCP-сессий) – Отсутствует возможность проконтролировать, с какого узла обслуживается пользователь (этим рулит сеть) – Дорогое оборудование – Интересы ISP
  23. 23. Алгоритмы распределения нагрузки • Weighted Round Robin • Least Connections • Destination Hash Scheduling и Source Hash Scheduling • Sticky Sessions
  24. 24. Очень кратко о решениях интеграторов • Cisco ACE • F5 BigIP • Alteon NG • Cisco CSS
  25. 25. Совмещаем методы и перенаправляем запросы
  26. 26. Балансировка – это просто!
  27. 27. Благодарю за внимание! Ваши вопросы??? Сергей Зубов s.zubov@cdnvideo.com

×