SlideShare a Scribd company logo
1 of 30
Построение системного
ландшафта для высоко
нагруженного проекта


                                              ООО «Ленвендо-Софт»
                                                 Гаврилов Виталий
                                              Технический директор


тел.: +7 (812) 322-95-87   info@lenvendo.ru
Построение системного ландшафта
для высоко нагруженного проекта

 Используемое «железо». Что и для чего выбрать?
 Как построить горизонтально-масштабируемое
 решение?
 Балансировка нагрузки на БД
 Распределение сетевого трафика
 Масштабирование высоко нагруженного проекта
 Экономика проекта
 Резервное копирование
Используемое «железо». Что и для чего выбрать?


               Базовое решение
                                                         Apache + php                 MySQL
                        Nginx




  Посетитель




  Посетитель
                                                                        База данных
                                           WEB-сервер
                      Балансирующий
                          сервер
  Посетитель


                                  Varnish
                                  Nginx
                                  NFS/CIFS/Smth server




                  Файловое
                 хранилище
Используемое «железо». Что и для чего выбрать?
               Решение с использованием
               Технологий виртуализации
                                                               Apache + php                 MySQL
                                Nginx




                Балансирующий
                    сервер
  Посетитель

                                        WEB-сервер


  Посетитель                                         WEB-сервер               База данных


                                        WEB-сервер
  Посетитель




                                        Varnish
                                        Nginx
                                        NFS/CIFS/Smth server




                     Файловое
                    хранилище
Как построить горизонтально-масштабируемое
решение?

•   Масштабирование на уровне приложения
•   Масштабирование на уровне базы данных
•   Масштабирование на уровне статического контента
•   Масштабирование на уровне сетевых интерфейсов
Как построить горизонтально-масштабируемое
решение?

• Масштабирование на уровне приложения

 Поддержка распределенного (memcached) или
 файлового кеширования
 Отсутствие или минимизация в логике приложения
 операций, требующих монопольных блокировок
 файлов
 Модульность приложения, позволяющая
 минимизировать число уникальных обращений к
 файловой системе
Как построить горизонтально-масштабируемое
решение?

• Масштабирование на уровне базы данных

 Поддержка на уровне ядра приложения разделения
 запросов к базе данных на запросы выборки и
 запросы изменения данных
 Наличие на уровне базы данных средств master-slave
 репликации на основании транспорта журнала
 транзакций
 Корректная поддержка на уровне приложения
 непоследовательной во времени смены
 идентификаторов (необходимо для master-master
 репликации в mysql)
Как построить горизонтально-масштабируемое
решение?

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

  Хранение статического контента в файловой
  системе, а не в базе данных
  Наличие в ядре приложения специализированной
  настройки для определения места хранения
  загружаемого статического контента
  Наличие в ядре приложения функций работы с CDN
  (Content Delivery Network)
Как построить горизонтально-масштабируемое
решение?

• Масштабирование на уровне сетевых
  интерфейсов

 Наличие избыточного оборудования с
 высокоскоростным (от 100 МБит) подключением к сети
 Интернет.
 Вынесение статического контента в CDN средствами
 приложения
Балансировка нагрузки на БД

                      Apache + php                            MySQL




                          Запись/чтение
WEB-сервер
                                Запись/чтение

                          Запись/чтение
             WEB-сервер                         База данных


WEB-сервер
Балансировка нагрузки на БД

                                                                                    MySQL
                                                                                    Master-1



                      Apache + php




                                     Запись/чтение
                                                                      База данных


WEB-сервер


                                           Запись/чтение
             WEB-сервер
                                     Запись/чтение

WEB-сервер
                                                                      База данных




                                                            MySQL
                                                           Master-2
Балансировка нагрузки на БД

                                                                            MySQL
                                                                            Slave-1

                      Apache + php                                MySQL
                                                                  Master


                                           Чтение



                           Запись
WEB-сервер                       Запись                                    MySQL
                                                                           Slave-2
                           Запись
             WEB-сервер                   Чтение    База данных
                                          Чтение

WEB-сервер
Балансировка нагрузки на БД
                                                                                MySQL
                                                                                Master-1



                      Apache + php                                                          MySQL
                                                                                            Slave-1


                                     Запись
                                                                  База данных
                                                   Чтение
                                                        Чтение
