ݺߣ

ݺߣShare a Scribd company logo
Поддержка кластерных
   решений, master-slave
репликация и вертикальный
        шардинг
Сколько стоит 1 час?

Пример:

Крупный интернет-магазин с годовым оборотом 1.5 млрд. руб.

210 рабочих дней в году по 10 рабочих часов.

Час простоя крупного интернет-проекта может обойтись владельцам в 0,3 -
1 миллион рублей упущенной выручки.
Сколько стоит 1 час?



А также…

Будет разрываться телефон звонками от Заказчика, Клиентов.

Сисадмин будет пить валидол и вспоминать где расположена клавиша
«Enter» 
Сколько стоит 1 час???



А также…

Будет разрываться телефон звонками от Заказчика, Клиентов.

Сисадмин будет пить валидол и вспоминать где расположена клавиша
«Enter» 
1С-Битрикс: Веб-кластер

         Основные задачи, которые
         необходимо решить:

         1. Обеспечение высокой доступности
            сервиса (так называемые HA - High
            Availability или Failover кластеры)
         2. Масштабирование веб-проекта в
            условиях возрастающей нагрузки
            (HP - High Performance кластеры)
         3. Удобное резервное копирование
1С-Битрикс: Веб-кластер

«Веб-кластер» обеспечивает непрерывность бизнеса,
отказоустойчивость, масштабирование, распределение нагрузки.

Любой новый или работающий проект на 1С-Битрикс: Управление сайтом 10.0 может быть
представлен как веб-кластер взаимозаменяемых серверов.

1.   При увеличении посещаемости можно быстро добавить в кластер новые сервера.
2.   В случае выхода из строя одного из серверов кластера система продолжает
     беспрерывно обслуживать Клиентов.
3.   Балансирование нагрузки, трафика, данных между несколькими серверами.
4.   Система позволяет снимать резервные копии со специально выделенных узлов
     кластера, не влияя на работу сайта.
Конфигурации веб-проектов
           на 1С-Битрикс (начало пути)



      Сервер                 Сервер                 Сервер

                       Proxy server (Nginx)   Proxy server (Nginx)
     Web server
(Apache+1С-Битрикс)

                          Appl. server        1С-Битрикс - PHP
                      (Apache+1С-Битрикс)         (FastCGI)
 RDBMS(MySQL)


                       RDBMS(MySQL)
                                              RDBMS(MySQL)
Конфигурации веб-проектов
на 1С-Битрикс («первое» масштабирование)

                             Сервер

                       Proxy server (Nginx)


                         Стат. файлы
       Сервер                                    Сервер



     Appl. server
 (Apache+1С-Битрикс)                          RDBMS(MySQL)
Дальше – сложнее …
Дальнейшая кластеризация веб-проекта
                                                   Серверы SLAVE
                          Сервер-балансировщик          SLAVE
                                                          SLAVE
                            Proxy server (Nginx)
                                                   RDBMS(MySQL)

Общие     Общие               Стат. файлы
файлы     сессии



 Серверы приложений                                Серверы MASTER
        Сервер                                          MASTER
          Сервер

     Appl. server     Диспетчер SQL
    (Apache+PHP)         запросов                  RDBMS(MySQL)
Дальнейшая кластеризация веб-проекта
                                             Аккаунты
                                               a-m
                 База данных                            База данных
                  MySQL 1                                MySQL 1


 База данных                   База данных
   MySQL                         MySQL




                 База данных                            База данных
                  MySQL 2                                MySQL 2




                                         Аккаунты
                                            n-z


Вертикальный шардинг           Горизонтальный шардинг
1С-Битрикс: Веб-кластер


«1С-Битрикс: Веб-кластер» - это комбинация технологий:

•   Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL)
•   Репликация MySQL (Oracle и MS SQL в дальнейшем) и балансирование нагрузки
    между серверами
•   Распределенный кеш данных (memcached)
•   Непрерывность сессий между веб-серверами (хранение сессий в базе данных)
•   Кластеризация веб-сервера:
     – Синхронизация файлов
     – Балансирование нагрузки между серверами
Вертикальный шардинг
Разделение одной базы данных веб-
приложения на две и более базы данных
за счет выделения отдельных
модулей, без изменения логики работы
веб-приложения:
•   Веб-аналитика
•   Поиск


1. Эффективное распределение
   нагрузки.
2. Масштабирование.
3. Разделение больших объемов
   данных.
