SlideShare a Scribd company logo
1 of 30
Хостинг для Drupal
                     на примере www.forbes.ru




Тарас Савчук
taras (ухо)1adm.ru
http://www.1adm.ru
Генеральный спонсор и организатор
      конференции DrupalConf 2011




При поддержке:
Спонсоры


                      Информационные спонсоры

Сайт конференции
Постановка задачи
Задача (2009-й год)
- Drupal 6
- прогноз нагрузки 10M хитов в месяц
-два сервера под проект (DL360G6)
-производительность, масштабируемость, отказоустойчивость

Наследие
- 4 сервера (FreeBSD 7/amd64)
- web-проекты:
     - http://www.runewsweek.ru
     -http://www.ok-magazine.ru
     -http://www.computerbild.ru
     -http://www.axelspringer.ru
Текущая ситуация
Средние параметры нагрузки (3 месяца)

Трафик: 3-4 Тб/месяц, 1.5 Мб/c отдача
Front-end: 130 запросов в секунду, 1К активных подключений
MySQL: 1.6 Kqps

Последний пик посещаемости (15-е апреля)

Трафик: отдали 270Гб+, 9Мб/с – упираемся в канал
Front-end: 50M+ запросов (включая статику), до 1700 запросов в
секунду, до 10К активных подключений
Back-ends: 2.2M+и 1.5M+ запросов
MySQL: до 20Кqps, 2Kqpsв среднем.
Текущая ситуация
Физические параметры www.forbes.ru

Объем кода + медиафайлов: 16 Гб
Количество файлов (код + медиафайлы): ~ 110К
Размер базы: 3 Гб
Кол-во записей в базе: 20 М
Принципы построения
1. Хостинг под «стандартные» web-проекты
      нет гигантских объемов медиафайлов и огромных баз
2. Общая площадка, максимальная утилизация
      разместить старые проекты, Форбс, будущие проекты
3. Нужно изолировать проекты друг от друга
      безопасность, разные
      разработчики/подрядчики, совместимость ПО
4. Shared-nothing, не надеемся на железо
      не должно быть единой точки отказа
5. Не менять платформу (FreeBSD) без весомых причин
6. KISS, не гнаться за девятками слишком сильно
   минимум непроверенных технологий
Разделяй и властвуй
1. Front-ends (2 минимум)
   •   балансировка нагрузки между back-ends, failover для back-ends
   •   кэширование, отдача статики
   •   межсетевой экран
   •   расширяемость, отказоустойчивость
2. Back-ends (2 минимум)
   •   код (PHP/Drupal, но может быть что угодно)
   •   расширяемость, отказоустойчивость, режим активный-активный
   •   изоляция web-проектовдруг от друга
3. Сервера БД (2 минимум)
   •   расширяемость, отказоустойчивость
   •   резервное копирование
4. Сеть
   •   отказоустойчивость
Front-ends
1. Общий IP-адрес (или адреса)
   •   на DNS полагаться не можем
   •   CARP (Common Address Redundancy Protocol)во FreeBSD“из коробки”
   •   pf - удобно и функционально
   •   идентичные nginx на обоих front-ends
2. Кэширование/балансировка/отдача статики (nginx)
   •   ngx_http_proxy_module
   •   proxy_store – борьба с новыми и меняющимися файлами
   •   ngx_http_upstream (ip_hash, backup, down) – балансировка, failover
   •   ngx_http_limit_zone_module – ограничение числа подключений
   •   ngx_http_limit_req_module – ограничение числа запросов
   •   удобные логи (профиль производительности сайта)
3. Альтернативы: Varnish, HAProxy
   •   для Varnish нужен Pressflow/патч для Drupal 6/Drupal 7
   •   Varnish/HAProxy – только proxy/балансировка (пусть и хорошая)
   •   Varnish – производительность сравнима cBoost
   •   мало опыта
CARP                         ДЦ



213.145.46.183



                  carp1            carp2




     10.10.10.1
                             LAN