WEB-сервер


                                          Запись
             WEB-сервер
                                     Запись                                                MySQL
                                                                                           Slave-2
WEB-сервер
                                               Чтение             База данных




                                                        MySQL
                                                       Master-2
Отказоустойчивость базы данных


 Отказоустойчивость базы данных может быть
 обеспечена:

 на уровне приложения (автоматическое выявление
 недоступных узлов)
 на уровне MySQL-proxy
 на уровне кластерных ресурсов (например,
 pacemaker)
Отказоустойчивость БД средствами кластера

                                                                    MySQL
                                         Private Server IP
                                                                    Master-1


                      Shared master IP



             Запись

                                                      База данных

                                                                         MySQL
WEB-сервер
                                                                         Slave-1
             Чтение




                       Shared slave IP



                                         Private Server IP
Отказоустойчивость БД средствами кластера

                                                                    MySQL
                                         Private Server IP
                                                                    Master-1


                      Shared master IP



             Запись

                                                      База данных

                                                                         MySQL
WEB-сервер
                                                                         Slave-1
             Чтение




                      Shared slave IP



                                         Private Server IP
Отказоустойчивость БД средствами кластера




                                                                        MySQL
                                             Private Server IP
                                                                        Master-1


                          Shared master IP



                 Запись

                                                          База данных

                                                                             MySQL
    WEB-сервер
                                                                             ExSlave-1
                 Чтение




                          Shared slave IP



                                             Private Server IP
Распределение сетевого трафика

 Ограничение полосы пропускания на сетевое
 подключение
  – Перенос статического контента на
    отдельный домен/поддомен
 Ограничение числа одновременных
 соединений на уровне WEB-браузера
  – Использование «поддельных» поддоменов
  – Использование CDN как универсальное
    решение
Распределение сетевого трафика
         Использование «поддельных» поддоменов
                                                                           Apache + php                 MySQL
                               Nginx

             Балансирующий
                 сервер
               www.site.ru
