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

35
Проектирование ПО для высоконагруженных систем Лекция №4 Александр Быков

Upload: technopark

Post on 30-May-2015

163 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Highload осень 2012 лекция 4

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

Лекция №4

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

Page 2: Highload осень 2012 лекция 4

Лекция 4

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

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

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

Page 3: Highload осень 2012 лекция 4

Лекция 4

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

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

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

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

дорого)

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

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

падает

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

хватит

Page 4: Highload осень 2012 лекция 4

Лекция 4

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

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

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

ресурсов

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

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

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

TCO*

*TCO – Total Cost of Ownership

Page 5: Highload осень 2012 лекция 4

Лекция 4

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

Page 6: Highload осень 2012 лекция 4

Лекция 4

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

• Random

• Round-Robin

• Weighted Round-Robin

• Least Connections

• Least Response Time

• Load-based

Page 7: Highload осень 2012 лекция 4

Лекция 4

Round-Robin DNS

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

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

позицию

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

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

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

RFC 1794: DNS Support for Load Balancing

Page 8: Highload осень 2012 лекция 4

Лекция 4

Round-Robin DNS

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

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

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

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

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

RFC 1794: DNS Support for Load Balancing

Page 9: Highload осень 2012 лекция 4

Лекция 4

Round-Robin DNS

Недостатки:

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

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

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

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

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

первого

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

RFC 1794: DNS Support for Load Balancing

Page 10: Highload осень 2012 лекция 4

Лекция 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

Page 11: Highload осень 2012 лекция 4

Лекция 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

Page 12: Highload осень 2012 лекция 4

Лекция 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

Page 13: Highload осень 2012 лекция 4

Лекция 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

Page 14: Highload осень 2012 лекция 4

Лекция 4

xixi DNS

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

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

Page 15: Highload осень 2012 лекция 4

Лекция 4

Geo Based DNS

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

ДЦ

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

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

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

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

Google

Page 16: Highload осень 2012 лекция 4

Лекция 4

Hardware Load Balancers

• Cisco CSS (L4)

• Cisco ACE (L7)

• F5 BIG-IP

• Citrix NetScaler

• Radware ADC

Page 17: Highload осень 2012 лекция 4

Лекция 4

Software Load Balancers

• LVS (Linux Virtual Server)

• Nginx

• HAProxy

• Perlbal

Page 18: Highload осень 2012 лекция 4

Лекция 4

Layer 3/4 Load Balancing

• Virtual Server via NAT

• Virtual Server via IP Tunneling

• Virtual Server via Direct Routing

Page 19: Highload осень 2012 лекция 4

Лекция 4

Layer 4: Virtual Server via NAT

Page 20: Highload осень 2012 лекция 4

Лекция 4

Layer 4: Virtual Server via NAT

Плюсы:

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

Минусы:

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

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

Page 21: Highload осень 2012 лекция 4

Лекция 4

Layer 4: Virtual Server via IP Tunneling

IP Encapsulation

Page 22: Highload осень 2012 лекция 4

Лекция 4

Layer 4: Virtual Server via IP Tunneling

Плюсы:

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

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

Минусы:

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

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

Page 23: Highload осень 2012 лекция 4

Лекция 4

Layer 3: Virtual Server via Direct Routing

Dst MAC Address Change

Page 24: Highload осень 2012 лекция 4

Лекция 4

Layer 3: Virtual Server via Direct Routing

Плюсы:

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

Минусы:

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

Page 25: Highload осень 2012 лекция 4

Лекция 4

keepalived

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

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

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

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

Page 26: Highload осень 2012 лекция 4

Лекция 4

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

• Пингуется

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

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

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

Page 27: Highload осень 2012 лекция 4

Лекция 4

BGP Anycast

Page 28: Highload осень 2012 лекция 4

Лекция 4

BGP Anycast

Недостатки:

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

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

между ДЦ

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

Page 29: Highload осень 2012 лекция 4

Лекция 4

Layer 7 Load Balancing

HTTP Reverse Proxy

• TCP multiplexing

• Persistence / Sticky sessions / Client affinity

• SSL Termination

• SSL Hardware Acceleration

• Gzip

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

Page 30: Highload осень 2012 лекция 4

Лекция 4

Layer 7 Load Balancing

Плюсы:

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

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

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

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

Минусы:

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

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

IP

Page 31: Highload осень 2012 лекция 4

Лекция 4

Redirect Based Load Balancing

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

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

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

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

сервера

Page 32: Highload осень 2012 лекция 4

Лекция 4

Application Based Load Balancing

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

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

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

решений

Минусы:

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

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

Page 33: Highload осень 2012 лекция 4

Лекция 4

Client Based Load Balancing

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

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

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

Минусы:

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

Page 34: Highload осень 2012 лекция 4

Лекция 4

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

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

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

• И так далее…

Минусы:

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

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

Page 35: Highload осень 2012 лекция 4

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

[email protected]