#sysctlnet.inet.carp.preempt=1
CARP                         ДЦ



213.145.46.183                         213.145.46.183



                  carp1            carp2




     10.10.10.1                        10.10.10.1
                             LAN




#sysctlnet.inet.carp.preempt=1
Back-ends: изоляция проектов
1. Почему FreeBSD jails?
   •   лѐгкие
   •   «из коробки»
   •   ezjail – просто и удобно
2. Альтернативы: Xen, OpenVZ, etc.
   •   Xen – тяжѐлый
   •   OpenVZ, Linux-VServer – патченное ядро, лишний функционал
3. Что такое ezjail?
   •   никаких зависимостей, только shell
   •   быстрое создание
   •   резервное копирование, восстановление
   •   шаблоны
   •   ограничение ресурсов (cpuset)
Как выглядит ezjail?
Back-ends: общий DocRoot
1. Почему csync^2?
  •   shared-nothing, узлы полностью независимы
  •   прост и эффективен
  •   подходит для репликации между ДЦ
  •   триггеры (одно решение для данных и конфигураций)
  •   работаем с локальной ФС, которую мы «умеем готовить»
2. Альтернативы:
   DRBD, GFS(2), OCFS(2), GlusterFS, etc…
  •   DRBD – только primary-secondary
  •   DRBD + GFS/OCFS2 (primary-primary) – сложно
  •   нет боевого опыта, сложность, пугают потенциальные
      проблемы производительности, совместимость
Схема работы csync^2
 carp1                     carp2




 web1                      web2



   fs-1-14 (jail)              fs-2-14 (jail)




- одностороння синхронизация
- двусторонняя синхронизация
Что такое csync^2?
•   Асинхронная синхронизация :)
•   Обнаружение и разрешение конфликтов
•   Репликация удалений
•   Сложные конфигурации: исключения, группы
    хостов, slave-режим
•   librsync
•   локальная БД (sqlite)
•   «проталкивает» изменения
•   SSL + pre-shared-keys
•   резервное копирование
•   триггеры
Производительность csync^2
•   10 минут на полную синхронизацию 40K+ файлов
    общим размером 500Мб
•   13 секунд на проверку, что все синхронно
•   22 секунды на синхронизацию новых 1400 файлов
    объемом 13Мб
•   8 секунд на проверку, что все синхронно
Back-ends: web-сервер
•   Apache – совместимость
    •   ПО, поставляемое в виде модулей Apache
    •   модули Drupal, «заточенные» на Apache (Boost)
    •   Apache + Boost с одной машины загружают гигабит

•   Можем использовать любой web-сервер и набор ПО
MySQL
•   Postgresql – богат, но много «но», поэтому MySQL

•   Отказоустойчивость для MySQL
    •   родная репликация (master-slave)
    •   MySQL + DRBD
    •   MySQL Cluster
    •   master-master с родной репликацией (circular replication)
    •   MMM (Multi-Master Replication Manager for MySQL)
    •   Galera – синхронная репликация (на тот момент beta)

•   Масштабируемость
    •   родная репликация (master-slave)
    •   часть запросов на slave (MySQL Proxy, Pressflow)
MySQL
                     db1                   db2


                       db1-drupal                db2-drupal   db-drupal-rw (IP))




db-bitrix-rw (IP))         db1-bitrix            db2-bitrix




           - Подключения к БД
           - Направление репликации
           - MySQL in jail (master)
           - MySQL in jail (slave)
Сеть
•   LACP (Link Aggregation Control Protocol)
    • просто, но не реализовано
    • не нужны коммутаторы при схеме из 2-х серверов
Резюме по архитектуре
•   2 front-ends (активный-пассивный), 2 back-ends
    (активный-активный), 2 MySQL (перекрестная
    репликация master-slave)