Репликация и балансировка нагрузки MySQL
• Гибкая балансировка
  нагрузки SQL
• Простота
  администрирования
• Дешевое и быстрое
  неограниченное
  масштабирование
• Он-лайн бэкап
• Не требуется доработка
  логики веб-приложения
Масштабирование при росте нагрузки MySQL

                            Веб-сервер
                 «1С-Битрикс: Веб-кластер»



                    SQL-балансировщик                  MySQL replication
                       1С-Битрикс




База данных   База данных                База данных       База данных
  MySQL         MySQL                      MySQL             MySQL
 MASTER        SLAVE 1                    SLAVE …           SLAVE N
Распределенный кеш данных (memcached)
• Высокая эффективность -
  за счет централизованного
  использования кэша веб-
  приложением
                              memcached     memcached     memcached
• Надежность - за счет            1             2             3
  устойчивости подсистемы
  кешировния к выходу из
                                     30%           40%           30%
  строя отдельных
  компонентов                        Веб-кластер «1С-Битрикс»
• Неограниченная               Веб-сервер   Веб-сервер   Веб-сервер
  масштабируемость - за
  счет добавления новых
  memcached-серверов.
Распределенный кеш данных (memcached)
Непрерывность сессий между веб-серверами
Пользовательская
сессия должна быть
"прозрачной" для
всех серверов веб-
кластера.




1. После авторизации на одном из серверов пользователь должен считаться
   авторизованных и для всех других серверов.
2. И наоборот - окончание сессии на любом сервере должно означать ее
   окончание на всех серверах сразу.
Задача: масштабирование при росте нагрузки
                                    Высокая
                                 посещаемость
                                                                       Нагрузка на
                                                                       CPU <50%
                                Балансировщик
                                   нагрузки


         Веб-сервер                                       Веб-сервер

           Нода 1                                           Нода 2
  «1С-Битрикс: Веб-кластер»   Авто-синхронизация
                                                   «1С-Битрикс: Веб-кластер»


                                                        1) Нагрузка распределяется
                                  База данных           между нодами веб-кластера
                                    MySQL
                                                        2) Сервера приложений не
                                                        перегружены и работают в
                                                        устойчивом штатном режиме
Задача: масштабирование при росте нагрузки
                   Очень высокая посещаемость




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



     Нода 1         Нода 2

                                         …
                                                   Нода N
  «1С-Битрикс:   «1С-Битрикс:                   «1С-Битрикс:
  Веб-кластер»   Веб-кластер»                   Веб-кластер»




                           База данных
                             MySQL
Задача синхронизации файлов
Веб-сервер 1              Веб-сервер 2




                 ?
               /var/www
Синхронизация файлов
Два типа:

1. Синхронный:
• Общая «дисковая полка»
• Сетевые средства – NFS
• OCFS2, GFS2
• DRBD для надежности

2. Асинхронный:
• rsync
• csync2
Почему мы выбрали csync2?

• Быстрый доступ к файлам приложения за счет использования
  локальных хранилищ.
• Высокая скорость работы.
• Низкое потребление ресурсов (CPU, дисковые операции). Два этих
  фактора позволяют запускать процесс синхронизации максимально
  часто, поэтому данные на серверах становятся идентичными
  практически в "реальном времени".
• Простота настройки для обмена данными между любым количеством
  серверов.
• Возможность синхронизации удаления файлов.
• Защищенный обмен данными между хостами (SSL).
Пример синхронизации файлов кластера

            Нода 1                                              Нода 2
   «1С-Битрикс: Веб-кластер»                           «1С-Битрикс: Веб-кластер»
            Csync2                                              Csync2

         /var/www                                            /var/www




                                    Нода 3
                           «1С-Битрикс: Веб-кластер»
                                    Csync2

                                 /var/www
Способы балансирования нагрузки

• DNS сервер с несколькими записями типа A и разными IP адресами
  и коротким TTL
• NGINX на отдельном оборудовании
• Аппаратный маршрутизатор с балансированием нагрузки
• Балансировка силами дата центра (облака)
Разворачиваем веб-кластер в «облаке»



                                      Балансировщик «облака»
                                                                 dили nginx и
                                                                     др.




       Вирт. сервер 1                                                 Вирт. сервер 2
Proxy server (Nginx)                                           Proxy server (Nginx)
                        (memcached)




                                                                                       (memcached)
    Appl. server                                                   Appl. server
                           Кэш




                                                                                          Кэш
