Практический опыт развёртывания .NET Forge CMS в Windows Azure. Облачная производительность. Нагрузочные тесты

Содержание

Слайд 2

Цели

Необходимо развернуть .NET Forge CMS в Windows Azure и поделиться опытом решения

Цели Необходимо развернуть .NET Forge CMS в Windows Azure и поделиться опытом
возникших задач
Провести нагрузочные испытания веб-кластера в облаке и добиться высокой производительности и доступности

Слайд 3

Кратко о «.NET Forge CMS 7.0.5 «Веб-кластер»

.NET Forge CMS «Веб-кластер»— мощная система

Кратко о «.NET Forge CMS 7.0.5 «Веб-кластер» .NET Forge CMS «Веб-кластер»— мощная
управления сайтом на базе платформы ASP.NET, предоставляющая разработчикам инструменты для создания любых веб-проектов.
Написана на C#.

Слайд 4

Кратко о «.NET Forge CMS 7.0.5 «Веб-кластер»

Медиа-галерея

Пользователи, группы, права

Форумы

Рейтинги, голосования

Интернет-магазин

Реклама

Блоги

Интерфейс «Эрмитаж»

Торговый каталог

Морфологический

Кратко о «.NET Forge CMS 7.0.5 «Веб-кластер» Медиа-галерея Пользователи, группы, права Форумы
поиск

Проактивная защита

Визуальный редактор

Подписка, рассылки

Публикация новостей, статей, каталогов

Слайд 5

Кратко о «.NET Forge CMS 7.0.5 «Веб-кластер»

Поддержка кластеризации (Azure или Web Farm)

Интеграция

