highload осень 2012 лекция 4

Post on 30-May-2015

163 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Проектирование ПО для высоконагруженных систем

Лекция №4

Александр Быков

Лекция 4

Масштабируемость (англ. scalability) – способность системы справляться с увеличением рабочей нагрузки, при добавлении ресурсов, как правило аппаратных.

Количественно можно оценить как отношение полученного роста производительности к увеличению кол-ва используемых ресурсов. Если отношение близко к единице то масштабирование называют линейным.

Масштабирование нагрузки

Лекция 4

Вертикальное масштабирование

• Доставить процессоров, памяти, дисков

• Купить более мощный сервер

• Купить еще более мощный сервер (очень

дорого)

• Соотношение роста производительности

на вложенные деньги стремительно

падает

• Наступит момент когда все равно не

хватит

Лекция 4

Горизонтальное масштабирование

• Разнести нагрузку на несколько серверов

• Возможно там где нет/мало общих

ресурсов

• Часто требует изменений в системе

• Возрастает сложность поддержки

• На больших масштабах дает снижение

TCO*

*TCO – Total Cost of Ownership

Лекция 4

Балансировка нагрузки

Лекция 4

Алгоритмы балансировки

• Random

• Round-Robin

• Weighted Round-Robin

• Least Connections

• Least Response Time

• Load-based

Лекция 4

Round-Robin DNS

• DNS сервер отвечает несколькими адресами

• При следующем ответе сдвигает список на 1

позицию

• Клиенты обычно берут первый адрес из списка

• Windows Vista когда появилась брала «ближайший»

• Короткий TTL чтобы отключать упавшие сервера

RFC 1794: DNS Support for Load Balancing

Лекция 4

Round-Robin DNS

Достоинства:

• Простота и дешевизна

• Минимальная нагрузка на DNS сервер

• Отсутствие одной точки входа

• Небольшое добавление отказоустойчивости

RFC 1794: DNS Support for Load Balancing

Лекция 4

Round-Robin DNS

Недостатки:

• Ограниченное кол-во серверов в UDP-ответе

• Игнорирование TTL на кеширующих серверах

• Долгое отключение упавшего сервера

• Сильный дисбаланс между серверами

• Windows Vista берет «ближайший» адрес вместо

первого

• Невозможен взвешенный Round-Robin

RFC 1794: DNS Support for Load Balancing

Лекция 4

mail.ru$ host mail.rumail.ru has address 94.100.191.209mail.ru has address 94.100.191.210mail.ru has address 94.100.191.241mail.ru has address 94.100.191.242mail.ru has address 94.100.191.243mail.ru has address 94.100.191.244mail.ru has address 94.100.191.245mail.ru has address 94.100.191.246mail.ru has address 94.100.191.247mail.ru has address 94.100.191.248mail.ru has address 94.100.191.249mail.ru has address 94.100.191.250mail.ru has address 94.100.191.201mail.ru has address 94.100.191.202mail.ru has address 94.100.191.203mail.ru has address 94.100.191.204mail.ru has address 94.100.191.205mail.ru has address 94.100.191.206mail.ru has address 94.100.191.207mail.ru has address 94.100.191.208

$ host mail.rumail.ru has address 94.100.191.250mail.ru has address 94.100.191.201mail.ru has address 94.100.191.202mail.ru has address 94.100.191.203mail.ru has address 94.100.191.204mail.ru has address 94.100.191.205mail.ru has address 94.100.191.206mail.ru has address 94.100.191.207mail.ru has address 94.100.191.208mail.ru has address 94.100.191.209mail.ru has address 94.100.191.210mail.ru has address 94.100.191.241mail.ru has address 94.100.191.242mail.ru has address 94.100.191.243mail.ru has address 94.100.191.244mail.ru has address 94.100.191.245mail.ru has address 94.100.191.246mail.ru has address 94.100.191.247mail.ru has address 94.100.191.248mail.ru has address 94.100.191.249

Лекция 4

vk.com$ host vk.comvk.com has address 87.240.131.100vk.com has address 87.240.131.101vk.com has address 87.240.131.102vk.com has address 87.240.131.103vk.com has address 87.240.131.104vk.com has address 87.240.131.117vk.com has address 87.240.131.118vk.com has address 87.240.131.119vk.com has address 87.240.131.120vk.com has address 87.240.143.241vk.com has address 87.240.143.242vk.com has address 87.240.143.243vk.com has address 87.240.143.244vk.com has address 87.240.143.245vk.com has address 87.240.143.246vk.com has address 87.240.143.247vk.com has address 87.240.143.248vk.com has address 93.186.224.244vk.com has address 93.186.224.245vk.com has address 93.186.224.246vk.com has address 87.240.131.97vk.com has address 87.240.131.98vk.com has address 87.240.131.99

$ host vk.comvk.com has address 87.240.131.101vk.com has address 87.240.131.102vk.com has address 87.240.131.103vk.com has address 87.240.131.104vk.com has address 87.240.131.117vk.com has address 87.240.131.118vk.com has address 87.240.131.119vk.com has address 87.240.131.120vk.com has address 87.240.143.241vk.com has address 87.240.143.242vk.com has address 87.240.143.243vk.com has address 87.240.143.244vk.com has address 87.240.143.245vk.com has address 87.240.143.246vk.com has address 87.240.143.247vk.com has address 87.240.143.248vk.com has address 93.186.224.244vk.com has address 93.186.224.245vk.com has address 93.186.224.246vk.com has address 87.240.131.97vk.com has address 87.240.131.98vk.com has address 87.240.131.99vk.com has address 87.240.131.100

Лекция 4