(Apache+1С-Битрикс)                                            (Apache+1С-Битрикс)


 RDBMS(MySQL)                                                   RDBMS(MySQL)
    Master                                                         Slave
Миграция веб-кластера между дата-центрами



 Дата-центр 1                    Дата-центр 2

 1С-Битрикс:
 Веб-кластер



RDBMS(MySQL)                    RDBMS(MySQL)
   Master                           Slave


                                           «Горячий»
                                             бэкап


                S3 снепшот
                    снепшот
                 S3Cнепшот
Миграция веб-кластера между дата-центрами



                                Дата-центр 2

                                Веб-кластер




                               RDBMS(MySQL)
                                  Master




               S3 снепшот
                   снепшот
                S3Cнепшот
Устойчивость системы при выключении узлов веб-кластера

       Нагрузочный тест – отключение одного из узлов кластера
При отключении узлов кластера
система не прерывает обслуживание
клиентов.

Увеличивается очередь (растет время
отдачи страниц клиентам), однако в
целом система сбалансирована по
нагрузке.

Обратное добавление узла веб-
кластера пропорционально увеличивает
производительность системы.
Мы работаем над…
«1С-Битрикс: Веб-                                         «1С-Битрикс: Веб-
    кластер»,              круговой, асинхронной,             кластер»,
  ДЦ в Москве                   master-master            ДЦ в Новосибирске
                    репликацией для обеспечения работы
   Веб-нода          географически распределенных веб-       Веб-нода
                            кластеров 1С-Битрикс

     Кэш                                                       Кэш

                          «1С-Битрикс: Веб-кластер»,
                               ДЦ в Нью-Йорке
      БД                                                        БД



                                 Веб-нода



                                    Кэш



                                     БД
Мы работаем над…
 «1С-Битрикс: Веб-                                         «1С-Битрикс: Веб-
     кластер»,              круговой, асинхронной,             кластер»,
   ДЦ в Москве                   master-master            ДЦ в Новосибирске
                     репликацией для обеспечения работы
Веб-нода             географически распределенных веб-        Веб-нода
  Веб-нода                                                     Веб-нода
     Веб-нода               кластеров 1С-Битрикс                  Веб-нода

  Кэш                                                           Кэш
    Кэш                                                          Кэш
       Кэш                                                          Кэш
                              «1С-Битрикс: Веб-
  БД                              кластер»,                      БД
       БД                     ДЦ в Нью-Йорке                      БД
            БД                                                         БД


                                  Веб-нода
                                    Веб-нода
                                       Веб-нода


                                    Кэш
                                      Кэш
                                         Кэш


                                     БД
                                       БД
                                            БД
Руководство по настройке и администрированию
           «1С-Битрикс: Веб-кластер»


http://www.1c-bitrix.ru/download/manuals/ru/web-cluster_guide.pdf
Спасибо за внимание! Вопросы?




       Александр Сербул

       serbul@1c-bitrix.ru
       Twitter: #AlexSerbul

More Related Content