•   FreeBSD 7
•   pf –межсетевой экран, подсчет трафика
•   CARP – общий IP, failover
•   Nginx – балансировка, кэширование
•   Jails – легковесная виртуализация (все в jail-ах)
•   csync^2 – синхронизация Document Root, конфигов
•   MySQL – стандартная master-slave репликация
•   LACP – отказоустойчивость сети (не реализовано)
Текущие задачи
•   Резервное копирование (mysqldump, снапшоты)
•   Мониторинг (Zabbix), внешний (http) и внутренний
•   Разработка (git, redmine, jails, нет migraine)
•   Оптимизация производительности
    •   MySQL slow log, mysqldumpslow/mk-query-digest
    •   смотрим на back-ends из nginx
    •   Xdebug
    •   Instrumentation.php от Percona (TODO)
•   Обновление ПО/модернизация железа
Профиль производительности
•   Логи nginx в .csv(в т.ч. $upstream_response_time)
    импортируем в MySQL и получаем полезные
    агрегированные данные
    •   самые медленные страницы (в среднем)
    •   самые медленные страницы (суммарно)
    •   отчет по кодам ответа back-ends
    •   сравнение производительности back-ends
    •   профиль производительности (универсально, имеет смысл
        автоматизировать и пользоваться ежедневно)
    •   помогает понять, где оптимизировать
Профиль производительности
             120


                               99                                            99.9
             100       93.99

               81.66
             80
% запросов




             60



             40



             20



              0
                   0    0.5    1            1.5          2             2.5          3   3.5

                                    Время обработки запроса, секунды
Instrumentation от Percona
•   Инструментарий для экспорта полезных счетчиков в
    переменные Apache
•   Комментарии к запросам MySQL, после чего mk-query-
    digest
•   Переменные ->лог Apache -> SQL ->отчеты
•   Xdebugтяжелый, нет возможности агрегировать
    данные, не подходит для поиска редких проблем
•   Можно ловить проблемы mysql, memcache, чего угодно
•   Требуется интеграция в код (в хороший код
    интегрировать просто)
Планы и проблемы
•   Boost и csync^2– решить проблему или использовать
    альтернативное решение
•   Instrumentation от Perconaдля поиска редких проблем
•   Pressflow, часть запросов на slave
•   Второй ДЦ
•   Автоматизировать failover для MySQL (MMM или
    самостоятельно)
•   Избавиться или свести к минимуму кэширование Drupal
    в MySQL
•   LACP
Спасибо за внимание!




Тарас Савчук
taras (ухо) 1adm.ru
http://www.1adm.ru
Генеральный спонсор и организатор
      конференции DrupalConf 2011




При поддержке:
Спонсоры


                      Информационные спонсоры

Сайт конференции

More Related Content

What's hot

Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Ontico
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Ontico
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Andrew Avdeev
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Ontico
 
Devconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbDevconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbSergey Petrunya
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...Ontico
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Ontico
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)Ontico
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Ontico
 