Кратко о «.NET Forge CMS 7.0.5 «Веб-кластер» Поддержка кластеризации (Azure или Web
с платформой Windows Azure

Интеграция с Microsoft Visual Studio

Слайд 6

Системные требования

Windows XP Professional, Windows Server 2003; Windows Vista , Windows Server

Системные требования Windows XP Professional, Windows Server 2003; Windows Vista , Windows
2008 c установленным IIS
SQL Server 2005 Express, SQL Server 2005, SQL Server 2008 Express, SQL Server 2008, SQL Server 2008 R2
.NET Forge CMS поддерживает все распространенные браузеры: Internet Explorer 7 и выше, FireFox, Chrome, Opera, Safari.

Слайд 7

Для чего разворачивать .NET Forge CMS в Windows Azure?

Гибкость: используем ровно столько

Для чего разворачивать .NET Forge CMS в Windows Azure? Гибкость: используем ровно
ресурсов, сколько нужно
Высокая отказоустойчивость: данные и серверы надежно зарезервированы в нескольких дата-центрах
Быстрое масштабирование: при росте нагрузки автоматически добавляются ресурсы
В базу данных SQL Azure можно заливать столько данных, сколько нужно проекту – за производительность «голова болит» у облака

Слайд 8

Архитектура типичной CMS

Контент-редакторы правят сайт, страницы и шаблоны.
Динамический контент: новости, каталоги –

Архитектура типичной CMS Контент-редакторы правят сайт, страницы и шаблоны. Динамический контент: новости,
находится в БД.
Кэширование используется для улучшения производительности.

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

Редактирование страниц, шаблонов

База данных

Кеширование компонентов

Слайд 9

Интеграция с Windows Azure

Наша цель

Интеграция с Windows Azure Наша цель

Слайд 10

Специфика Windows Azure

Облако накладывает на веб-приложение следующие ограничения:
Будучи опубликованным, приложение не может

Специфика Windows Azure Облако накладывает на веб-приложение следующие ограничения: Будучи опубликованным, приложение
изменяться, т.к. оно распределено между несколькими узлами. Узлы могут запускаться при увеличении нагрузки.
Доступная база данных только SQL Azure, которая отличается от SQL Server.
Невозможность пользоваться стандартными провайдерами сессий пользователей.
Нужно решить вопрос синхронизации изменяемых файлов, т.к. локально внесенные изменения не будут доступны на других узлах, а после остановки узла они будут и вовсе утрачены.
Нужно организовать кластерный кэш, т.к. узлы кластера веб-приложения активно применяют кеширование. Важно научиться его синхронизировать.

Слайд 11

Проблема №1. Изменение файлов

Решение проблемы:
Можно отказаться от изменения страниц сайта (хранить контент

Проблема №1. Изменение файлов Решение проблемы: Можно отказаться от изменения страниц сайта
в БД) или использовать технологию X-Drive.
Можно синхронизировать данные между нодами самим приложением (по событиям). Это сработает не только в Azure, но и на Web Farm.
Мы разместили образ CMS на «облачном диске», который монтируется по технологии X-Drive при инициализации узла. Изменения данных отслеживаются приложением – ноды обмениваются файлами по защищенному протоколу.
Технология синхронизации также успешно применяется и на веб-кластере IIS+Web Farm.

Слайд 12

Изменение файлов – пример решения на кластере Web Farm

Изменение файлов – пример решения на кластере Web Farm

Слайд 13

Изменение файлов – пример решения на кластере Web Farm

Добавляем столько узлов, сколько

Изменение файлов – пример решения на кластере Web Farm Добавляем столько узлов, сколько нужно
нужно

Слайд 14

Изменение файлов – пример решения на кластере Web Farm

Изменение файлов – пример решения на кластере Web Farm

Слайд 15

Изменение файлов – пример решения на кластере Windows Azure

Изменение файлов – пример решения на кластере Windows Azure

Слайд 16

Проблема №2. Отличия SQL Azure от SQL Server

SQL Azure не поддерживает SQL

Проблема №2. Отличия SQL Azure от SQL Server SQL Azure не поддерживает
Server Agent/Jobs, все таблицы обязаны иметь без кластерный индекс (первичный ключ) и многое другое.
Это должно учитываться при миграции данных из SQL Server в SQL Azure.
Мы переделали наше MSSQL приложение, чтобы иметь совместимость с SQL Azure. Специальная утилита конвертирует БД приложения в формат SQL Azure.

Слайд 17

Проблема №3.
Невозможно пользоваться стандартными провайдерами сессий пользователей

Провайдер сессий InProc бесполезен в

Проблема №3. Невозможно пользоваться стандартными провайдерами сессий пользователей Провайдер сессий InProc бесполезен
Windows Azure - сессии будут доступны только одному узлу.
Провайдер сессий SQL Server недоступен из-за ограничений SQL Azure (отсутствие SQL Server Jobs) и др.
Решение - применили собственный провайдер сессий, хранящий данные в Table Storage, или использование провайдера для Azure AppFabric Cache (тип провайдера определяется конфигурационным файлом).

Слайд 18

Сессии веб-кластера .NET Forge CMS

AppFabric Cache

Общие сервисы:

В сессиях хранятся временные данные Посетителей

Сессии веб-кластера .NET Forge CMS AppFabric Cache Общие сервисы: В сессиях хранятся
веб-кластера. Важно сохранить единую сессию Посетителя при переходе между нодами веб-кластера за балансировщиком

Table Storage

Слайд 19

Проблема №4.
«Общие» большие файлы, много контента

Некоторые файлы, в т.ч. объемные (или

Проблема №4. «Общие» большие файлы, много контента Некоторые файлы, в т.ч. объемные
когда контента очень много), целесообразно хранить централизованно, не занимаясь их синхронизацией между нодами веб-кластера.
Решение - используем Azure Blob Storage (Web Storage). Каждый файл сразу загружается ядром продукта в облако, доступен по прямому url и встраивается непосредственно в страницу. Место хранения файлов продукта – настраивается (по маске и т.п.).
Еще один плюс – браузер теперь качает ресурсы страницы быстрее - параллельно с нескольких доменов.

Слайд 20

Массивный контент полезно перенести в облако

Проблема №4.
«Общие» большие файлы, много контента

Массивный контент полезно перенести в облако Проблема №4. «Общие» большие файлы, много контента

Слайд 21

Проблема №5 Кеширование данных

Требуется согласованная актуализация кэша между нодами веб-кластера, централизованное кэширование

Проблема №5 Кеширование данных Требуется согласованная актуализация кэша между нодами веб-кластера, централизованное
(для экономии ресурсов).
Решение – вместо хранения кеша в файлах можно подключить Azure AppFabric Cache, однако также можно эффективно хранить кэш в памяти и сбрасывать его согласованно.

Слайд 22

Кэш веб-кластера .NET Forge CMS

Azure Local Storage

AppFabric Cache

Общие сервисы:

Авто-валидация кэша (события)

Память

Azure Local

Кэш веб-кластера .NET Forge CMS Azure Local Storage AppFabric Cache Общие сервисы:
Storage

Память

Обычно в компонентах кэшируются «тяжелые», частые запросы к БД и ресурсоемкие участки кода

Слайд 23

Типы кластеризации .NET Forge CMS

На базе IIS+Web Farm
На базе Windows Azure
Возможны комбинации

Типы кластеризации .NET Forge CMS На базе IIS+Web Farm На базе Windows
- все зависит от бизнес-требований

Слайд 24

Типы веб-кластера на .NET Forge CMS

IIS + Web Farm

Local Disk

Load Balancer


SQL Server

Azure

Типы веб-кластера на .NET Forge CMS IIS + Web Farm Local Disk
Blob Storage

Общие сервисы:

Авто-синхронизация файлов сайта

Local Disk

Local Disk

Local Disk

Слайд 25

Типы веб-кластера на .NET Forge CMS

На базе Windows Azure

X-Drive

Load Balancer


X-Drive

X-Drive

X-Drive

SQL Azure

AppFabric Cache

Blob

Типы веб-кластера на .NET Forge CMS На базе Windows Azure X-Drive Load
Storage

Общие сервисы:

Авто-синхронизация файлов сайта

Table Storage

Слайд 26

Нагрузочное тестирование

Тестирование проводилось компаниями:
При поддержке компаний:
Для создания нагрузки на веб-кластер использовался пакет

Нагрузочное тестирование Тестирование проводилось компаниями: При поддержке компаний: Для создания нагрузки на
WAPT.
Эмулировалось движение пользователей по основным страницам интернет-магазина (80% неавторизованные, 20% авторизованные)
Нагрузка выполнялась с локальной машины в сети Azure.

Слайд 27

Нагрузочное тестирование

Используемое оборудование и ПО
Для тестовых установок .NET Forge CMS и генерации

Нагрузочное тестирование Используемое оборудование и ПО Для тестовых установок .NET Forge CMS
нагрузки использовались сервера, предоставленные компанией Infobox, и Azure инстансы:
• CPU Intel Xeon E3-1270 (4 физических ядра, 8 с учётом HT), RAM 16Gb, Hardware RAID Adaptek 6405, HDD SATA 320Gb
• Azure Extra Large, 8 Core, RAM 14 GB, 0,96$ в час
• Azure Small, 1 Core, RAM 1,7 GB, 0,12$ в час
На тестовые машины было установлено следующее программное обеспечение:
• MS Windows Server 2008 R2
• IIS 7.5
• .NET 4.0
• MS SQL 2008 R2

Слайд 28

Нагрузочное тестирование

Community-редакция 7.0.5:
163 страницы в секунду
14 083 200 страниц в сутки

Бизнес-редакция

Нагрузочное тестирование Community-редакция 7.0.5: 163 страницы в секунду 14 083 200 страниц
7.0.5:
141 страница в секунду
12 182 400 страниц в сутки

Веб-кластер 7.0.5 (Azure Extra Large):
140 страниц в секунду
12 096 000 страниц в сутки

Веб-кластер 7.0.5 (Azure Extra Large х 5):
500 страниц в секунду
43 200 000 страниц в сутки
загрузка нод < 80%

Веб-кластер 7.0.5 (Azure Small):
20 страниц в секунду
1 728 000

Результаты:

Слайд 29

Облако трещит по швам… ☺

Windows Azure Caching – ограничен по объему +

Облако трещит по швам… ☺ Windows Azure Caching – ограничен по объему
числу транзакций в час
БД SQL Azure «ложится» при ~7-10к запросов в секунду (70% r / 30% w) – стала узким местом при масштабировании веб-кластера
Похоже БД SQL Azure не расширяется автоматически за пределы «железки», и на этой «железке» могут жить чужие БД

Слайд 30

Шаги для развертывания веб-кластера в Windows Azure

Скачать и установить дистрибутив .NET Forge

Шаги для развертывания веб-кластера в Windows Azure Скачать и установить дистрибутив .NET
CMS «Веб-кластер»: http://www.bitrix.net/ru/download/cluster/
Скачать и установить плагин для VS 2010: http://www.bitrix.net/ru/download/vs/
Провести интеграцию логики, дизайна и верстки веб-приложения.
Сконвертировать и выгрузить сайт в облако: http://www.bitrix.net/ru/download/conv_azure/

Слайд 31

Открываем сайт в Visual Studio …

Открываем сайт в Visual Studio …

Слайд 32

Интегрируем дизайн и верстку…

Интегрируем дизайн и верстку…

Слайд 33

Редактируем страницы с комфортом…

Плагин для Visual Studio: http://www.bitrix.net/ru/download/vs/

Редактируем страницы с комфортом… Плагин для Visual Studio: http://www.bitrix.net/ru/download/vs/

Слайд 34

Переносим сайт в облако

Для переноса веб-приложения в Windows Azure создан конвертер «Bitrix

Переносим сайт в облако Для переноса веб-приложения в Windows Azure создан конвертер
Azure Toolkit».
Выберите веб-сайт и нажмите кнопку «Выполнить».

http://www.bitrix.net/ru/download/conv_azure/

Слайд 35

Переносим сайт в облако

Пакет акселератора

Каталог веб-сайта

БД веб-сайта

Bitrix Azure Toolkit

Конвертация БД.
Подготовка «образа»

Переносим сайт в облако Пакет акселератора Каталог веб-сайта БД веб-сайта Bitrix Azure
веб-сайта.
Публикация акселератора.

Слайд 36

Переносим сайт в облако

Переносим сайт в облако

Слайд 37

Переносим сайт в облако

Переносим сайт в облако

Слайд 38

Переносим сайт в облако

Настраиваем blob storage для хранения контента сайта в облаке

Переносим сайт в облако Настраиваем blob storage для хранения контента сайта в облаке

Слайд 39

Переносим сайт в облако

Настраиваем параметры «облачной» базы данных – SQL Azure

Переносим сайт в облако Настраиваем параметры «облачной» базы данных – SQL Azure

Слайд 40

Переносим сайт в облако

Переносим сайт в облако

Слайд 41

Создание узла веб-кластера .NET Forge CMS

Пакет акселератора

Акселератор + веб-сайт

Storage Service

Создание узла веб-кластера .NET Forge CMS Пакет акселератора Акселератор + веб-сайт Storage Service

Слайд 42

Структура развернутого узла веб-кластера .NET Forge CMS

Каталог веб-сайта

Акселератор + веб-сайт

Storage Service

Compute

SQL

Структура развернутого узла веб-кластера .NET Forge CMS Каталог веб-сайта Акселератор + веб-сайт
Azure

БД веб-сайта

Слайд 43

Структура веб-кластера .NET Forge CMS

X-Drive

Load Balancer


X-Drive

X-Drive

X-Drive

SQL Azure

AppFabric Cache

Blob Storage

Общие сервисы:

Авто-синхронизация файлов сайта

Структура веб-кластера .NET Forge CMS X-Drive Load Balancer … X-Drive X-Drive X-Drive

Слайд 44

Структура веб-кластера .NET Forge CMS в облаке

Автоматически создана и запущена c выбранными

Структура веб-кластера .NET Forge CMS в облаке Автоматически создана и запущена c
настройками машина в Windows Azure

Слайд 45

Структура веб-кластера .NET Forge CMS в облаке

Автоматически создана и запущена c выбранными

Структура веб-кластера .NET Forge CMS в облаке Автоматически создана и запущена c
настройками база данных Azure SQL в Windows Azure

Слайд 46

Структура веб-кластера .NET Forge CMS в облаке

Можно настроить кэш в Windows Azure

Структура веб-кластера .NET Forge CMS в облаке Можно настроить кэш в Windows Azure

Слайд 47

Структура веб-кластера .NET Forge CMS в облаке

Автоматически создано хранилище в Windows Azure

Структура веб-кластера .NET Forge CMS в облаке Автоматически создано хранилище в Windows Azure

Слайд 48

Структура веб-кластера .NET Forge CMS в облаке

Подключен X-Drive диск и развернута файловая

Структура веб-кластера .NET Forge CMS в облаке Подключен X-Drive диск и развернута
структура ноды веб-кластера в Windows Azure

Слайд 49

Веб-кластер доступен в облаке!

http://azure.bitrix.net

Веб-кластер доступен в облаке! http://azure.bitrix.net

Слайд 50

Цели – достигнуты!

Доработана платформа .NET Forge CMS и развернут типовой интернет-магазин на

Цели – достигнуты! Доработана платформа .NET Forge CMS и развернут типовой интернет-магазин
веб-кластере в Windows Azure
Достигнута высокая производительность и доступность веб-проекта в Windows Azure
Веб-кластер .NET Forge CMS комфортно себя чувствует в облаке Windows Azure и готов к любым нагрузкам ☺

Слайд 51

Новое в .NET Forge CMS 8

Переработан фреймворк компонентов – скорость, простота написания
ASP.NET

Новое в .NET Forge CMS 8 Переработан фреймворк компонентов – скорость, простота
MVC
Поддержка шаблонизатора Razor
и многое другое
Имя файла: Практический-опыт-развёртывания-.NET-Forge-CMS-в-Windows-Azure.-Облачная-производительность.-Нагрузочные-тесты.pptx
Количество просмотров: 130
Количество скачиваний: 0