42
Сергей Рыжиков Директор «1С-Битрикс» Производительность проекта

(2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Embed Size (px)

DESCRIPTION

Сергей Рыжиков. Директор "1С-Битрикс". Нагруженный Форк. Производительность проекта. Архитектура проекта «Битрикс24»: как сделать так, чтобы все летало и не падало, master-master, мастер мастер

Citation preview

Page 1: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Сергей РыжиковДиректор

«1С-Битрикс»

Производительность проекта

Page 2: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

«1С-Битрикс: Виртуальная машина» – это «1С-Битрикс: Веб-окружение Linux» с использованием разных способов виртуализации.

Виртуальная машина эмулирует работу реального компьютера и включает в себя:

сконфигурированную операционную систему;

веб-сервер;

базу данных;

firewall;

почтовый сервер;

мастер создания кластера, мастер добавления slave-сервера, мастер переключения slave-сервера в режим master;

а также большое число настроек, от которых зависит надежность, производительность и безопасность веб-проекта.

1С-Битрикс: Виртуальная машина

Page 3: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Сколько стоит 1 час?

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

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

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

Page 4: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Основные задачи, которые решает веб-кластер:

Обеспечение высокой доступности сервиса (так называемые HA - High Availability или Failover кластеры)

Масштабирование веб-проекта в условиях возрастающей нагрузки (HP - High Performance кластеры)

Балансирование нагрузки, трафика, данных между несколькими серверами.

Создание целостной резервной копии данных для MySQL.

Page 5: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Географический веб-кластер повышает отказоустойчивость проекта и обеспечивает независимость от дата-центра.

В различных дата-центрах объединяются несколько групп веб-кластеров, находящихся в разных городах или странах.

В случае отказа одного дата-центра, в работу мгновенно включается другой, без необходимости восстановления «бэкапа».

Page 6: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

«Веб-кластер», ДЦ в России

БД

Веб-нода

«Веб-кластер», ДЦ в Германии

«Веб-кластер», ДЦ в США

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров.

Потеря связи между ДЦ может составлять часы.

Географический веб-кластер

Page 7: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Облачное хранилище файлов (Amazon S3,

Azure, Google Storage, OpenStack Swift) + CDN

Посетители

Веб-приложение

Веб-сервер

ДЦ в России

Веб-сервераВеб-серверы

slave

БД (master)

Веб-приложение

Веб-сервер

ДЦ в США

Веб-сервераВеб-серверы

slave

БД (master)

Географический веб-кластер

Page 8: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

ДЦ в США

MySQLmaster

Web 1

HTTP/HTTPS*.ru

ДЦ в России

HTTP/HTTPS*.com

Web 2

Web N…

CloudWatch + AutoScaling

MySQLslave

cache cache cache

CloudWatch

MySQLmaster

Web 1

Web 2

Web N…

CloudWatch + AutoScaling

MySQLslave

cache cache cache

CloudWatch

master-master репликация

Схема «облачного сервиса»

Облачное хранилище

HTTP/HTTPS*.com*.ru

management, monitoring

Page 9: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Архитектура проекта «Битрикс24»:как сделать так, чтобы все летало и не падало

Page 10: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Цель на 2012 год

Задача для компании в 2012 году – запустить в коммерческую эксплуатацию Bitrix24

Аренда Корпоративного портала как инструмента социального интранетаРазвитие социального Project- и Task-менеджментаРазвитие Social CRM - готового, простого в использовании решения Собрать и накопить опыт по эксплуатации облачных веб-сервисов, поделиться им с партнерами

Page 11: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Новый SaaS сервис – как коммерческие, так и «бесплатные» пользователиМинимизация расходов на эксплуатацию и снижение финансовых рисков на старте проектаМасштабирование при росте нагрузки и обратное масштабированиеНадежность – обеспечение SLAРабота с разными рынками: США, Европа, РоссияБыстрая отдача статического контента

Запускаем новый SaaS продукт Bitrix24

Есть несколько задач на старте и в процессе работы

Page 12: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Быстро

Без сбоев

Для пользователя

Page 13: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Независимые факторы надежности

Человечество уже сделало определенный путь - для обеспечения независимых факторов надежности. Для Bitrix24 нужен аналогичный подход – продолжать работу без потери данных в случае выхода из строя одного ДЦ и быть способными восстанавливать базы данных за несколько минут.

Page 14: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

«Веб-кластер», ДЦ в России

БД

Веб-нода

«Веб-кластер», ДЦ в Германии

«Веб-кластер», ДЦ в США

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров.

Потеря связи между ДЦ может составлять часы.

2-ой этап – географический веб-кластер

Page 15: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Облачное хранилищефайлов

Облачное хранилище файлов (Amazon S3,

Azure, Google Storage, OpenStack Swift) + CDN

Посетители

Веб-приложение

Веб-сервер

ДЦ в России

Веб-сервераВеб-серверы

slave

БД (master)

Веб-приложение

Веб-сервер

ДЦ в США

Веб-сервераВеб-серверы

slave

БД (master)

Page 16: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Отказоустойчивость – умение размещаться сразу в нескольких разных территориально распределенных датацентрах (в разных странах)Большой объем базы данных – шардинг – возможность разделить базу данных по территории и группам клиентовMultiTenancy архитектураПолное разделение логики (кода продукта) и данныхПользовательские данные – это большой объем статических файлов и база данныхУниверсальный API платформы для многолетней разработки

Динамическое масштабирование по нагрузке

Из «бизнес-требований» появились технические

Page 17: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Минусы размещения на собственном оборудовании:

«Когда мы только начинали работу над стартапом (FriendFeed), нам нужно было решить, покупать собственные серверы или же выбрать одного из «облачных» хостинг-провайдеров – таких как Amazon (AWS). Мы выбрали первое – решили приобрести собственные серверы. Оглядываясь назад, я думаю, что это было большой ошибкой»

Брет Тейлортехнический директор Facebook

Выбор платформы для разворачивания инфраструктуры

Необходимы вложения в инфраструктуру на старте проектаСложность масштабированияСложность администрирования (в случае размещения в территориально удаленных датацентрах)Создание всех сопутствующих сервисов с нуля

Page 18: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Используем все возможности масштабирования в Amazon – исходя из экономики проекта.

Page 19: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

MySQLmaster

Web 1

ElasticLoad Balancing

Web 2

Web N…

MySQLmaster

Web 1

Web 2

Web N…

master-master репликация

Архитектура Bitrix24

S3

management, monitoring,

MySQL backup

Датацентр 1

Мониторинг и масштабирование – CloudWatch + AutoScaling

Датацентр 2

Мониторинг и масштабирование – CloudWatch + AutoScaling

Page 20: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

CloudWatch + Auto Scaling

Web 1

Очень высокая посещаемость

Elastic Load Balancing

Web 2 Web N…

Web – автоматическое масштабирование

Используем связку Elastic Load Balancing + CloudWatch + Auto Scaling

Page 21: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Web – автоматическое масштабирование

Используем связку Elastic Load Balancing + CloudWatch + Auto Scaling

Автоматически стартуют новые машины, если средняя нагрузка CPU превышает 60%

Автоматически останавливаются и выводятся из эксплуатации, если средняя нагрузка менее 30%

Ставили верхний порог на 80%, однако начинается общая деградация системы – пользователям работать некомфортно (долго загружаются страницы)

Page 22: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Специфика web-нод

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

На веб-нодах нет пользовательского контента, все ноды должны быть абсолютно идентичны.Read only. Никакие пользовательские данные не пишутся и не сохраняются на веб-нодах, так как в любой момент времени любая машина может быть выключена или стартует новая из «чистого» образа.При этом необходимо обеспечить изоляцию пользователей друг от друга.

Page 23: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Нет Apache. Есть PHP-FPM + nginxУ каждого клиента свой доменБыл разработан модуль для PHP:

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

Специфика web-нод

Page 24: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Статические данные пользователей храним в S3Загрузка осуществляется «прозрачно» для пользователей – они работают с привычными интерфейсамиПравильно формируются url’ы к картинкам, документам и т.п.Для каждого созданного Корпоративного портала создается персональный аккаунт – данные каждого КП полностью изолированы друг от друга

Статический контент пользователей сервиса

Page 25: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

ElasticLoad Balancing

Готов только первый «двигатель самолета»

MySQLmaster

Web 1

ElasticLoad Balancing

Web 2

Web N… S3

management, monitoring,

MySQL backup

Датацентр 1 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

master-master репликация

MySQLmaster

Web 1

Web 2

Web N…

Датацентр 2 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

Page 26: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Особенности настройки MySQL:auto_increment_incrementauto_increment_offset

Базы в разных датацентрах синхронны, при этом независимы друг от друга: потеря связности между датацентрами может составлять часы, данные синхронизируются после восстановления.В любое время можно добавить новые датацентры.Пользователь и все сотрудники этой компании работают в одном датацентре за счет управления балансировщиком.Сессии храним в базе, но не реплицируем между серверами из-за большого траффика и возможных «локов»:

SET sql_log_bin = 0 … или …replicate-wild-ignore-table = %.b_sec_session%

Используем master-master репликацию в MySQL

Page 27: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

MySQLmaster

ElasticLoad Balancing

Web N…

Web 1

Web 2

MySQLmaster

Web 1

Web 2

Web N…

master-master репликация

Сценарий 1: авария на одной или нескольких веб-нодах

S3

management, monitoring,

MySQL backup

Датацентр 1 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

Датацентр 2 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

Page 28: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Load Balancing определяет вышедшие из строя машиныИсходя из заданных параметров группы балансировки, автоматически восстанавливается нужное количество машин

Сценарий 1: авария на одной или нескольких веб-нодах

Page 29: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

MySQLmaster

ElasticLoad Balancing

Web N…

Web 1

Web 2

MySQLmaster

Web 1

Web 2

Web N…

master-master репликация

Сценарий 1: авария на одной или нескольких веб-нодах

S3

management, monitoring,

MySQL backup

Датацентр 1 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

Датацентр 2 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

Page 30: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

MySQLmaster

ElasticLoad Balancing

Web N…

Web 1

Web 2

MySQLmaster

Web 1

Web 2

Web N…

master-master репликация

Сценарий 2: потеря связности между датацентрами

S3

management, monitoring,

MySQL backup

Датацентр 1 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

Датацентр 2 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

ElasticLoad Balancing

ElasticLoad Balancing

Page 31: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Каждый датацентр продолжает обслуживать свой сегмент клиентовДанные синхронизируются после восстановления связности

Сценарий 2: потеря связности между датацентрами

Page 32: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

MySQLmaster

ElasticLoad Balancing

Web N…

Web 1

Web 2

MySQLmaster

Web 1

Web 2

Web N…

master-master репликация

Сценарий 3: плановые работы с базой или авария всего ДЦ

S3

management, monitoring,

MySQL backup

Датацентр 1 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

Датацентр 2 в регионе US East (Virginia)

Мониторинг и масштабирование – CloudWatch + AutoScaling

Page 33: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Весь траффик переключается в один работающий датацентрCloudWatch определяет возросшую нагрузку на машины и добавляет их в соответствие с правилами для AutoScalingПриостанавливается мастер-мастер репликацияПроводятся все необходимые работы с базой, на которую не идет нагрузкаБаза включается в работу, восстанавливается репликацияТраффик распределяется на оба датацентраГасятся лишние машины, если средняя нагрузка стала ниже порогового значения

Сценарий 3: авария или плановые работы с базой

Page 34: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Быстрое восстановление кэша при рестарте базы

Оптимизирован для Multitenancy приложений с тысячами таблиц

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

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

XtraDB и XtraBackup

BLOB, TEXT в таблицах MEMORY (HEAP)

MySQL? Percona Server!

Один из выводов в процессе эксплуатации: используем один из fork’ов MySQL – Percona Server (обратно совместим с MySQL)

Page 35: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Виртуальная машина (EC2)

«Узким» местом может оказаться производительность дисковой системы. Решение – из EBS дисков Amazon можно построить software RAID.

Выбираем RAID-10, так как он и быстрый, и надежный.

Конфигурация машинс базами MySQL

Page 36: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Бэкап базы данных

Еще один вывод: для разных сценариев восстановления данных необходимо использовать разные бэкапы.

Для восстановления целого сервера БД в случае аварии используем образ машин со всеми дисками (AMI) – делаем целостный бэкап RAID’а, используя файловую систему, поддерживающую freeze и механизм snapshot’ов в Амазоне.Логические (mysqldump) и бинарные инкрементальные (Xtrabackup) бэкапы используются для восстановления отдельных баз или таблиц, поврежденных в случае некорректных операций в системе или ошибок пользователей.Второй тип бэкапов делается на выделенном slave, на который не распределяется общая нагрузка. Тем самым ресурсоемкие операции создания бэкапов не влияют на работу пользователей.

Page 37: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Web 1

Web 2

Web N

Сервер обновлений

Новый образ AMI

ElasticLoad

Balancing

Как ставить обновления на нодах, не допустив рассинхронизации данных (веб и база)

Обновления ПО на web-нодах

Page 38: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

ElasticLoad Balancing

MySQLmaster

Web 1

HTTP/HTTPS*.ru

ElasticLoad Balancing

HTTP/HTTPS*.com

Web 2

Web N…

CloudWatch + AutoScaling

CloudWatch

MySQLmaster

Web 1

Web 2

Web N…

CloudWatch + AutoScaling

CloudWatch

master-master репликация

Итоговая архитектура Bitrix24

S3

HTTP/HTTPS*.com*.ru

management, monitoring,

MySQL backup

cache cache

Page 39: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Мониторинг

Мониторим все, но аккуратноМгновенные уведомления (sms)Автоматика

Page 40: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

…и аналитика

ЛогиPinba и т.п.Munin и т.п.

Page 41: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Bitrix24

www.bitrix24.ru

Page 42: (2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрикс24»

Спасибо за внимание! Вопросы?

Сергей Рыжиков

[email protected]

+7 (926) 000-8880

@rsv_bitrix

http://www.bitrix24.ru