1С-Битрикс - Веб-кластер

  • 1. Поддержка кластерных решений, master-slave репликация и вертикальный шардинг
  • 2. Сколько стоит 1 час? Пример: Крупный интернет-магазин с годовым оборотом 1.5 млрд. руб. 210 рабочих дней в году по 10 рабочих часов. Час простоя крупного интернет-проекта может обойтись владельцам в 0,3 - 1 миллион рублей упущенной выручки.
  • 3. Сколько стоит 1 час? А также… Будет разрываться телефон звонками от Заказчика, Клиентов. Сисадмин будет пить валидол и вспоминать где расположена клавиша «Enter» 
  • 4. Сколько стоит 1 час??? А также… Будет разрываться телефон звонками от Заказчика, Клиентов. Сисадмин будет пить валидол и вспоминать где расположена клавиша «Enter» 
  • 5. 1С-Битрикс: Веб-кластер Основные задачи, которые необходимо решить: 1. Обеспечение высокой доступности сервиса (так называемые HA - High Availability или Failover кластеры) 2. Масштабирование веб-проекта в условиях возрастающей нагрузки (HP - High Performance кластеры) 3. Удобное резервное копирование
  • 6. 1С-Битрикс: Веб-кластер «Веб-кластер» обеспечивает непрерывность бизнеса, отказоустойчивость, масштабирование, распределение нагрузки. Любой новый или работающий проект на 1С-Битрикс: Управление сайтом 10.0 может быть представлен как веб-кластер взаимозаменяемых серверов. 1. При увеличении посещаемости можно быстро добавить в кластер новые сервера. 2. В случае выхода из строя одного из серверов кластера система продолжает беспрерывно обслуживать Клиентов. 3. Балансирование нагрузки, трафика, данных между несколькими серверами. 4. Система позволяет снимать резервные копии со специально выделенных узлов кластера, не влияя на работу сайта.
  • 7. Конфигурации веб-проектов на 1С-Битрикс (начало пути) Сервер Сервер Сервер Proxy server (Nginx) Proxy server (Nginx) Web server (Apache+1С-Битрикс) Appl. server 1С-Битрикс - PHP (Apache+1С-Битрикс) (FastCGI) RDBMS(MySQL) RDBMS(MySQL) RDBMS(MySQL)
  • 8. Конфигурации веб-проектов на 1С-Битрикс («первое» масштабирование) Сервер Proxy server (Nginx) Стат. файлы Сервер Сервер Appl. server (Apache+1С-Битрикс) RDBMS(MySQL)
  • 10. Дальнейшая кластеризация веб-проекта Серверы SLAVE Сервер-балансировщик SLAVE SLAVE Proxy server (Nginx) RDBMS(MySQL) Общие Общие Стат. файлы файлы сессии Серверы приложений Серверы MASTER Сервер MASTER Сервер Appl. server Диспетчер SQL (Apache+PHP) запросов RDBMS(MySQL)
  • 11. Дальнейшая кластеризация веб-проекта Аккаунты a-m База данных База данных MySQL 1 MySQL 1 База данных База данных MySQL MySQL База данных База данных MySQL 2 MySQL 2 Аккаунты n-z Вертикальный шардинг Горизонтальный шардинг
  • 12. 1С-Битрикс: Веб-кластер «1С-Битрикс: Веб-кластер» - это комбинация технологий: • Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL) • Репликация MySQL (Oracle и MS SQL в дальнейшем) и балансирование нагрузки между серверами • Распределенный кеш данных (memcached) • Непрерывность сессий между веб-серверами (хранение сессий в базе данных) • Кластеризация веб-сервера: – Синхронизация файлов – Балансирование нагрузки между серверами
  • 13. Вертикальный шардинг Разделение одной базы данных веб- приложения на две и более базы данных за счет выделения отдельных модулей, без изменения логики работы веб-приложения: • Веб-аналитика • Поиск 1. Эффективное распределение нагрузки. 2. Масштабирование. 3. Разделение больших объемов данных.
  • 14. Репликация и балансировка нагрузки MySQL • Гибкая балансировка нагрузки SQL • Простота администрирования • Дешевое и быстрое неограниченное масштабирование • Он-лайн бэкап • Не требуется доработка логики веб-приложения
  • 15. Масштабирование при росте нагрузки MySQL Веб-сервер «1С-Битрикс: Веб-кластер» SQL-балансировщик MySQL replication 1С-Битрикс База данных База данных База данных База данных MySQL MySQL MySQL MySQL MASTER SLAVE 1 SLAVE … SLAVE N
  • 16. Распределенный кеш данных (memcached) • Высокая эффективность - за счет централизованного использования кэша веб- приложением memcached memcached memcached • Надежность - за счет 1 2 3 устойчивости подсистемы кешировния к выходу из 30% 40% 30% строя отдельных компонентов Веб-кластер «1С-Битрикс» • Неограниченная Веб-сервер Веб-сервер Веб-сервер масштабируемость - за счет добавления новых memcached-серверов.
  • 18. Непрерывность сессий между веб-серверами Пользовательская сессия должна быть "прозрачной" для всех серверов веб- кластера. 1. После авторизации на одном из серверов пользователь должен считаться авторизованных и для всех других серверов. 2. И наоборот - окончание сессии на любом сервере должно означать ее окончание на всех серверах сразу.
  • 19. Задача: масштабирование при росте нагрузки Высокая посещаемость Нагрузка на CPU <50% Балансировщик нагрузки Веб-сервер Веб-сервер Нода 1 Нода 2 «1С-Битрикс: Веб-кластер» Авто-синхронизация «1С-Битрикс: Веб-кластер» 1) Нагрузка распределяется База данных между нодами веб-кластера MySQL 2) Сервера приложений не перегружены и работают в устойчивом штатном режиме
  • 20. Задача: масштабирование при росте нагрузки Очень высокая посещаемость Балансировщик нагрузки Нода 1 Нода 2 … Нода N «1С-Битрикс: «1С-Битрикс: «1С-Битрикс: Веб-кластер» Веб-кластер» Веб-кластер» База данных MySQL
  • 22. Синхронизация файлов Два типа: 1. Синхронный: • Общая «дисковая полка» • Сетевые средства – NFS • OCFS2, GFS2 • DRBD для надежности 2. Асинхронный: • rsync • csync2
  • 23. Почему мы выбрали csync2? • Быстрый доступ к файлам приложения за счет использования локальных хранилищ. • Высокая скорость работы. • Низкое потребление ресурсов (CPU, дисковые операции). Два этих фактора позволяют запускать процесс синхронизации максимально часто, поэтому данные на серверах становятся идентичными практически в "реальном времени". • Простота настройки для обмена данными между любым количеством серверов. • Возможность синхронизации удаления файлов. • Защищенный обмен данными между хостами (SSL).
  • 24. Пример синхронизации файлов кластера Нода 1 Нода 2 «1С-Битрикс: Веб-кластер» «1С-Битрикс: Веб-кластер» Csync2 Csync2 /var/www /var/www Нода 3 «1С-Битрикс: Веб-кластер» Csync2 /var/www
  • 25. Способы балансирования нагрузки • DNS сервер с несколькими записями типа A и разными IP адресами и коротким TTL • NGINX на отдельном оборудовании • Аппаратный маршрутизатор с балансированием нагрузки • Балансировка силами дата центра (облака)
  • 26. Разворачиваем веб-кластер в «облаке» Балансировщик «облака» dили nginx и др. Вирт. сервер 1 Вирт. сервер 2 Proxy server (Nginx) Proxy server (Nginx) (memcached) (memcached) Appl. server Appl. server Кэш Кэш (Apache+1С-Битрикс) (Apache+1С-Битрикс) RDBMS(MySQL) RDBMS(MySQL) Master Slave
  • 27. Миграция веб-кластера между дата-центрами Дата-центр 1 Дата-центр 2 1С-Битрикс: Веб-кластер RDBMS(MySQL) RDBMS(MySQL) Master Slave «Горячий» бэкап S3 снепшот снепшот S3Cнепшот
  • 28. Миграция веб-кластера между дата-центрами Дата-центр 2 Веб-кластер RDBMS(MySQL) Master S3 снепшот снепшот S3Cнепшот
  • 29. Устойчивость системы при выключении узлов веб-кластера Нагрузочный тест – отключение одного из узлов кластера При отключении узлов кластера система не прерывает обслуживание клиентов. Увеличивается очередь (растет время отдачи страниц клиентам), однако в целом система сбалансирована по нагрузке. Обратное добавление узла веб- кластера пропорционально увеличивает производительность системы.
  • 30. Мы работаем над… «1С-Битрикс: Веб- «1С-Битрикс: Веб- кластер», круговой, асинхронной, кластер», ДЦ в Москве master-master ДЦ в Новосибирске репликацией для обеспечения работы Веб-нода географически распределенных веб- Веб-нода кластеров 1С-Битрикс Кэш Кэш «1С-Битрикс: Веб-кластер», ДЦ в Нью-Йорке БД БД Веб-нода Кэш БД
  • 31. Мы работаем над… «1С-Битрикс: Веб- «1С-Битрикс: Веб- кластер», круговой, асинхронной, кластер», ДЦ в Москве master-master ДЦ в Новосибирске репликацией для обеспечения работы Веб-нода географически распределенных веб- Веб-нода Веб-нода Веб-нода Веб-нода кластеров 1С-Битрикс Веб-нода Кэш Кэш Кэш Кэш Кэш Кэш «1С-Битрикс: Веб- БД кластер», БД БД ДЦ в Нью-Йорке БД БД БД Веб-нода Веб-нода Веб-нода Кэш Кэш Кэш БД БД БД
  • 32. Руководство по настройке и администрированию «1С-Битрикс: Веб-кластер» http://www.1c-bitrix.ru/download/manuals/ru/web-cluster_guide.pdf
  • 33. Спасибо за внимание! Вопросы? Александр Сербул serbul@1c-bitrix.ru Twitter: #AlexSerbul