www.yandex.ru$ host www.yandex.ruwww.yandex.ru has address 87.250.250.203www.yandex.ru has address 87.250.251.3www.yandex.ru has address 93.158.134.3www.yandex.ru has address 93.158.134.203www.yandex.ru has address 213.180.193.3www.yandex.ru has address 213.180.204.3www.yandex.ru has address 77.88.21.3www.yandex.ru has address 87.250.250.3

$ host www.yandex.ruwww.yandex.ru has address 87.250.251.3www.yandex.ru has address 93.158.134.3www.yandex.ru has address 93.158.134.203www.yandex.ru has address 213.180.193.3www.yandex.ru has address 213.180.204.3www.yandex.ru has address 77.88.21.3www.yandex.ru has address 87.250.250.3www.yandex.ru has address 87.250.250.203

Лекция 4

google.com$ host google.comgoogle.com has address 173.194.32.227google.com has address 173.194.32.228google.com has address 173.194.32.229google.com has address 173.194.32.230google.com has address 173.194.32.231google.com has address 173.194.32.232google.com has address 173.194.32.233google.com has address 173.194.32.238google.com has address 173.194.32.224google.com has address 173.194.32.225google.com has address 173.194.32.226

$ host google.comgoogle.com has address 173.194.32.228google.com has address 173.194.32.229google.com has address 173.194.32.230google.com has address 173.194.32.231google.com has address 173.194.32.232google.com has address 173.194.32.233google.com has address 173.194.32.238google.com has address 173.194.32.224google.com has address 173.194.32.225google.com has address 173.194.32.226google.com has address 173.194.32.227

Лекция 4

xixi DNS

• Выдает один случайный адрес в ответе

• Взвешенный Round-Robin

Лекция 4

Geo Based DNS

• Сервер выдает адрес ближайшего к пользователю

ДЦ

• Сервер видит адрес Resolver а не конечного клиента

Возможные пути решения проблемы:

• DNS сервер 8.8.8.8 от Google

• Предложение добавить в DNS-запрос IP клиента от

Google

Лекция 4

Hardware Load Balancers

• Cisco CSS (L4)

• Cisco ACE (L7)

• F5 BIG-IP

• Citrix NetScaler

• Radware ADC

Лекция 4

Software Load Balancers

• LVS (Linux Virtual Server)

• Nginx

• HAProxy

• Perlbal

Лекция 4

Layer 3/4 Load Balancing

• Virtual Server via NAT

• Virtual Server via IP Tunneling

• Virtual Server via Direct Routing

Лекция 4

Layer 4: Virtual Server via NAT

Лекция 4

Layer 4: Virtual Server via NAT

Плюсы:

• Сервера могут быть в разных физических сетях

Минусы:

• Большая нагрузка на процессор

• Весь обратный трафик идет через балансер

Лекция 4

Layer 4: Virtual Server via IP Tunneling

IP Encapsulation

Лекция 4

Layer 4: Virtual Server via IP Tunneling

Плюсы:

• Сервера могут быть в разных физических сетях

• Высокая производительность

Минусы:

• Дополнительная нагрузка на процессор

• Сложная настройка инкапсуляции

Лекция 4

Layer 3: Virtual Server via Direct Routing

Dst MAC Address Change

Лекция 4

Layer 3: Virtual Server via Direct Routing

Плюсы:

• Высокая производительность

Минусы:

• Сервера должны быть в одной физической сети

Лекция 4

keepalived

• Программный монитор живости серверов

• Посылает команды балансеру при

падении/подъемы ноды

• Умеет VRRP/CARP резервирование балансеров

Лекция 4

Проверка работоспособности серверов

• Пингуется

• Принимает соединение на порт

• Отвечает на простой HEAD или GET запрос

• Отвечает на специальный запрос (cgi-bin/ping)

Лекция 4

BGP Anycast

Лекция 4

BGP Anycast

Недостатки:

• Сложность конфигурации и поддержки

• Поломка соединений при перескоке трафика

между ДЦ

• Необходима своя AS и сеть /24

Лекция 4

Layer 7 Load Balancing

HTTP Reverse Proxy

• TCP multiplexing

• Persistence / Sticky sessions / Client affinity

• SSL Termination

• SSL Hardware Acceleration

• Gzip

• Гибкие настройки для учета бизнес-логики

Лекция 4

Layer 7 Load Balancing

Плюсы:

• Высокая гибкость конфигурации

• Надежное резервирование

• Равномерное распределение нагрузки

• Решение проблемы медленных клиентов

Минусы:

• Относительно низкая производительность

• Необходима модификация ПО для приема X-Real-

IP

Лекция 4

Redirect Based Load Balancing

• Также дешев как DNS

• Увеличивает задержку на каждый запрос

• Имеет единую точку отказа

• Хорош для выдачи ближайшего к пользователю

сервера

Лекция 4

Application Based Load Balancing

• Выдаем в приложении прямые ссылки на сервера

• Обеспечиваем балансировку и отказоустойчивость

• При хорошей реализации одно из самых эффективных

решений

Минусы:

• Неудобно программировать

• Светим внутреннее устройство проекта

Лекция 4

Client Based Load Balancing

• Выбор сервера в коде страницы в браузере

• Легко обеспечить отказоустойчивость запросив

другой сервер

Минусы:

• Плохо совместим с AJAX из-за crossdomain policy

Лекция 4

Распределение функционала по разным серверам

• Уносим форум на отдельный домен

• Уносим статику на отдельный домен

• И так далее…

Минусы:

• Сложно администрировать

• Легко попасть на неделимый кусок сайта

Спасибо за вниманиеАлександр Быков

bykov@corp.mail.ru

top related