SlideShare a Scribd company logo
Масштабирование и отказоустойчивость с NginxСпециально для TulaDev.net2011
О чем доклад?Доклад об Nginx.Nginx– это маленький, но удаленький HTTP-сервер.Что он умеет:обслуживание статических запросов;
акселерированноепроксирование с кэшированием;
простое распределение нагрузки и отказоустойчивость;Может работать на:FreeBSD 3-7 (i386, amd64);
Linux 2.2-2.6 (i386); Linux 2.6 (amd64);
Solaris 9 (i386, sun4u); Solaris 10 (i386, amd64, sun4v);
MacOS X (ppc, i386);
Windows XP, Windows Server 2003.
В общем работает на всем, что движется где есть процессор.На моем WiFi-маршрутизаторе дома, например, работать будет For TulaDev.net  \  2011
О чем доклад?Разработчик:Игорь Сысоев, в настоящий момент работает в Rambler.
12 апреля 2011 года выпустил версию 1.0Насколько популярен (данные netcraft.com, май 2011):Насколько популярен (данные w3techs.com, май 2011):«Nginxis used by 7.1% of all the websites whose web server we know». Для .ruдоменов  - 47.7%.http://w3techs.com/technologies/breakdown/ws-nginx/top_level_domainFor TulaDev.net  \  2011
ОМГ, а где же Microsoft?В докладе я постараюсь показать, что масштабировать любые web-приложения (даже на Microsoft-платформе) при помощи Nginx – это:Дешево
Просто
Эффективно
НадежноFor TulaDev.net  \  2011
Давайте определим понятияМасштабирование – это механизм, позволяющий пропорционально увеличивать производительность системы за счет добавления нового оборудования.Отказоустойчивость – это механизм, позволяющий не терять работоспособности системы при выходе из строя единицы оборудования.Можно рассматривать эти термины в контексте программ, компьютеров или компьютерных комплексов (кластеров).For TulaDev.net  \  2011
Зачем это нужно?Для того, чтобы понять, зачем я затеял этот доклад, давайте сделаем эксперимент.Давайте посчитаем, сколько запросов к среднестатистическому сайту делает среднестатистический пользователь.Возьмем первый попавшийся сайт, например, http://www.tuladev.net/For TulaDev.net  \  2011
Зачем это нужно?Протокол обращений к серверу:For TulaDev.net  \  2011
Зачем это нужно?Давайте немного детальнее разберем, что это за запросы:45 запросов при загрузке одной страницы!
22 запроса к домену tuladev.net

More Related Content

PPTX
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
PDF
2020.10.13 HA Redis is simple. FWDays Highload
PPTX
Пайплайн машинного обучения на Apache Spark
PPTX
Динамическая аллокация ресурсов или как жить в условиях общежития?
PDF
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
PPTX
Минуты из жизни со Spark
PPTX
Денис Иванов
PPTX
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Yevgen Lysenko "AWS RDS Aurora Serverless, ECS Fargate and more serverless-pr...
2020.10.13 HA Redis is simple. FWDays Highload
Пайплайн машинного обучения на Apache Spark
Динамическая аллокация ресурсов или как жить в условиях общежития?
Zabbix 3.2 - мониторинг качественно нового уровня / Алексей Владышев (Zabbix)
Минуты из жизни со Spark
Денис Иванов
Alexandr Serbul "The Rust language for a high-load network service - a quick ...

What's hot (20)

