Архитектура и запуск облачногосервиса.Как обеспечить реальные 24ч.Александр Демидов, «1С-Битрикс»проект Битрикс24
Цель на 2012 годЗадача для компании в 2012 году –запустить в коммерческую эксплуатациюBitrix24Аренда Корпоративного портал...
Новый SaaS продуктЕсть несколько задач на старте и в процессе работыНовый SaaS сервис – как коммерческие, так и «бесплатны...
Для пользователя…БыстроБез сбоев
Из «бизнес-требований» появились техническиеОтказоустойчивость – умение размещаться сразу в нескольких разныхтерриториальн...
Традиционное устройство веб-продуктовВеб-приложениеКэшированиена дискБаза данных
Масштабируемая платформа: веб-кластерВертикальный шардинг (вынесение модулей на отдельные серверыMySQL)Репликация MySQL и ...
1-ый этап реализацииБалансировщик (клиентскиезапросы по HTTP)Веб-сервер 1memcached1Веб-сервер 2memcached2MySQLmasterMySQLs...
2-ой этап – гео веб-кластер«Веб-кластер»,ДЦ в России«Веб-кластер»,ДЦ в РоссииБДБДВеб-нодаВеб-нода«Веб-кластер»,ДЦ в Герман...
Облачное хранилище файловОблачное хранилище файлов(Amazon S3, Azure, Google Storage,OpenStack Swift) + CDNОблачное хранили...
Выбор платформы для разворачивания инфраструктурыМинусы размещения на собственном оборудовании:«Когда мы только начинали р...
Используем все возможности масштабирования в Amazon – исходя изэкономики проекта.
Архитектура Bitrix24MySQLmasterWeb 1Web 1ElasticLoad BalancingElasticLoad BalancingWeb 2Web 2 Web NWeb N…MySQLmasterWeb 1W...
Web – автоматическое масштабированиеCloudWatch + Auto ScalingWeb 1Web 1Очень высокая посещаемостьElastic Load BalancingEla...
Web – автоматическое масштабированиеИспользуем связку Elastic Load Balancing +CloudWatch + Auto ScalingАвтоматически старт...
Тествынесение модулей на отдельные серверы MySQL)Специфика web-нодЕсть несколько задач, которыенеобходимо решить:На веб-но...
Тествынесение модулей на отдельные серверы MySQL)Специфика web-нодНет Apache. Есть PHP-FPM + nginxУ каждого клиента свой д...
Статический контент пользователей сервисаСтатические данные пользователейхраним в S3Загрузка осуществляется«прозрачно» для...
ElasticLoad BalancingElasticLoad BalancingMySQLmasterWeb 1Web 1ElasticLoad BalancingElasticLoad BalancingWeb 2Web 2 Web NW...
Используем master-master репликацию в MySQLОсобенности настройки MySQL:auto_increment_incrementauto_increment_offsetБазы в...
Сценарий 1: авария на одной или несколькихвеб-нодахMySQLmasterElasticLoad BalancingElasticLoad BalancingWeb NWeb N…Web 1We...
Сценарий 1: авария на одной или несколькихвеб-нодахLoad Balancing определяет вышедшие из строя машиныИсходя из заданных па...
Сценарий 1: авария на одной или несколькихвеб-нодахMySQLmasterElasticLoad BalancingElasticLoad BalancingWeb NWeb N…Web 1We...
Сценарий 2: потеря связности междудатацентрамиMySQLmasterElasticLoad BalancingElasticLoad BalancingWeb NWeb N…Web 1Web 1 W...
Сценарий 2: потеря связности междудатацентрамиКаждый датацентр продолжает обслуживать свой сегментклиентовДанные синхрониз...
Сценарий 3: плановые работы с базой илиавария всего ДЦMySQLmasterElasticLoad BalancingElasticLoad BalancingWeb NWeb N…Web ...
Сценарий 3: авария или плановые работы сбазойВесь траффик переключается в один работающий датацентрCloudWatch определяет в...
MySQL? Percona Server!Быстрое восстановление кэша при рестарте базыОптимизирован для Multitenancy приложений с тысячами та...
Тествынесение модулей на отдельные серверы MySQL)Виртуальная машина(EC2), не RDS«Узким» местом можетоказатьсяпроизводитель...
Бэкап базы данныхЕще один вывод: для разных сценариеввосстановления данных необходимо использоватьразные бэкапы.Для восста...
Обновления ПО на web-нодахWeb 1Web 1Web 2Web 2Web NWeb NСерверобновленийСерверобновленийНовыйобраз AMIНовыйобраз AMIElasti...
Немного разгрузим web-ноды…Nginx http_sub_modulenginx_substitutions_filterlocation / {subs_filter <link href="/([^ ]+).css...
…и client sideна один хост всегоFirefox 13 6 40IE 8 / 9 6 35Opera 11 6 32Safari 5.2 6 30Chrome 19 6 17Максимальное количес...
ElasticLoad BalancingElasticLoad BalancingMySQLmasterWeb 1Web 1HTTP/HTTPS*.ruElasticLoad BalancingElasticLoad BalancingHTT...
Все веб-ноды идентичны и независимы друг от друга, в случаеаварии автоматически стартуютновые.Два датацентра синхронизиров...
Мониторим все, но аккуратноМгновенные уведомления (sms)АвтоматикаМониторинг
…и аналитикаЛогиPinba и т.п.Munin и т.п.
Bitrix24www.bitrix24.ru
Спасибо за внимание!Вопросы?Александр Демидовdemidov@1c-bitrix.ru+7 (915) 201-1500@demidovhttp://www.1c-bitrix.ru
Upcoming SlideShare
Loading in …5
×

Архитектура и запуск облачного сервиса. Как обеспечить реальные 24ч

410 views
370 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
410
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Архитектура и запуск облачного сервиса. Как обеспечить реальные 24ч

  1. 1. Архитектура и запуск облачногосервиса.Как обеспечить реальные 24ч.Александр Демидов, «1С-Битрикс»проект Битрикс24
  2. 2. Цель на 2012 годЗадача для компании в 2012 году –запустить в коммерческую эксплуатациюBitrix24Аренда Корпоративного портала как инструмента социальногоинтранетаРазвитие социального Project- и Task-менеджментаРазвитие Social CRM - готового, простого в использовании решенияСобрать и накопить опыт по эксплуатации облачных веб-сервисов,поделиться им с партнерами
  3. 3. Новый SaaS продуктЕсть несколько задач на старте и в процессе работыНовый SaaS сервис – как коммерческие, так и «бесплатные»пользователиМинимизация расходов на эксплуатацию и снижение финансовыхрисков на старте проектаМасштабирование при росте нагрузки и обратное масштабированиеНадежность – обеспечение SLAРабота с разными рынками: США, Европа, РоссияБыстрая отдача статического контента
  4. 4. Для пользователя…БыстроБез сбоев
  5. 5. Из «бизнес-требований» появились техническиеОтказоустойчивость – умение размещаться сразу в нескольких разныхтерриториально распределенных датацентрах (в разных странах)MultiTenancy архитектураПолное разделение логики (кода продукта) и данныхПользовательские данные – это большой объем статических файлов ибаза данныхУниверсальный API платформы для многолетней разработкиДинамическое масштабирование по нагрузкеВыбор технической платформы для инфраструктурыВыбор платформы разработкиДве итоговые задачи:
  6. 6. Традиционное устройство веб-продуктовВеб-приложениеКэшированиена дискБаза данных
  7. 7. Масштабируемая платформа: веб-кластерВертикальный шардинг (вынесение модулей на отдельные серверыMySQL)Репликация MySQL и балансирование нагрузки между серверамиРаспределенный кеш данных (memcached)Непрерывность сессий между веб-серверами (хранение сессий в базеданных)Кластеризация веб-сервера:Синхронизация файлов (это – проблема для облачного сервиса)Балансирование нагрузки между серверами
  8. 8. 1-ый этап реализацииБалансировщик (клиентскиезапросы по HTTP)Веб-сервер 1memcached1Веб-сервер 2memcached2MySQLmasterMySQLslave
  9. 9. 2-ой этап – гео веб-кластер«Веб-кластер»,ДЦ в России«Веб-кластер»,ДЦ в РоссииБДБДВеб-нодаВеб-нода«Веб-кластер»,ДЦ в Германии«Веб-кластер»,ДЦ в Германии«Веб-кластер»,ДЦ в США«Веб-кластер»,ДЦ в СШАКэшКэшБДБДВеб-нодаВеб-нодаКэшКэшБДБДВеб-нодаВеб-нодаКэшКэшБДБДВеб-нодаВеб-нодаКэшКэшБДБДВеб-нодаВеб-нодаКэшКэшБДБДВеб-нодаВеб-нодаКэшКэшБДБДВеб-нодаВеб-нодаКэшКэшБДБДВеб-нодаВеб-нодаКэшКэшБДБДВеб-нодаВеб-нодаКэшКэшАсинхронная master-masterрепликация для обеспечения работыгеографически распределенныхвеб-кластеров.Потеря связи между ДЦ можетсоставлять часы.
  10. 10. Облачное хранилище файловОблачное хранилище файлов(Amazon S3, Azure, Google Storage,OpenStack Swift) + CDNОблачное хранилище файлов(Amazon S3, Azure, Google Storage,OpenStack Swift) + CDNПосетителиВеб-приложениеВеб-приложениеВеб-серверВеб-серверДЦ в РоссииВеб-сервераВеб-сервераВеб-серверыВеб-серверыslaveslaveБД (master)БД (master)Веб-приложениеВеб-приложениеВеб-серверВеб-серверДЦ в СШАВеб-сервераВеб-сервераВеб-серверыВеб-серверыslaveslaveБД (master)БД (master)
  11. 11. Выбор платформы для разворачивания инфраструктурыМинусы размещения на собственном оборудовании:«Когда мы только начинали работу над стартапом (FriendFeed), нам нужнобыло решить, покупать собственные серверы или же выбрать одного из«облачных» хостинг-провайдеров – таких как Amazon (AWS). Мы выбралипервое – решили приобрести собственные серверы. Оглядываясь назад, ядумаю, что это было большой ошибкой»Брет Тейлортехнический директор FacebookНеобходимы вложения в инфраструктуру на старте проектаСложность масштабированияСложность администрирования (в случае размещения втерриториально удаленных датацентрах)Создание всех сопутствующих сервисов с нуля
  12. 12. Используем все возможности масштабирования в Amazon – исходя изэкономики проекта.
  13. 13. Архитектура Bitrix24MySQLmasterWeb 1Web 1ElasticLoad BalancingElasticLoad BalancingWeb 2Web 2 Web NWeb N…MySQLmasterWeb 1Web 1 Web 2Web 2 Web NWeb N…master-masterрепликацияS3management,monitoring,MySQL backupДатацентр 1Мониторинг имасштабирование– CloudWatch +AutoScalingДатацентр 2Мониторинг имасштабирование– CloudWatch +AutoScaling
  14. 14. Web – автоматическое масштабированиеCloudWatch + Auto ScalingWeb 1Web 1Очень высокая посещаемостьElastic Load BalancingElastic Load BalancingWeb 2Web 2 Web NWeb N…Используем связку Elastic Load Balancing +CloudWatch + Auto Scaling
  15. 15. Web – автоматическое масштабированиеИспользуем связку Elastic Load Balancing +CloudWatch + Auto ScalingАвтоматически стартуют новыемашины, если средняя нагрузкаCPU превышает 40%Автоматически останавливаютсяи выводятся из эксплуатации,если средняя нагрузка менее20%Ставили верхний порог больше,однако начинается общаядеградация системы –пользователям работатьнекомфортно (долгозагружаются страницы)
  16. 16. Тествынесение модулей на отдельные серверы MySQL)Специфика web-нодЕсть несколько задач, которыенеобходимо решить:На веб-нодах нет пользовательскогоконтента, все ноды должны бытьабсолютно идентичны.Read only. Никакие пользовательскиеданные не пишутся и не сохраняются навеб-нодах, так как в любой моментвремени любая машина может бытьвыключена или стартует новая из«чистого» образа.При этом необходимо обеспечитьизоляцию пользователей друг от друга.
  17. 17. Тествынесение модулей на отдельные серверы MySQL)Специфика web-нодНет Apache. Есть PHP-FPM + nginxУ каждого клиента свой доменБыл разработан модуль для PHP:проверяет корректность домена,завершает хит с ошибкой, если имянекорректноустанавливает соединение снужной базой в зависимости отдоменаобеспечивает безопасность иизоляцию пользователей друг отдругаслужит для шардинга данныхразных пользователей по разнымбазам
  18. 18. Статический контент пользователей сервисаСтатические данные пользователейхраним в S3Загрузка осуществляется«прозрачно» для пользователей –они работают с привычнымиинтерфейсамиПравильно формируются url’ы ккартинкам, документам и т.п.Для каждого созданногоКорпоративного портала создаетсяперсональный аккаунт – данныекаждого КП полностью изолированыдруг от друга
  19. 19. ElasticLoad BalancingElasticLoad BalancingMySQLmasterWeb 1Web 1ElasticLoad BalancingElasticLoad BalancingWeb 2Web 2 Web NWeb N… S3management,monitoring,MySQL backupДатацентр 1Мониторинг имасштабирование– CloudWatch +AutoScalingmaster-masterрепликацияMySQLmasterWeb 1Web 1 Web 2Web 2 Web NWeb N…Датацентр 2Мониторинг имасштабирование– CloudWatch +AutoScaling
  20. 20. Используем master-master репликацию в MySQLОсобенности настройки MySQL:auto_increment_incrementauto_increment_offsetБазы в разных датацентрах синхронны, при этом независимы друг отдруга: потеря связности между датацентрами может составлять часы,данные синхронизируются после восстановления.В любое время можно добавить новые датацентры.Пользователь и все сотрудники этой компании работают в одномдатацентре за счет управления балансировщиком.Сессии храним в базе, но не реплицируем между серверами из-забольшого траффика и возможных «локов»:SET sql_log_bin = 0 … или …replicate-wild-ignore-table = %.b_sec_session%
  21. 21. Сценарий 1: авария на одной или несколькихвеб-нодахMySQLmasterElasticLoad BalancingElasticLoad BalancingWeb NWeb N…Web 1Web 1 Web 2Web 2MySQLmasterWeb 1Web 1 Web 2Web 2 Web NWeb N…master-masterрепликацияS3Датацентр 1Мониторинг имасштабирование– CloudWatch +AutoScalingДатацентр 2Мониторинг имасштабирование– CloudWatch +AutoScaling
  22. 22. Сценарий 1: авария на одной или несколькихвеб-нодахLoad Balancing определяет вышедшие из строя машиныИсходя из заданных параметров группы балансировки,автоматически восстанавливается нужное количествомашин
  23. 23. Сценарий 1: авария на одной или несколькихвеб-нодахMySQLmasterElasticLoad BalancingElasticLoad BalancingWeb NWeb N…Web 1Web 1 Web 2Web 2MySQLmasterWeb 1Web 1 Web 2Web 2 Web NWeb N…master-masterрепликацияS3Датацентр 1Мониторинг имасштабирование– CloudWatch +AutoScalingДатацентр 2Мониторинг имасштабирование– CloudWatch +AutoScaling
  24. 24. Сценарий 2: потеря связности междудатацентрамиMySQLmasterElasticLoad BalancingElasticLoad BalancingWeb NWeb N…Web 1Web 1 Web 2Web 2MySQLmasterWeb 1Web 1 Web 2Web 2 Web NWeb N…master-masterрепликацияS3Датацентр 1Мониторинг имасштабирование– CloudWatch +AutoScalingДатацентр 2Мониторинг имасштабирование– CloudWatch +AutoScalingElasticLoad BalancingElasticLoad BalancingElasticLoad BalancingElasticLoad Balancing
  25. 25. Сценарий 2: потеря связности междудатацентрамиКаждый датацентр продолжает обслуживать свой сегментклиентовДанные синхронизируются после восстановления связности
  26. 26. Сценарий 3: плановые работы с базой илиавария всего ДЦMySQLmasterElasticLoad BalancingElasticLoad BalancingWeb NWeb N…Web 1Web 1 Web 2Web 2MySQLmasterWeb 1Web 1 Web 2Web 2 Web NWeb N…master-masterрепликацияS3Датацентр 1Мониторинг имасштабирование– CloudWatch +AutoScalingДатацентр 2Мониторинг имасштабирование– CloudWatch +AutoScaling
  27. 27. Сценарий 3: авария или плановые работы сбазойВесь траффик переключается в один работающий датацентрCloudWatch определяет возросшую нагрузку на машины идобавляет их в соответствие с правилами для AutoScalingПриостанавливается мастер-мастер репликацияПроводятся все необходимые работы с базой, на которуюне идет нагрузкаБаза включается в работу, восстанавливается репликацияТраффик распределяется на оба датацентраГасятся лишние машины, если средняя нагрузка стала нижепорогового значения
  28. 28. MySQL? Percona Server!Быстрое восстановление кэша при рестарте базыОптимизирован для Multitenancy приложений с тысячами таблицОптимизирован для сбора статистики по отдельным пользователямПодробная статистика по медленным запросамXtraDB и XtraBackupBLOB, TEXT в таблицах MEMORY (HEAP)Один из выводов в процессе эксплуатации:используем один из fork’ов MySQL – Percona Server(обратно совместим с MySQL)
  29. 29. Тествынесение модулей на отдельные серверы MySQL)Виртуальная машина(EC2), не RDS«Узким» местом можетоказатьсяпроизводительностьдисковой системы.Решение – из EBS дисковAmazon можно построитьsoftware RAID.Выбираем RAID-10, таккак он и быстрый, инадежный.Конфигурация машинс базами MySQL
  30. 30. Бэкап базы данныхЕще один вывод: для разных сценариеввосстановления данных необходимо использоватьразные бэкапы.Для восстановления целого сервера БД в случае аварии используемобраз машин со всеми дисками (AMI) – делаем целостный бэкапRAID’а, используя файловую систему, поддерживающую freeze имеханизм snapshot’ов в Амазоне.Логические (mysqldump) и бинарные инкрементальные (Xtrabackup)бэкапы используются для восстановления отдельных баз или таблиц,поврежденных в случае некорректных операций в системе или ошибокпользователей.Второй тип бэкапов делается на выделенном slave, на который нераспределяется общая нагрузка. Тем самым ресурсоемкие операциисоздания бэкапов не влияют на работу пользователей.
  31. 31. Обновления ПО на web-нодахWeb 1Web 1Web 2Web 2Web NWeb NСерверобновленийСерверобновленийНовыйобраз AMIНовыйобраз AMIElasticLoadBalancingElasticLoadBalancingКак ставить обновления на нодах, не допустиврассинхронизации данных (веб и база)
  32. 32. Немного разгрузим web-ноды…Nginx http_sub_modulenginx_substitutions_filterlocation / {subs_filter <link href="/([^ ]+).css <link href="http://cdn.domain.ru/$1.css gir;}
  33. 33. …и client sideна один хост всегоFirefox 13 6 40IE 8 / 9 6 35Opera 11 6 32Safari 5.2 6 30Chrome 19 6 17Максимальное количество соединений на хостAccess-Control-Allow-Origin: *
  34. 34. ElasticLoad BalancingElasticLoad BalancingMySQLmasterWeb 1Web 1HTTP/HTTPS*.ruElasticLoad BalancingElasticLoad BalancingHTTP/HTTPS*.comWeb 2Web 2 Web NWeb N…CloudWatch +AutoScalingCloudWatchMySQLmasterWeb 1Web 1 Web 2Web 2 Web NWeb N…CloudWatch +AutoScalingCloudWatchmaster-masterрепликацияS3HTTP/HTTPS*.com*.rumanagement,monitoring,MySQL backupcache cache
  35. 35. Все веб-ноды идентичны и независимы друг от друга, в случаеаварии автоматически стартуютновые.Два датацентра синхронизированыдруг с другом и равноценнообслуживают клиентов. В случаеаварии на уровне датацентра илиплановых работ с базой, траффикпрозрачно для клиентовпереключается на рабочийдатацентр.НадежностьОдин из приоритетов –постоянная доступностьсервиса, егоотказоустойчивость.
  36. 36. Мониторим все, но аккуратноМгновенные уведомления (sms)АвтоматикаМониторинг
  37. 37. …и аналитикаЛогиPinba и т.п.Munin и т.п.
  38. 38. Bitrix24www.bitrix24.ru
  39. 39. Спасибо за внимание!Вопросы?Александр Демидовdemidov@1c-bitrix.ru+7 (915) 201-1500@demidovhttp://www.1c-bitrix.ru

×