What's hot (20)

Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...Погружение в виртуальную память и большие страницы / Константин Новаковский (...
Погружение в виртуальную память и большие страницы / Константин Новаковский (...
 
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...
 
Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)Масштабирование баз данных. (Database Scalability)
Масштабирование баз данных. (Database Scalability)
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
 
Devconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadbDevconf2013 new-features-in-mysql-and-mariadb
Devconf2013 new-features-in-mysql-and-mariadb
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
 
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
Rspamd — высокопроизводительная система фильтрации спама / Стахов Всеволод (U...
 
RootConf 2015
RootConf 2015RootConf 2015
RootConf 2015
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
 

Viewers also liked

Zhitarev vsyo chto_vy_hoteli_znat_o_maestro
Zhitarev vsyo chto_vy_hoteli_znat_o_maestroZhitarev vsyo chto_vy_hoteli_znat_o_maestro
Zhitarev vsyo chto_vy_hoteli_znat_o_maestrodrupalconf
 
Ramil organizaciya internet_magazina_na_baze_drupal_7_2
Ramil organizaciya internet_magazina_na_baze_drupal_7_2Ramil organizaciya internet_magazina_na_baze_drupal_7_2
Ramil organizaciya internet_magazina_na_baze_drupal_7_2drupalconf
 
Drush and drupal. администрирование волчек михаил
Drush and drupal. администрирование  волчек михаилDrush and drupal. администрирование  волчек михаил
Drush and drupal. администрирование волчек михаилdrupalconf
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексейпостроение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексейdrupalconf
 
Object oriented css graeme blackwood
Object oriented css graeme blackwoodObject oriented css graeme blackwood
Object oriented css graeme blackwooddrupalconf
 
Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2drupalconf
 
Marshalkina drupalconf multilingual
Marshalkina drupalconf multilingualMarshalkina drupalconf multilingual
Marshalkina drupalconf multilingualdrupalconf
 
фотосток на Drupal+maestro житарёв антон
фотосток на Drupal+maestro житарёв антонфотосток на Drupal+maestro житарёв антон
фотосток на Drupal+maestro житарёв антонdrupalconf
 
Chapter 1 colliding world views
Chapter 1 colliding world viewsChapter 1 colliding world views
Chapter 1 colliding world viewsYa-Han Chen
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загорdrupalconf
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлdrupalconf
 
Henrys story 6th feb 2012 finished
Henrys story  6th feb 2012 finishedHenrys story  6th feb 2012 finished
Henrys story 6th feb 2012 finishedGads910
 
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart  -nemnogo_primerov_iz_zhizniUbercart  -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhiznidrupalconf
 

Viewers also liked (20)

SMS Aero
SMS AeroSMS Aero
SMS Aero
 
Zhitarev vsyo chto_vy_hoteli_znat_o_maestro
Zhitarev vsyo chto_vy_hoteli_znat_o_maestroZhitarev vsyo chto_vy_hoteli_znat_o_maestro
Zhitarev vsyo chto_vy_hoteli_znat_o_maestro
 
Ramil organizaciya internet_magazina_na_baze_drupal_7_2
Ramil organizaciya internet_magazina_na_baze_drupal_7_2Ramil organizaciya internet_magazina_na_baze_drupal_7_2
Ramil organizaciya internet_magazina_na_baze_drupal_7_2
 
Drush and drupal. администрирование волчек михаил
Drush and drupal. администрирование  волчек михаилDrush and drupal. администрирование  волчек михаил
Drush and drupal. администрирование волчек михаил
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексейпостроение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
построение внутренней ссылочной структуры сайта на Drupal 7 (seo) костин алексей
 
Object oriented css graeme blackwood
Object oriented css graeme blackwoodObject oriented css graeme blackwood
Object oriented css graeme blackwood
 
Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2
 
Marshalkina drupalconf multilingual
Marshalkina drupalconf multilingualMarshalkina drupalconf multilingual
Marshalkina drupalconf multilingual
 
Heads & Hands
Heads & HandsHeads & Hands
Heads & Hands
 
Granat
GranatGranat
Granat
 
Spring Media
Spring MediaSpring Media
Spring Media
 
фотосток на Drupal+maestro житарёв антон
фотосток на Drupal+maestro житарёв антонфотосток на Drupal+maestro житарёв антон
фотосток на Drupal+maestro житарёв антон
 
Chapter 1 colliding world views
Chapter 1 colliding world viewsChapter 1 colliding world views
Chapter 1 colliding world views
 
Creon
CreonCreon
Creon
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загор
 
инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
 
Azure
AzureAzure
Azure
 
Henrys story 6th feb 2012 finished
Henrys story  6th feb 2012 finishedHenrys story  6th feb 2012 finished
Henrys story 6th feb 2012 finished
 
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart  -nemnogo_primerov_iz_zhizniUbercart  -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhizni
 
Crm core
Crm coreCrm core
Crm core
 

Similar to Hosting for forbes.ru_

ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Badoo Development
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустяYuriy Nasretdinov
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Ontico
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Ontico
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDAndrew Pantyukhin
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013Alex Chistyakov
 
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Serguei Gitinsky
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Опыт внедрения OpenStack
Опыт внедрения OpenStackОпыт внедрения OpenStack
Опыт внедрения OpenStackYandex
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...ForkConf
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in productionAnatoly Popov
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Ontico
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Olga Lavrentieva
 
Caching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaCaching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaAndrei Pangin
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XCPostgreSQL-Consulting
 

Similar to Hosting for forbes.ru_ (20)

ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Облако в Badoo год спустя
Облако в Badoo год спустяОблако в Badoo год спустя
Облако в Badoo год спустя
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSD
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013SmartOS/Solaris app tuning tools/technologies on HL++ 2013
SmartOS/Solaris app tuning tools/technologies on HL++ 2013
 
Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013Git in Sky presentation @ HighLoad++ 2013
Git in Sky presentation @ HighLoad++ 2013
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Опыт внедрения OpenStack
Опыт внедрения OpenStackОпыт внедрения OpenStack
Опыт внедрения OpenStack
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
 
Caching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in JavaCaching data outside Java Heap and using Shared Memory in Java
Caching data outside Java Heap and using Shared Memory in Java
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 

More from drupalconf

инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлdrupalconf
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайdrupalconf
 
Fotostock on drupal zhitarev anton (eng)
Fotostock on drupal zhitarev anton (eng)Fotostock on drupal zhitarev anton (eng)
Fotostock on drupal zhitarev anton (eng)drupalconf
 
3 reasons to contribute to drupal florian loretan (eng)
3 reasons to contribute to drupal florian loretan (eng)3 reasons to contribute to drupal florian loretan (eng)
3 reasons to contribute to drupal florian loretan (eng)drupalconf
 
Drupal and mobile devices komelin konstanin (eng)
Drupal and mobile devices komelin konstanin (eng)Drupal and mobile devices komelin konstanin (eng)
Drupal and mobile devices komelin konstanin (eng)drupalconf
 
Multilingual solutions florian loretan
Multilingual solutions florian loretanMultilingual solutions florian loretan
Multilingual solutions florian loretandrupalconf
 
идеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинидеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинdrupalconf
 
Caching on highload drupal site roman arkharov (eng)
Caching on highload drupal site  roman arkharov (eng)Caching on highload drupal site  roman arkharov (eng)
Caching on highload drupal site roman arkharov (eng)drupalconf
 
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)drupalconf
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайdrupalconf
 
Business friendly drupal павел прищепа
Business friendly drupal павел прищепаBusiness friendly drupal павел прищепа
Business friendly drupal павел прищепаdrupalconf
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорьdrupalconf
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Drupal and the keys to successful communities martin mayer
Drupal and the keys to successful communities martin mayerDrupal and the keys to successful communities martin mayer
Drupal and the keys to successful communities martin mayerdrupalconf
 
практическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторпрактическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторdrupalconf
 
как зарабатывать друпал разработчику клют иван
как зарабатывать друпал разработчику клют иванкак зарабатывать друпал разработчику клют иван
как зарабатывать друпал разработчику клют иванdrupalconf
 
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинdrupalconf
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovdrupalconf
 
Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1drupalconf
 
Kostin drupal conf-2011-winter
Kostin drupal conf-2011-winterKostin drupal conf-2011-winter
Kostin drupal conf-2011-winterdrupalconf
 

More from drupalconf (20)

инструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэлинструкция по оптимизации сайтов на Drupal херени даниэл
инструкция по оптимизации сайтов на Drupal херени даниэл
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исай
 
Fotostock on drupal zhitarev anton (eng)
Fotostock on drupal zhitarev anton (eng)Fotostock on drupal zhitarev anton (eng)
Fotostock on drupal zhitarev anton (eng)
 
3 reasons to contribute to drupal florian loretan (eng)
3 reasons to contribute to drupal florian loretan (eng)3 reasons to contribute to drupal florian loretan (eng)
3 reasons to contribute to drupal florian loretan (eng)
 
Drupal and mobile devices komelin konstanin (eng)
Drupal and mobile devices komelin konstanin (eng)Drupal and mobile devices komelin konstanin (eng)
Drupal and mobile devices komelin konstanin (eng)
 
Multilingual solutions florian loretan
Multilingual solutions florian loretanMultilingual solutions florian loretan
Multilingual solutions florian loretan
 
идеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихинидеология Drupal 8 уже в drupal 7 вячеслав касихин
идеология Drupal 8 уже в drupal 7 вячеслав касихин
 
Caching on highload drupal site roman arkharov (eng)
Caching on highload drupal site  roman arkharov (eng)Caching on highload drupal site  roman arkharov (eng)
Caching on highload drupal site roman arkharov (eng)
 
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)кеширование на высоконагруженном Drupal сайте архаров роман (rus)
кеширование на высоконагруженном Drupal сайте архаров роман (rus)
 
опыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исайопыт использования схемы Drupal+varnish+nginx руслан исай
опыт использования схемы Drupal+varnish+nginx руслан исай
 
Business friendly drupal павел прищепа
Business friendly drupal павел прищепаBusiness friendly drupal павел прищепа
Business friendly drupal павел прищепа
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Drupal and the keys to successful communities martin mayer
Drupal and the keys to successful communities martin mayerDrupal and the keys to successful communities martin mayer
Drupal and the keys to successful communities martin mayer
 
практическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий викторпрактическое использование модуля Panels богуцкий виктор
практическое использование модуля Panels богуцкий виктор
 
как зарабатывать друпал разработчику клют иван
как зарабатывать друпал разработчику клют иванкак зарабатывать друпал разработчику клют иван
как зарабатывать друпал разработчику клют иван
 
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константин
 
Kolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosovKolosov drupalconf2011 2_kolosov
Kolosov drupalconf2011 2_kolosov
 
Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1Kozhemyakin dcm2011 1
Kozhemyakin dcm2011 1
 
Kostin drupal conf-2011-winter
Kostin drupal conf-2011-winterKostin drupal conf-2011-winter
Kostin drupal conf-2011-winter
 

Hosting for forbes.ru_

  • 1. Хостинг для Drupal на примере www.forbes.ru Тарас Савчук taras (ухо)1adm.ru http://www.1adm.ru
  • 2. Генеральный спонсор и организатор конференции DrupalConf 2011 При поддержке:
  • 3. Спонсоры Информационные спонсоры Сайт конференции
  • 4. Постановка задачи Задача (2009-й год) - Drupal 6 - прогноз нагрузки 10M хитов в месяц -два сервера под проект (DL360G6) -производительность, масштабируемость, отказоустойчивость Наследие - 4 сервера (FreeBSD 7/amd64) - web-проекты: - http://www.runewsweek.ru -http://www.ok-magazine.ru -http://www.computerbild.ru -http://www.axelspringer.ru
  • 5. Текущая ситуация Средние параметры нагрузки (3 месяца) Трафик: 3-4 Тб/месяц, 1.5 Мб/c отдача Front-end: 130 запросов в секунду, 1К активных подключений MySQL: 1.6 Kqps Последний пик посещаемости (15-е апреля) Трафик: отдали 270Гб+, 9Мб/с – упираемся в канал Front-end: 50M+ запросов (включая статику), до 1700 запросов в секунду, до 10К активных подключений Back-ends: 2.2M+и 1.5M+ запросов MySQL: до 20Кqps, 2Kqpsв среднем.
  • 6. Текущая ситуация Физические параметры www.forbes.ru Объем кода + медиафайлов: 16 Гб Количество файлов (код + медиафайлы): ~ 110К Размер базы: 3 Гб Кол-во записей в базе: 20 М
  • 7. Принципы построения 1. Хостинг под «стандартные» web-проекты нет гигантских объемов медиафайлов и огромных баз 2. Общая площадка, максимальная утилизация разместить старые проекты, Форбс, будущие проекты 3. Нужно изолировать проекты друг от друга безопасность, разные разработчики/подрядчики, совместимость ПО 4. Shared-nothing, не надеемся на железо не должно быть единой точки отказа 5. Не менять платформу (FreeBSD) без весомых причин 6. KISS, не гнаться за девятками слишком сильно минимум непроверенных технологий
  • 8. Разделяй и властвуй 1. Front-ends (2 минимум) • балансировка нагрузки между back-ends, failover для back-ends • кэширование, отдача статики • межсетевой экран • расширяемость, отказоустойчивость 2. Back-ends (2 минимум) • код (PHP/Drupal, но может быть что угодно) • расширяемость, отказоустойчивость, режим активный-активный • изоляция web-проектовдруг от друга 3. Сервера БД (2 минимум) • расширяемость, отказоустойчивость • резервное копирование 4. Сеть • отказоустойчивость
  • 9. Front-ends 1. Общий IP-адрес (или адреса) • на DNS полагаться не можем • CARP (Common Address Redundancy Protocol)во FreeBSD“из коробки” • pf - удобно и функционально • идентичные nginx на обоих front-ends 2. Кэширование/балансировка/отдача статики (nginx) • ngx_http_proxy_module • proxy_store – борьба с новыми и меняющимися файлами • ngx_http_upstream (ip_hash, backup, down) – балансировка, failover • ngx_http_limit_zone_module – ограничение числа подключений • ngx_http_limit_req_module – ограничение числа запросов • удобные логи (профиль производительности сайта) 3. Альтернативы: Varnish, HAProxy • для Varnish нужен Pressflow/патч для Drupal 6/Drupal 7 • Varnish/HAProxy – только proxy/балансировка (пусть и хорошая) • Varnish – производительность сравнима cBoost • мало опыта
  • 10. CARP ДЦ 213.145.46.183 carp1 carp2 10.10.10.1 LAN #sysctlnet.inet.carp.preempt=1
  • 11. CARP ДЦ 213.145.46.183 213.145.46.183 carp1 carp2 10.10.10.1 10.10.10.1 LAN #sysctlnet.inet.carp.preempt=1
  • 12. Back-ends: изоляция проектов 1. Почему FreeBSD jails? • лѐгкие • «из коробки» • ezjail – просто и удобно 2. Альтернативы: Xen, OpenVZ, etc. • Xen – тяжѐлый • OpenVZ, Linux-VServer – патченное ядро, лишний функционал 3. Что такое ezjail? • никаких зависимостей, только shell • быстрое создание • резервное копирование, восстановление • шаблоны • ограничение ресурсов (cpuset)
  • 14. Back-ends: общий DocRoot 1. Почему csync^2? • shared-nothing, узлы полностью независимы • прост и эффективен • подходит для репликации между ДЦ • триггеры (одно решение для данных и конфигураций) • работаем с локальной ФС, которую мы «умеем готовить» 2. Альтернативы: DRBD, GFS(2), OCFS(2), GlusterFS, etc… • DRBD – только primary-secondary • DRBD + GFS/OCFS2 (primary-primary) – сложно • нет боевого опыта, сложность, пугают потенциальные проблемы производительности, совместимость
  • 15. Схема работы csync^2 carp1 carp2 web1 web2 fs-1-14 (jail) fs-2-14 (jail) - одностороння синхронизация - двусторонняя синхронизация
  • 16. Что такое csync^2? • Асинхронная синхронизация :) • Обнаружение и разрешение конфликтов • Репликация удалений • Сложные конфигурации: исключения, группы хостов, slave-режим • librsync • локальная БД (sqlite) • «проталкивает» изменения • SSL + pre-shared-keys • резервное копирование • триггеры
  • 17. Производительность csync^2 • 10 минут на полную синхронизацию 40K+ файлов общим размером 500Мб • 13 секунд на проверку, что все синхронно • 22 секунды на синхронизацию новых 1400 файлов объемом 13Мб • 8 секунд на проверку, что все синхронно
  • 18. Back-ends: web-сервер • Apache – совместимость • ПО, поставляемое в виде модулей Apache • модули Drupal, «заточенные» на Apache (Boost) • Apache + Boost с одной машины загружают гигабит • Можем использовать любой web-сервер и набор ПО
  • 19. MySQL • Postgresql – богат, но много «но», поэтому MySQL • Отказоустойчивость для MySQL • родная репликация (master-slave) • MySQL + DRBD • MySQL Cluster • master-master с родной репликацией (circular replication) • MMM (Multi-Master Replication Manager for MySQL) • Galera – синхронная репликация (на тот момент beta) • Масштабируемость • родная репликация (master-slave) • часть запросов на slave (MySQL Proxy, Pressflow)
  • 20. MySQL db1 db2 db1-drupal db2-drupal db-drupal-rw (IP)) db-bitrix-rw (IP)) db1-bitrix db2-bitrix - Подключения к БД - Направление репликации - MySQL in jail (master) - MySQL in jail (slave)
  • 21. Сеть • LACP (Link Aggregation Control Protocol) • просто, но не реализовано • не нужны коммутаторы при схеме из 2-х серверов
  • 22. Резюме по архитектуре • 2 front-ends (активный-пассивный), 2 back-ends (активный-активный), 2 MySQL (перекрестная репликация master-slave) • FreeBSD 7 • pf –межсетевой экран, подсчет трафика • CARP – общий IP, failover • Nginx – балансировка, кэширование • Jails – легковесная виртуализация (все в jail-ах) • csync^2 – синхронизация Document Root, конфигов • MySQL – стандартная master-slave репликация • LACP – отказоустойчивость сети (не реализовано)
  • 23. Текущие задачи • Резервное копирование (mysqldump, снапшоты) • Мониторинг (Zabbix), внешний (http) и внутренний • Разработка (git, redmine, jails, нет migraine) • Оптимизация производительности • MySQL slow log, mysqldumpslow/mk-query-digest • смотрим на back-ends из nginx • Xdebug • Instrumentation.php от Percona (TODO) • Обновление ПО/модернизация железа
  • 24. Профиль производительности • Логи nginx в .csv(в т.ч. $upstream_response_time) импортируем в MySQL и получаем полезные агрегированные данные • самые медленные страницы (в среднем) • самые медленные страницы (суммарно) • отчет по кодам ответа back-ends • сравнение производительности back-ends • профиль производительности (универсально, имеет смысл автоматизировать и пользоваться ежедневно) • помогает понять, где оптимизировать
  • 25. Профиль производительности 120 99 99.9 100 93.99 81.66 80 % запросов 60 40 20 0 0 0.5 1 1.5 2 2.5 3 3.5 Время обработки запроса, секунды
  • 26. Instrumentation от Percona • Инструментарий для экспорта полезных счетчиков в переменные Apache • Комментарии к запросам MySQL, после чего mk-query- digest • Переменные ->лог Apache -> SQL ->отчеты • Xdebugтяжелый, нет возможности агрегировать данные, не подходит для поиска редких проблем • Можно ловить проблемы mysql, memcache, чего угодно • Требуется интеграция в код (в хороший код интегрировать просто)
  • 27. Планы и проблемы • Boost и csync^2– решить проблему или использовать альтернативное решение • Instrumentation от Perconaдля поиска редких проблем • Pressflow, часть запросов на slave • Второй ДЦ • Автоматизировать failover для MySQL (MMM или самостоятельно) • Избавиться или свести к минимуму кэширование Drupal в MySQL • LACP
  • 28. Спасибо за внимание! Тарас Савчук taras (ухо) 1adm.ru http://www.1adm.ru
  • 29. Генеральный спонсор и организатор конференции DrupalConf 2011 При поддержке:
  • 30. Спонсоры Информационные спонсоры Сайт конференции