PDF
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
PDF
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
PPTX
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
PDF
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
PPTX
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
PDF
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
PDF
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
PPTX
Декларативные даги в Apache Airflow
PDF
Антон Галицын
PDF
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
PPTX
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
PDF
Мой маленький уютный PaaS / Илья Беда (bro.agency)
PDF
Anton Turetckii "What does it take to build a host?"
PDF
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
PPTX
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
PPT
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
PDF
Максим Дунин, Nginx, Inc.
PPTX
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
ODP
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Декларативные даги в Apache Airflow
Антон Галицын
Архитектура растущего проекта на примере ВКонтакте / Алексей Акулович (ВКонт...
Zabbix 3.4 - простая непростая дружба с сообществом / Алексей Владышев (Zabbix)
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Anton Turetckii "What does it take to build a host?"
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
Максим Дунин, Nginx, Inc.
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
MUM Построение сети доступа на основе технологий DHCP + Radius на Mikrotik
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ad

Similar to Масштабирование и отказоустойчивость с Nginx (20)

PPTX
антон веснин Rails Application Servers
PPTX
развертывание среды Rails (антон веснин, Locum Ru)
PDF
Другая виртуализация
PPTX
мониторинг производительности приложения на PINBA
PDF
Erlang ruby
PDF
“Чем хорош Erlang вообще и для веб-разработки в частности?”

PDF
Как Cluster Membership Software может помочь QA
PDF
FT & HA Rails приложений приложений — это просто
PPT
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
PPT
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
PPTX
Net core and linux in production
ODP
Облачная инфраструктура Amazon We
PDF
Механика DDoS (Александр Крижановский)
PPTX
Open source technologies in Microsoft cloud - MS SWIT 2014
PPTX
Hosting for forbes.ru_
PPT
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
PPTX
Надежность World of Tanks Server
PDF
Microsoft Internet Information Services 2007
PPTX
Breaking logs
PDF
инструментарий
антон веснин Rails Application Servers
развертывание среды Rails (антон веснин, Locum Ru)
Другая виртуализация
мониторинг производительности приложения на PINBA
Erlang ruby
“Чем хорош Erlang вообще и для веб-разработки в частности?”

Как Cluster Membership Software может помочь QA
FT & HA Rails приложений приложений — это просто
DevConf2013: Особенности применения WebSocket на примере работы в ERP системе.
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
Net core and linux in production
Облачная инфраструктура Amazon We
Механика DDoS (Александр Крижановский)
Open source technologies in Microsoft cloud - MS SWIT 2014
Hosting for forbes.ru_
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
Надежность World of Tanks Server
Microsoft Internet Information Services 2007
Breaking logs
инструментарий
Ad

More from GetDev.NET (20)

PDF
PPTX
Leap Motion - игрушка с заделом на будущее
PPTX
Гирлянда для программистов
PPTX
Mind Mapping, или как заставить свой мозг работать лучше
PPTX
Что нового в Visual Studio 2015
PDF
Docker контейнерная революция
PPTX
Windows 10 для пользователей и разработчиков
PPTX
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PPTX
ASP.NET Web API
PPTX
Что нового в Visual Studio 2013
PPTX
AngularJS
PPTX
TypeScript
PPTX
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
PPTX
Lego Mindstorms
PPTX
Особенности мобильной платформы Windows Phone 8
PPTX
Async Javascript
PPTX
XAML - язык разметки приложений
PPTX
Dynamic Language Runtime
PPTX
JavaScript: хороший тон клиентской разработки
PPTX
Roslyn - компилятор как сервис
Leap Motion - игрушка с заделом на будущее
Гирлянда для программистов
Mind Mapping, или как заставить свой мозг работать лучше
Что нового в Visual Studio 2015
Docker контейнерная революция
Windows 10 для пользователей и разработчиков
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
ASP.NET Web API
Что нового в Visual Studio 2013
AngularJS
TypeScript
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Lego Mindstorms
Особенности мобильной платформы Windows Phone 8
Async Javascript
XAML - язык разметки приложений
Dynamic Language Runtime
JavaScript: хороший тон клиентской разработки
Roslyn - компилятор как сервис

Масштабирование и отказоустойчивость с Nginx

  • 1. Масштабирование и отказоустойчивость с NginxСпециально для TulaDev.net2011
  • 2. О чем доклад?Доклад об Nginx.Nginx– это маленький, но удаленький HTTP-сервер.Что он умеет:обслуживание статических запросов;
  • 4. простое распределение нагрузки и отказоустойчивость;Может работать на:FreeBSD 3-7 (i386, amd64);
  • 5. Linux 2.2-2.6 (i386); Linux 2.6 (amd64);
  • 6. Solaris 9 (i386, sun4u); Solaris 10 (i386, amd64, sun4v);
  • 8. Windows XP, Windows Server 2003.
  • 9. В общем работает на всем, что движется где есть процессор.На моем WiFi-маршрутизаторе дома, например, работать будет For TulaDev.net \ 2011
  • 10. О чем доклад?Разработчик:Игорь Сысоев, в настоящий момент работает в Rambler.
  • 11. 12 апреля 2011 года выпустил версию 1.0Насколько популярен (данные netcraft.com, май 2011):Насколько популярен (данные w3techs.com, май 2011):«Nginxis used by 7.1% of all the websites whose web server we know». Для .ruдоменов - 47.7%.http://w3techs.com/technologies/breakdown/ws-nginx/top_level_domainFor TulaDev.net \ 2011
  • 12. ОМГ, а где же Microsoft?В докладе я постараюсь показать, что масштабировать любые web-приложения (даже на Microsoft-платформе) при помощи Nginx – это:Дешево
  • 16. Давайте определим понятияМасштабирование – это механизм, позволяющий пропорционально увеличивать производительность системы за счет добавления нового оборудования.Отказоустойчивость – это механизм, позволяющий не терять работоспособности системы при выходе из строя единицы оборудования.Можно рассматривать эти термины в контексте программ, компьютеров или компьютерных комплексов (кластеров).For TulaDev.net \ 2011
  • 17. Зачем это нужно?Для того, чтобы понять, зачем я затеял этот доклад, давайте сделаем эксперимент.Давайте посчитаем, сколько запросов к среднестатистическому сайту делает среднестатистический пользователь.Возьмем первый попавшийся сайт, например, http://www.tuladev.net/For TulaDev.net \ 2011
  • 18. Зачем это нужно?Протокол обращений к серверу:For TulaDev.net \ 2011
  • 19. Зачем это нужно?Давайте немного детальнее разберем, что это за запросы:45 запросов при загрузке одной страницы!
  • 20. 22 запроса к домену tuladev.net
  • 21. 21 запрос к статическим файлам
  • 23. 1 запрос к ASP странице
  • 24. 95% запросов для обработки не требуют никакой сложной логики. С обработкой таких запросов вполне мог бы справиться один из первых HTTP-серверов в истории человечества.For TulaDev.net \ 2011
  • 25. Зачем это нужно?Оперируя понятиями .NET, C#, ASP мы с вами сможем оптимизировать лишь 5% всех запросов, обрабатываемых сервером для того, чтобы отобразить пользователю главную страницу этого среднестатистического сайта.Чтобы оптимизировать остальные 95% нам нужно разбираться уже не столько в .NET, сколько в настройках и производительности web-сервера.Этот вопрос лежит скорее в области системного администрирования, но я думаю, что мы с вами разберемся.For TulaDev.net \ 2011
  • 26. А есть ли проблема?Так может быть нет ничего страшного в этих запросах к статическим файлам?Может быть это всего лишь «песок» и он не оказывает существенного влияния на скорость загрузки страницы.Чтобы ответить на этот вопрос давайте вспомним, что быстрее скопировать: 1 файл в 1 Mb или 1000 в 1 Kb?Мелкие файлы всегда медленнее передавать из-за наличия накладных расходов.For TulaDev.net \ 2011
  • 27. Тестовое окружениеOracle VM VirtualBox3 виртуальные машины, соединенные сетью 1 Gbps:Windows Server 2003 (1Gb) – работает IIS 6.0192.168.250.1:80 – IIS
  • 28. Debian Linux (nginx) (256 Mb) – работает Nginx 1.0.1192.168.250.2:80 – Apache192.168.250.3:80 – Nginx192.168.250.4:80 – Nginx
  • 29. Debian Linux (benchmark) (256 Mb) для запуска “ab”IP не важенFor TulaDev.net \ 2011
  • 30. Давайте посмотримПроведем 1-й эксперимент:Маленький HTML файл, ~150 байт.Посмотрим, с какой скоростью его будет отдавать:Apache
  • 31. IIS
  • 32. NginxВ качестве тестирующего приложения буду использовать утилиту ApacheBenchhttp://httpd.apache.org/docs/2.0/programs/ab.htmlFor TulaDev.net \ 2011
  • 33. Давайте посмотримПроведем 2-й эксперимент:Большой EXE файл, ~1Mбайт.Посмотрим, с какой скоростью его будет отдавать:Apache
  • 34. IIS
  • 35. NginxВ качестве тестирующего приложения буду использовать утилиту ApacheBenchhttp://httpd.apache.org/docs/2.0/programs/ab.htmlFor TulaDev.net \ 2011
  • 36. Откуда такая разница?Коренная причина в особенностях web-серверов.IIS – это вообще-то Application server.
  • 37. Nginx – это HTTP-сервер. Он изначально создавался именнодля целей быстрой обработки запросов.Игорь Сысоев называет причиной такой разницы то, что nginxиспользует вызов sendfile (для не Linux платформ используются другие механизмы).Читаем, что такое sendfile:«системный вызов, который выполняет передачу файла за одно обращение», при этом «не происходит переключение контекста между пользовательским режимом и режимом ядра, а это весьма "дорогостоящая"операция».For TulaDev.net \ 2011
  • 38. Что позволяет NginxМасштабированиеNginxпозволяет скрывать за собой сотни серверов, которые будут иметь единую точку входа. Распределять между ними запросы практически по достаточно широкому набору возможных правил.Отключение любого из серверов бэкэнда не повлияет на работоспособности системы (естественно пропорционально просядет производительность)Но отключение сервера с Nginxроняет всю систему.Как быть?For TulaDev.net \ 2011
  • 39. Что позволяет NginxОтказоустойчивостьNginxсам является единой точкой отказа. Чтобы обеспечить близкую к 100% отказоустойчивость нужно воспользоваться дополнительным механизмом.CARP позволяет сделать так, что несколько машин могут обслуживать запросы к одному IP. Выход из строя любой из них не нарушает работоспособности системы.На практике 2-х машин хватит, чтобы обеспечить очень близкую к 100% отказоустойчивость.For TulaDev.net \ 2011
  • 40. И снова, а где Microsoft?Nginx – это не панацея.Он не умеет выполнять приложения .NET (хотя умеет, например, perl)Это всего лишь маленький легкий HTTP-сервер, который умеет здорово отдавать статические файлы.Но кроме этого его можно использовать для проксирования других Web-серверов.Вот тут и вступает в игру IIS.Связка Nginx+IISгораздо мощнее отдельного IIS или отдельного Nginx.For TulaDev.net \ 2011
  • 43. Common Address Redundancy Protocol (CARP)
  • 44. Microsoft Azure (неявная реализация)
  • 45. Microsoft Network Load Balancing (NLB)
  • 46. Microsoft Application Request Routing (ARR)For TulaDev.net \ 2011
  • 47. Где Nginx не поможетДля обработки 1-го запроса не хватает мощности 1-го сервера. (Если нужно склеить несколько разных блоков, то Nginx умеет SSI ).
  • 48. Поток входящих запросов не могут обработать все доступные бэкенды. (Здравствуй, 504 Gateway time out).
  • 49. Поток входящих запросов таков, что не справляется Nginx. Тут нужно применять DNS round robin.
  • 50. По каким-то причинам нет возможности использовать Unix-систему. (Несмотря на то, что Nginxработаетв Windows, производительность и надежность там будет не та).For TulaDev.net \ 2011
  • 51. На этом все Почитать об Nginx: http://sysoev.ru/nginx/Задать мне вопрос: sergey.shebanin@ingate.ru