clouds nn 2012 Александр Демидов "Битрикс24 архитектура и...
TRANSCRIPT
![Page 1: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/1.jpg)
«Битрикс24»: архитектура и опыт эксплуатации отказоустойчивого, масштабируемого, высоконагруженного веб-сервиса в облаке
Александр Демидовруководитель направления арендных решений
«1С-Битрикс»
![Page 2: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/2.jpg)
Цель на 2012 год
Задача для компании в 2012 году – запустить в коммерческую эксплуатацию Bitrix24
Аренда Корпоративного портала как инструмента социального интранетаРазвитие социального Project- и Task-менеджментаРазвитие Social CRM - готового, простого в использовании решения Собрать и накопить опыт по эксплуатации облачных веб-сервисов, поделиться им с партнерами
![Page 3: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/3.jpg)
Новый SaaS сервис – как коммерческие, так и «бесплатные» пользователиМинимизация расходов на эксплуатацию и снижение финансовых рисков на старте проектаМасштабирование при росте нагрузки и обратное масштабированиеНадежность – обеспечение SLAРабота с разными рынками: США, Европа, Россия
Запускаем новый SaaS продукт Bitrix24
Есть несколько задач на старте и в процессе работы
![Page 4: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/4.jpg)
Быстро
Без сбоев
Для пользователя
![Page 5: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/5.jpg)
Независимые факторы надежности
Человечество уже сделало определенный путь - для обеспечения независимых факторов надежности. Для Bitrix24 нужен аналогичный подход – продолжать работу без потери данных в случае выхода из строя одного ДЦ и быть способными восстанавливать базы данных за несколько минут.
![Page 6: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/6.jpg)
Отказоустойчивость – умение размещаться сразу в нескольких разных территориально распределенных датацентрах (в разных странах)MultiTenancy архитектураПолное разделение логики (кода продукта) и данныхПользовательские данные – это большой объем статических файлов и база данныхУниверсальный API платформы для многолетней разработкиДинамическое масштабирование по нагрузке
Из «бизнес-требований» появились технические
Выбор технической платформы для инфраструктурыВыбор платформы разработки
Две итоговые задачи:
![Page 7: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/7.jpg)
Веб-приложение
Кэшированиена диск
База данных
Традиционное устройствовеб-продуктов
Обычный продут не поддерживает гео веб-кластер, облачные файлы, распределенное кэширование, multitenancy…
![Page 8: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/8.jpg)
Облачная платформа: веб-кластер
Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL)
Репликация MySQL и балансирование нагрузки между серверами
Распределенный кеш данных (memcached)
Непрерывность сессий между веб-серверами (хранение сессий в базе данных)
Кластеризация веб-сервера:
Синхронизация файлов (это – проблема для облачного сервиса)Балансирование нагрузки между серверами
![Page 9: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/9.jpg)
Балансировщик (клиентские запросы по HTTP)
Веб-сервер 1
memcached 1
Веб-сервер 2
memcached 2MySQLmaster
MySQLslave
1-ый этап реализации
![Page 10: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/10.jpg)
![Page 11: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/11.jpg)
Балансировщик (клиентские запросы по HTTP)
Веб-сервер 1
memcached 1
Веб-сервер 2
memcached 1MySQLmaster
MySQLslave
Аварии на уровне целого датацентра
![Page 12: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/12.jpg)
«Веб-кластер», ДЦ в России
БД
Веб-нода
«Веб-кластер», ДЦ в Германии
«Веб-кластер», ДЦ в США
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
БД
Веб-нода
Кэш
Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров.
Потеря связи между ДЦ может составлять часы.
2-ой этап – гео веб-кластер
![Page 13: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/13.jpg)
Облачное хранилищефайлов
Облачное хранилище файлов (Amazon S3,
Azure, Google Storage, OpenStack Swift) + CDN
Посетители
Веб-приложение
Веб-сервер
ДЦ в России
Веб-сервераВеб-серверы
slave
БД (master)
Веб-приложение
Веб-сервер
ДЦ в США
Веб-сервераВеб-серверы
slave
БД (master)
![Page 14: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/14.jpg)
Отказоустойчивость – умение размещаться сразу в нескольких разных территориально распределенных датацентрах (в разных странах)Большой объем базы данных – шардинг – возможность разделить базу данных по территории и группам клиентовMultiTenancy архитектураПолное разделение логики (кода продукта) и данныхПользовательские данные – это большой объем статических файлов и база данныхУниверсальный API платформы для многолетней разработки
Динамическое масштабирование по нагрузке
Из «бизнес-требований» появились технические
![Page 15: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/15.jpg)
Минусы размещения на собственном оборудовании:
«Когда мы только начинали работу над стартапом (FriendFeed), нам нужно было решить, покупать собственные серверы или же выбрать одного из «облачных» хостинг-провайдеров – таких как Amazon (AWS). Мы выбрали первое – решили приобрести собственные серверы. Оглядываясь назад, я думаю, что это было большой ошибкой»
Брет Тейлортехнический директор Facebook
Выбор платформы для разворачивания инфраструктуры
Необходимы вложения в инфраструктуру на старте проектаСложность масштабированияСложность администрирования (в случае размещения в территориально удаленных датацентрах)Создание всех сопутствующих сервисов с нуля
![Page 16: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/16.jpg)
Используем все возможности масштабирования в Amazon – исходя из экономики проекта.
![Page 17: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/17.jpg)
CloudWatch + Auto Scaling
Web 1
Очень высокая посещаемость
Elastic Load Balancing
Web 2 Web N…
Web – автоматическое масштабирование
Используем связку Elastic Load Balancing + CloudWatch + Auto Scaling
![Page 18: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/18.jpg)
Web – автоматическое масштабирование
Используем связку Elastic Load Balancing + CloudWatch + Auto Scaling
Автоматически стартуют новые машины, если средняя нагрузка CPU превышает 50% (по метрикам CloudWatch)Автоматически останавливаются и выводятся из эксплуатации, если средняя нагрузка менее 20%
![Page 19: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/19.jpg)
Специфика web-нод
Есть несколько задач, которые необходимо решить:
На веб-нодах нет пользовательского контента, все ноды должны быть абсолютно идентичны.Read only. Никакие пользовательские данные не пишутся и не сохраняются на веб-нодах, так как в любой момент времени любая машина может быть выключена или стартует новая из «чистого» образа.При этом необходимо обеспечить изоляцию пользователей друг от друга.
![Page 20: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/20.jpg)
Статические данные пользователей храним в S3Загрузка осуществляется «прозрачно» для пользователей – они работают с привычными интерфейсамиПравильно формируются url’ы к картинкам, документам и т.п.Для каждого созданного Корпоративного портала создается персональный аккаунт – данные каждого КП полностью изолированы друг от друга
Статический контент пользователей сервиса
![Page 21: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/21.jpg)
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 22: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/22.jpg)
Особенности настройки MySQL:auto_increment_incrementauto_increment_offset
Базы в разных датацентрах синхронны, при этом независимы друг от друга: потеря связности между датацентрами может составлять часы, данные синхронизируются после восстановления.Пользователь и все сотрудники этой компании работают в одном датацентре за счет управления балансировщиком.
Используем master-master репликацию в MySQL
![Page 23: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/23.jpg)
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 24: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/24.jpg)
Load Balancing определяет вышедшие из строя машиныИсходя из заданных параметров группы балансировки, автоматически восстанавливается нужное количество машин
Сценарий 1: авария на одной или нескольких веб-нодах
![Page 25: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/25.jpg)
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 26: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/26.jpg)
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 27: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/27.jpg)
Каждый датацентр продолжает обслуживать свой сегмент клиентовДанные синхронизируются после восстановления связности
Сценарий 2: потеря связности между датацентрами
![Page 28: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/28.jpg)
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 29: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/29.jpg)
Весь траффик переключается в один работающий датацентрCloudWatch определяет возросшую нагрузку на машины и добавляет их в соответствие с правилами для AutoScalingПриостанавливается мастер-мастер репликацияПроводятся все необходимые работы с базой, на которую не идет нагрузкаБаза включается в работу, восстанавливается репликацияТраффик распределяется на оба датацентраГасятся лишние машины, если средняя нагрузка стала ниже порогового значения
Сценарий 3: авария или плановые работы с базой
![Page 30: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/30.jpg)
Быстрое восстановление кэша при рестарте базы
Оптимизирован для Multitenancy приложений с тысячами таблиц
Оптимизирован для сбора статистики по отдельным пользователям
Подробная статистика по медленным запросам
XtraDB и XtraBackup
BLOB, TEXT в таблицах MEMORY (HEAP)
MySQL? Percona Server!
Один из выводов в процессе эксплуатации: используем один из fork’ов MySQL – Percona Server (обратно совместим с MySQL)
![Page 31: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/31.jpg)
Виртуальная машина (EC2)
«Узким» местом может оказаться производительность дисковой системы. Решение – из EBS дисков Amazon можно построить software RAID.
Выбираем RAID-10, так как он и быстрый, и надежный.
Конфигурация машинс базами MySQL
![Page 32: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/32.jpg)
Бэкап базы данных
Еще один вывод: для разных сценариев восстановления данных необходимо использовать разные бэкапы.
Для восстановления целого сервера БД в случае аварии используем образ машин со всеми дисками (AMI) – делаем целостный бэкап RAID’а, используя файловую систему, поддерживающую freeze и механизм snapshot’ов в Амазоне.Логические (mysqldump) и бинарные инкрементальные (Xtrabackup) бэкапы используются для восстановления отдельных баз или таблиц, поврежденных в случае некорректных операций в системе или ошибок пользователей.Второй тип бэкапов делается на выделенном slave, на который не распределяется общая нагрузка. Тем самым ресурсоемкие операции создания бэкапов не влияют на работу пользователей.
![Page 33: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/33.jpg)
Web 1
Web 2
Web N
Сервер обновлений
Новый образ AMI
ElasticLoad
Balancing
Как ставить обновления на нодах, не допустив рассинхронизации данных (веб и база)
Обновления ПО на web-нодах
![Page 34: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/34.jpg)
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 35: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/35.jpg)
Все веб-ноды идентичны и не зависимы друг от друга, в случае аварии автоматически стартуют новые.
Два датацентра синхронизированы друг с другом и равноценно обслуживают клиентов. В случае аварии на уровне датацентра или плановых работ с базой, траффик прозрачно для клиентов переключается на рабочий датацентр.
НадежностьОдин из приоритетов – постоянная доступность сервиса, его отказоустойчивость.
![Page 36: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/36.jpg)
Мониторинг
Мониторим все, но аккуратноМгновенные уведомления (sms)Автоматика
![Page 37: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/37.jpg)
…и аналитика
ЛогиPinba и т.п.Munin и т.п.
![Page 38: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/38.jpg)
Надежность «облака»
Само по себе «облако» не надежнее традиционного хостинга и собственного оборудования. «Облако» дает возможность организовать надежную инфраструктуру.
![Page 40: Clouds NN 2012 Александр Демидов "Битрикс24 архитектура и опыт эксплуатации отказоустойчивого, масштабируемого,](https://reader036.vdocuments.site/reader036/viewer/2022062419/557f02bad8b42ac0728b495c/html5/thumbnails/40.jpg)
Спасибо за внимание! Вопросы?
Александр Демидов
+7 (915) 201-1500
@demidov
http://www.1c-bitrix.ru