Посетитель   HTTP

                                             HTT{                              SQL


Посетитель
                                                                                          База данных
                                                             WEB-сервер
                                          Файловый обмен

Посетитель

             HTTP
                                                    Varnish
                                                    Nginx
                                                    NFS/CIFS/Smth server

             HTTP
                                         Файловое
                     Файловый обмен
                                        Хранилище
                                       *.static.site.ru
Распределение сетевого трафика
   Использование «поддельных» поддоменов

• Изменения в DNS

static   IN   A       1.2.3.4
static   IN   A       1.2.3.5

*.static IN   CNAME   static
Распределение сетевого трафика
   Использование «поддельных» поддоменов

• Изменения в коде сайта

<img src=“/images/logo.jpg” alt=“site.ru” />
…
<img src=“/static/people/ivanov.png” alt=“Ivanov Ivan” />

<img src=“http://s1.static.site.ru/images/logo.jpg” alt=“site.ru” />
…
<img src=“http://s2.static.site.ru/static/people/ivanov.png” alt=“Ivanov Ivan”
   />
Распределение сетевого трафика

 Использование CDN как универсальное
 решение                                                                                                     MySQL
                                          Nginx                                 Apache + php

                      Балансирующий
                          сервер
                        www.site.ru
  Посетитель          HTTP

                                                    HTT{                            SQL


  Посетитель
                                                                                               База данных
                                                                 WEB-сервер


  Посетитель


                                                       Обмен по протоколу CDN

               HTTP
                             HTTP




                                    Синхронизация
                                       данных


                                     CDN
Распределение сетевого трафика

  Использование CDN как универсальное
  решение

• Изменение в коде приложения

Изменения зависят от используемой CDN
Масштабирование высоко нагруженного проекта


 Синхронное масштабирование между датацентрами
 Асинхронное масштабирование между датацентрами
 Неполное асинхронное зеркалирование данных
Экономика вопроса

 Экономика высоко нагруженной системы
 определяется на этапе формирования системной
 архитектуры в момент выбора технологий.
 На этапе создания и на этапе эксплуатации системы
 экономика складывается из следующих факторов:

 Программное обеспечение (ОС, СУБД, антивирус и т.п.), доп.
 лицензии, продление техподдержки и пр.
 Оборудование, каналы с учетом наращивания в ходе
 эксплуатации
 Администрирование системы
 Доработка кода приложения
Резервное копирование


 Резервное копирование файловой системы сайта
 Резервное копирование базы данных
 Резервное копирование статического контента
Резервное копирование

  Резервное копирование файловой системы сайта
• Инструменты для выполнения резервного
  копирования
  – bacula (http://www.bacula.org/en/)
• Рекомендации по выполнению резервного
  копирования
  – Наличие дублирующего сервера файловой системы сайта
    для минимизации нагрузки на время выполнения резервного
    копирования
  – Наличие выделенного сервера резервного копирования
  – Наличие дублирующего сервера резервного
    копирование в другом ДЦ
Резервное копирование

  Резервное копирование базы данных
• Инструменты резервного копирования
  – Резервное БД MySQL копирование можно производить как с
    помощью встроенной утилиты mysqldump, так и с
    использованием Percona XtraBackup, позволяющую
    создавать инкриментные копии.
• Рекомендации по организации резервного
  копирования
  – Наличие «горячей копии» БД построенной на master-slave
    репликации и используемой для выполнения процедуры
    резервного копирования
  – Наличие «дублирующей копии БД» в другом ДЦ на
    случай отказа ДЦ.
Резервное копирование

  Резервное копирование статического контента
• Использовать резервное копирование в слчае
  использования CDN нет необходимости!
• Инструменты для выполнения резервного
  копирования
  – bacula (http://www.bacula.org/en/)
• Рекомендации по выполнению резервного
  копирования
  – В связи со спецификой изменения файловой системы
    возможно более редкое выполнения процедуры полного
    резервного копирования
Спасибо за внимание!
Буду рад ответить на Ваши вопросы.



                                     ООО «Ленвендо-Софт»
                                        Гаврилов Виталий
                                     Технический директор

More Related Content

What's hot

«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервиса
«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервиса«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервиса
«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервисаIT Weekend
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureNatalia Efimtseva
 
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...CodeFest
 
Azure web apps - designing and debugging
Azure web apps  - designing and debuggingAzure web apps  - designing and debugging
Azure web apps - designing and debuggingAlexey Bokov
 
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptVasiliy Teliatnikov
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012Alex Chistyakov
 
Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQLAndrey Korshikov
 

What's hot (7)

«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервиса
«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервиса«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервиса
«Битрикс24»: архитектура и эксплуатация высоконагруженного облачного сервиса
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
 
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
CodeFest 2012. Рыжиков С. — Архитектура и запуск облачного сервиса в Amazon A...
 
Azure web apps - designing and debugging
Azure web apps  - designing and debuggingAzure web apps  - designing and debugging
Azure web apps - designing and debugging
 
What do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScriptWhat do you MEAN? или введение в Fullstack JavaScript
What do you MEAN? или введение в Fullstack JavaScript
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQL
 

Viewers also liked

Containers orchestrators: Docker vs. Kubernetes
Containers orchestrators: Docker vs. KubernetesContainers orchestrators: Docker vs. Kubernetes
Containers orchestrators: Docker vs. KubernetesDmitry Lazarenko
 
Ленвендо. Корпоративный портал.
Ленвендо. Корпоративный портал.Ленвендо. Корпоративный портал.
Ленвендо. Корпоративный портал.Lenvendo
 
Ленвендо. Сайт на службе HR
Ленвендо. Сайт на службе HRЛенвендо. Сайт на службе HR
Ленвендо. Сайт на службе HRLenvendo
 
Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...
Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...
Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...Lenvendo
 
Решение Digift - электронные подарочные карты "под ключ"
Решение Digift - электронные подарочные карты "под ключ"Решение Digift - электронные подарочные карты "под ключ"
Решение Digift - электронные подарочные карты "под ключ"Lenvendo
 
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Lenvendo
 
Повышаем отказоустойчивость без дорогих решений
Повышаем отказоустойчивость без дорогих решенийПовышаем отказоустойчивость без дорогих решений
Повышаем отказоустойчивость без дорогих решенийLenvendo
 
Javascript in big project
Javascript in big projectJavascript in big project
Javascript in big projectEvgeny Gusev
 
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.Lenvendo
 
Ленвендо. Внедрение корпоративного портала
Ленвендо. Внедрение корпоративного порталаЛенвендо. Внедрение корпоративного портала
Ленвендо. Внедрение корпоративного порталаLenvendo
 
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)George Lebedev
 
Каким должен быть подарок?
Каким должен быть подарок? Каким должен быть подарок?
Каким должен быть подарок? CAMPO_MARZIO
 
Clustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSEClustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSESaputro Aryulianto
 
Microservices for Enterprises - Consistent Network & Security services for Co...
Microservices for Enterprises - Consistent Network & Security services for Co...Microservices for Enterprises - Consistent Network & Security services for Co...
Microservices for Enterprises - Consistent Network & Security services for Co...Dhananjay Sampath
 
Building Distributed System with Celery on Docker Swarm - PyCon JP 2016
Building Distributed System with Celery on Docker Swarm - PyCon JP 2016Building Distributed System with Celery on Docker Swarm - PyCon JP 2016
Building Distributed System with Celery on Docker Swarm - PyCon JP 2016Wei Lin
 
'Dockerizing' within enterprises
'Dockerizing' within enterprises'Dockerizing' within enterprises
'Dockerizing' within enterprisesHarish Jayakumar
 
Beyond PaaS v.s IaaS: How to Manage Both
Beyond PaaS v.s IaaS: How to Manage BothBeyond PaaS v.s IaaS: How to Manage Both
Beyond PaaS v.s IaaS: How to Manage BothRightScale
 
State of the Cloud DevOps Trends
State of the Cloud DevOps TrendsState of the Cloud DevOps Trends
State of the Cloud DevOps TrendsRightScale
 

Viewers also liked (20)

Containers orchestrators: Docker vs. Kubernetes
Containers orchestrators: Docker vs. KubernetesContainers orchestrators: Docker vs. Kubernetes
Containers orchestrators: Docker vs. Kubernetes
 
Ленвендо. Корпоративный портал.
Ленвендо. Корпоративный портал.Ленвендо. Корпоративный портал.
Ленвендо. Корпоративный портал.
 
Ленвендо. Сайт на службе HR
Ленвендо. Сайт на службе HRЛенвендо. Сайт на службе HR
Ленвендо. Сайт на службе HR
 
Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...
Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...
Конференция Highload++ 2014, "Отказоустойчивый микрокластер своими руками", "...
 
Решение Digift - электронные подарочные карты "под ключ"
Решение Digift - электронные подарочные карты "под ключ"Решение Digift - электронные подарочные карты "под ключ"
Решение Digift - электронные подарочные карты "под ключ"
 
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
 
Повышаем отказоустойчивость без дорогих решений
Повышаем отказоустойчивость без дорогих решенийПовышаем отказоустойчивость без дорогих решений
Повышаем отказоустойчивость без дорогих решений
 
Javascript in big project
Javascript in big projectJavascript in big project
Javascript in big project
 
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
Ленвендо. Как привлечь сотрудников в корпоративную социальную сеть.
 
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
 
Ленвендо. Внедрение корпоративного портала
Ленвендо. Внедрение корпоративного порталаЛенвендо. Внедрение корпоративного портала
Ленвендо. Внедрение корпоративного портала
 
Daruyou Gift Card
Daruyou Gift CardDaruyou Gift Card
Daruyou Gift Card
 
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
Giftery B2B (Подарочные сертификаты, лояльность, мотивация)
 
Каким должен быть подарок?
Каким должен быть подарок? Каким должен быть подарок?
Каким должен быть подарок?
 
Clustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSEClustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSE
 
Microservices for Enterprises - Consistent Network & Security services for Co...
Microservices for Enterprises - Consistent Network & Security services for Co...Microservices for Enterprises - Consistent Network & Security services for Co...
Microservices for Enterprises - Consistent Network & Security services for Co...
 
Building Distributed System with Celery on Docker Swarm - PyCon JP 2016
Building Distributed System with Celery on Docker Swarm - PyCon JP 2016Building Distributed System with Celery on Docker Swarm - PyCon JP 2016
Building Distributed System with Celery on Docker Swarm - PyCon JP 2016
 
'Dockerizing' within enterprises
'Dockerizing' within enterprises'Dockerizing' within enterprises
'Dockerizing' within enterprises
 
Beyond PaaS v.s IaaS: How to Manage Both
Beyond PaaS v.s IaaS: How to Manage BothBeyond PaaS v.s IaaS: How to Manage Both
Beyond PaaS v.s IaaS: How to Manage Both
 
State of the Cloud DevOps Trends
State of the Cloud DevOps TrendsState of the Cloud DevOps Trends
State of the Cloud DevOps Trends
 

Similar to Ленвендо.Построение системного ландшафта высоконагруженного проекта

Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиКак мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиtfmailru
 
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...it-people
 
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...Clouds NN
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров 1С-Битрикс
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаHigh Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаSumy PHP User Grpoup
 
Архитектура OpenStack
Архитектура OpenStackАрхитектура OpenStack
Архитектура OpenStackMirantis
 
Масштабирование социальных приложений с помощью AWS
Масштабирование социальных приложений с помощью AWSМасштабирование социальных приложений с помощью AWS
Масштабирование социальных приложений с помощью AWSz-tech
 
От уютного блога до распределенной инфраструктуры
От уютного блога до распределенной инфраструктурыОт уютного блога до распределенной инфраструктуры
От уютного блога до распределенной инфраструктурыАнтон Еремин
 
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...CodeFest
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзорMicrosoft
 
Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...Andrew Mayorov
 
Drupal Highload - Klera Vilenskaya
Drupal Highload - Klera VilenskayaDrupal Highload - Klera Vilenskaya
Drupal Highload - Klera VilenskayaAlex Ilyin
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоАлександр Ежов
 
How to install IBM connections without being shot v.3.0.1
How to install IBM connections without being shot v.3.0.1How to install IBM connections without being shot v.3.0.1
How to install IBM connections without being shot v.3.0.1Nikolay Vlasov
 
Приватные облака: сумма технологии
Приватные облака: сумма технологииПриватные облака: сумма технологии
Приватные облака: сумма технологииpcweek_ua
 

Similar to Ленвендо.Построение системного ландшафта высоконагруженного проекта (20)

Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузкиКак мы в Почте@Mail.Ru выдерживаем высокие нагрузки
Как мы в Почте@Mail.Ru выдерживаем высокие нагрузки
 
веб кластер
веб кластервеб кластер
веб кластер
 
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
DUMP-2012 - Только хардкор! - "Архитектура и запуск облачного сервиса в Amazo...
 
Bitrix24 (DevConf)
Bitrix24 (DevConf)Bitrix24 (DevConf)
Bitrix24 (DevConf)
 
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации о...
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаHigh Availability в жизни обычного разработчика
High Availability в жизни обычного разработчика
 
Архитектура OpenStack
Архитектура OpenStackАрхитектура OpenStack
Архитектура OpenStack
 
Clausius present
Clausius presentClausius present
Clausius present
 
Масштабирование социальных приложений с помощью AWS
Масштабирование социальных приложений с помощью AWSМасштабирование социальных приложений с помощью AWS
Масштабирование социальных приложений с помощью AWS
 
От уютного блога до распределенной инфраструктуры
От уютного блога до распределенной инфраструктурыОт уютного блога до распределенной инфраструктуры
От уютного блога до распределенной инфраструктуры
 
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
 
2013-07-06 02 Дмитрий Голушко. Cassandra
2013-07-06 02 Дмитрий Голушко. Cassandra2013-07-06 02 Дмитрий Голушко. Cassandra
2013-07-06 02 Дмитрий Голушко. Cassandra
 
MS Swit 2012 - SQL Server 2012
MS Swit 2012 - SQL Server 2012MS Swit 2012 - SQL Server 2012
MS Swit 2012 - SQL Server 2012
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзор
 
Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...
 
Drupal Highload - Klera Vilenskaya
Drupal Highload - Klera VilenskayaDrupal Highload - Klera Vilenskaya
Drupal Highload - Klera Vilenskaya
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это просто
 
How to install IBM connections without being shot v.3.0.1
How to install IBM connections without being shot v.3.0.1How to install IBM connections without being shot v.3.0.1
How to install IBM connections without being shot v.3.0.1
 
Приватные облака: сумма технологии
Приватные облака: сумма технологииПриватные облака: сумма технологии
Приватные облака: сумма технологии
 

Ленвендо.Построение системного ландшафта высоконагруженного проекта

  • 1. Построение системного ландшафта для высоко нагруженного проекта ООО «Ленвендо-Софт» Гаврилов Виталий Технический директор тел.: +7 (812) 322-95-87 info@lenvendo.ru
  • 2. Построение системного ландшафта для высоко нагруженного проекта Используемое «железо». Что и для чего выбрать? Как построить горизонтально-масштабируемое решение? Балансировка нагрузки на БД Распределение сетевого трафика Масштабирование высоко нагруженного проекта Экономика проекта Резервное копирование
  • 3. Используемое «железо». Что и для чего выбрать? Базовое решение Apache + php MySQL Nginx Посетитель Посетитель База данных WEB-сервер Балансирующий сервер Посетитель Varnish Nginx NFS/CIFS/Smth server Файловое хранилище
  • 4. Используемое «железо». Что и для чего выбрать? Решение с использованием Технологий виртуализации Apache + php MySQL Nginx Балансирующий сервер Посетитель WEB-сервер Посетитель WEB-сервер База данных WEB-сервер Посетитель Varnish Nginx NFS/CIFS/Smth server Файловое хранилище
  • 5. Как построить горизонтально-масштабируемое решение? • Масштабирование на уровне приложения • Масштабирование на уровне базы данных • Масштабирование на уровне статического контента • Масштабирование на уровне сетевых интерфейсов
  • 6. Как построить горизонтально-масштабируемое решение? • Масштабирование на уровне приложения Поддержка распределенного (memcached) или файлового кеширования Отсутствие или минимизация в логике приложения операций, требующих монопольных блокировок файлов Модульность приложения, позволяющая минимизировать число уникальных обращений к файловой системе
  • 7. Как построить горизонтально-масштабируемое решение? • Масштабирование на уровне базы данных Поддержка на уровне ядра приложения разделения запросов к базе данных на запросы выборки и запросы изменения данных Наличие на уровне базы данных средств master-slave репликации на основании транспорта журнала транзакций Корректная поддержка на уровне приложения непоследовательной во времени смены идентификаторов (необходимо для master-master репликации в mysql)
  • 8. Как построить горизонтально-масштабируемое решение? • Масштабирование на уровне статического контента Хранение статического контента в файловой системе, а не в базе данных Наличие в ядре приложения специализированной настройки для определения места хранения загружаемого статического контента Наличие в ядре приложения функций работы с CDN (Content Delivery Network)
  • 9. Как построить горизонтально-масштабируемое решение? • Масштабирование на уровне сетевых интерфейсов Наличие избыточного оборудования с высокоскоростным (от 100 МБит) подключением к сети Интернет. Вынесение статического контента в CDN средствами приложения
  • 10. Балансировка нагрузки на БД Apache + php MySQL Запись/чтение WEB-сервер Запись/чтение Запись/чтение WEB-сервер База данных WEB-сервер
  • 11. Балансировка нагрузки на БД MySQL Master-1 Apache + php Запись/чтение База данных WEB-сервер Запись/чтение WEB-сервер Запись/чтение WEB-сервер База данных MySQL Master-2
  • 12. Балансировка нагрузки на БД MySQL Slave-1 Apache + php MySQL Master Чтение Запись WEB-сервер Запись MySQL Slave-2 Запись WEB-сервер Чтение База данных Чтение WEB-сервер
  • 13. Балансировка нагрузки на БД MySQL Master-1 Apache + php MySQL Slave-1 Запись База данных Чтение Чтение WEB-сервер Запись WEB-сервер Запись MySQL Slave-2 WEB-сервер Чтение База данных MySQL Master-2
  • 14. Отказоустойчивость базы данных Отказоустойчивость базы данных может быть обеспечена: на уровне приложения (автоматическое выявление недоступных узлов) на уровне MySQL-proxy на уровне кластерных ресурсов (например, pacemaker)
  • 15. Отказоустойчивость БД средствами кластера MySQL Private Server IP Master-1 Shared master IP Запись База данных MySQL WEB-сервер Slave-1 Чтение Shared slave IP Private Server IP
  • 16. Отказоустойчивость БД средствами кластера MySQL Private Server IP Master-1 Shared master IP Запись База данных MySQL WEB-сервер Slave-1 Чтение Shared slave IP Private Server IP
  • 17. Отказоустойчивость БД средствами кластера MySQL Private Server IP Master-1 Shared master IP Запись База данных MySQL WEB-сервер ExSlave-1 Чтение Shared slave IP Private Server IP
  • 18. Распределение сетевого трафика Ограничение полосы пропускания на сетевое подключение – Перенос статического контента на отдельный домен/поддомен Ограничение числа одновременных соединений на уровне WEB-браузера – Использование «поддельных» поддоменов – Использование CDN как универсальное решение
  • 19. Распределение сетевого трафика Использование «поддельных» поддоменов Apache + php MySQL Nginx Балансирующий сервер www.site.ru Посетитель HTTP HTT{ SQL Посетитель База данных WEB-сервер Файловый обмен Посетитель HTTP Varnish Nginx NFS/CIFS/Smth server HTTP Файловое Файловый обмен Хранилище *.static.site.ru
  • 20. Распределение сетевого трафика Использование «поддельных» поддоменов • Изменения в DNS static IN A 1.2.3.4 static IN A 1.2.3.5 *.static IN CNAME static
  • 21. Распределение сетевого трафика Использование «поддельных» поддоменов • Изменения в коде сайта <img src=“/images/logo.jpg” alt=“site.ru” /> … <img src=“/static/people/ivanov.png” alt=“Ivanov Ivan” /> <img src=“http://s1.static.site.ru/images/logo.jpg” alt=“site.ru” /> … <img src=“http://s2.static.site.ru/static/people/ivanov.png” alt=“Ivanov Ivan” />
  • 22. Распределение сетевого трафика Использование CDN как универсальное решение MySQL Nginx Apache + php Балансирующий сервер www.site.ru Посетитель HTTP HTT{ SQL Посетитель База данных WEB-сервер Посетитель Обмен по протоколу CDN HTTP HTTP Синхронизация данных CDN
  • 23. Распределение сетевого трафика Использование CDN как универсальное решение • Изменение в коде приложения Изменения зависят от используемой CDN
  • 24. Масштабирование высоко нагруженного проекта Синхронное масштабирование между датацентрами Асинхронное масштабирование между датацентрами Неполное асинхронное зеркалирование данных
  • 25. Экономика вопроса Экономика высоко нагруженной системы определяется на этапе формирования системной архитектуры в момент выбора технологий. На этапе создания и на этапе эксплуатации системы экономика складывается из следующих факторов: Программное обеспечение (ОС, СУБД, антивирус и т.п.), доп. лицензии, продление техподдержки и пр. Оборудование, каналы с учетом наращивания в ходе эксплуатации Администрирование системы Доработка кода приложения
  • 26. Резервное копирование Резервное копирование файловой системы сайта Резервное копирование базы данных Резервное копирование статического контента
  • 27. Резервное копирование Резервное копирование файловой системы сайта • Инструменты для выполнения резервного копирования – bacula (http://www.bacula.org/en/) • Рекомендации по выполнению резервного копирования – Наличие дублирующего сервера файловой системы сайта для минимизации нагрузки на время выполнения резервного копирования – Наличие выделенного сервера резервного копирования – Наличие дублирующего сервера резервного копирование в другом ДЦ
  • 28. Резервное копирование Резервное копирование базы данных • Инструменты резервного копирования – Резервное БД MySQL копирование можно производить как с помощью встроенной утилиты mysqldump, так и с использованием Percona XtraBackup, позволяющую создавать инкриментные копии. • Рекомендации по организации резервного копирования – Наличие «горячей копии» БД построенной на master-slave репликации и используемой для выполнения процедуры резервного копирования – Наличие «дублирующей копии БД» в другом ДЦ на случай отказа ДЦ.
  • 29. Резервное копирование Резервное копирование статического контента • Использовать резервное копирование в слчае использования CDN нет необходимости! • Инструменты для выполнения резервного копирования – bacula (http://www.bacula.org/en/) • Рекомендации по выполнению резервного копирования – В связи со спецификой изменения файловой системы возможно более редкое выполнения процедуры полного резервного копирования
  • 30. Спасибо за внимание! Буду рад ответить на Ваши вопросы. ООО «Ленвендо-Софт» Гаврилов Виталий Технический директор