63
Windows Azure разработка в облаке и для облака Хостинг веб-приложений и облачных сервисов

Azure - облачные сервисы и приложения

Embed Size (px)

Citation preview

Page 1: Azure - облачные сервисы и приложения

Windows Azure разработка в облаке и для облакаХостинг веб-приложений и облачных сервисов

Page 2: Azure - облачные сервисы и приложения

Обзор модуляХостинг веб-приложений в AzureКонфигурирование и публикация веб-приложенийМониторинг и анализ развернутых веб-приложенийОбзор облачных сервисовВеб-роли и рабочие роли. Экземпляры ролейНастройка облачных сервисовОбновление сервисов и управление их развертыванием

Page 3: Azure - облачные сервисы и приложения

Хостинг веб-приложений в AzureОбзор веб-приложенийУровни (сервисные планы) веб-приложенийХостинг и публикация веб-приложений в AzureКонфигурирование веб-приложений

Page 4: Azure - облачные сервисы и приложения

Обзор веб-приложений

Page 5: Azure - облачные сервисы и приложения

Обзор веб-приложенийПростой, масштабируемый хостинг для веб-приложений, обладающий рядом преимуществ:

Быстрый способ развертывания веб-приложений в облакеМасштабирование без необходимости внесения изменений в приложениеИнтеграция с Visual StudioОткрытая платформа для множества разных языков программирования

Page 6: Azure - облачные сервисы и приложения

Уровни веб-приложенийВеб-приложения используют ресурсы в соответствии с пятью уровнями:

Free (dev/test)Общие вычислительные ресурсыОграниченная пропускная способность и процессорное времяОграниченные возможности настройки

Shared (dev/test)Общие вычислительные ресурсыНет ограничений по пропускной способности и процессорному времениДополнительные возможности настройки

Page 7: Azure - облачные сервисы и приложения

Уровни веб-приложенийВеб-приложения используют ресурсы в соответствии с пятью уровнями:

Basic (live)Зарезервированные экземпляры (VM) для нескольких веб-приложенийНеограниченное количество веб-приложений

Standard (live)Зарезервированные экземпляры (VM) для нескольких веб-приложенийНеограниченное количество веб-приложенийАвтоматическое масштабирование

Page 8: Azure - облачные сервисы и приложения

Уровни веб-приложенийВеб-приложения используют ресурсы в соответствии с пятью уровнями:

Premium (enterprise)Максимальные масштабируемость и изоляцияНеограниченное количество веб-приложений

Подробнее – здесь: https://azure.microsoft.com/en-us/pricing/details/app-service/

Page 9: Azure - облачные сервисы и приложения

Уровни веб-приложенийДля хостинга нескольких веб-приложений используйте план Basic или Standard

Выделенные виртуальные машины для Ваших приложенийОплата по числу экземпляров (виртуальных машин), не веб-приложений

BasicStandard

Shared

FreePremium

Page 10: Azure - облачные сервисы и приложения

ДЕМОСоздание веб-приложения

Page 11: Azure - облачные сервисы и приложения

Хостинг веб-приложений в Azure

Page 12: Azure - облачные сервисы и приложения

Конфигурация веб-приложенийПакет приложения и его конфигурация хранятся на внешнем хранилищеApp Settings и Connection Strings перехватываются и заменяются в процессе старта Пути масштабирования приложений:

Создание веб-сайтов в IIS с использованием Web Deploy package Применение конфигурационных настроек из внешнего хранилища

Page 13: Azure - облачные сервисы и приложения

Конфигурация веб-приложенийВеб-приложения и сайты в IIS:

Для планов Free и Shared веб-приложения реализуются как сайты в IISДля плана Standard резервируется отдельная виртуальная машина с IIS, где каждое веб-приложение – это отдельный сайтТакже веб-приложениями можно управлять удаленно через IIS Manager

Page 14: Azure - облачные сервисы и приложения

Хостинговые планыХостинговые планы могут логически группировать веб-приложения в рамках подписки

Возможности, емкость и т.д. общие для группы в рамках экземпляра

В одной ресурсной группе могут существовать несколько хостинговых планов Несколько веб-приложений могут существовать в одном хостинговом плане

Page 15: Azure - облачные сервисы и приложения

Хостинговые планы

Page 16: Azure - облачные сервисы и приложения

Хостинговые планыХостинговый план создается при создании нового экземпляра веб-приложения

Можно выбрать добавление приложения к существующему плануМожно создать новый план при создании нового веб-приложения

Page 17: Azure - облачные сервисы и приложения

Конфигурирование веб-приложений

Page 18: Azure - облачные сервисы и приложения

AlwaysOnДоступно начиная с плана Basic/StandardИдеальный выбор для постоянной продолжительной обработки запросовРегулярно генерирует простой HTTP-запрос

Своего рода heartbeat, чтобы убедиться что приложение все еще живое и app pool не утилизированПредотвращает выгрузку веб-приложений из памяти и заставляет их пересобраться при следующем запросе

Page 19: Azure - облачные сервисы и приложения

Доменные именаСтандартный домен

[http/https]://<имя-веб-приложения>.azurewebsites.net

Начиная с режима Shared Вы можете настроить приложение на использование другого доменного имени

Управление A и CNAME записями в DNS

Traffic Manager поддерживает другие доменные имена

Page 20: Azure - облачные сервисы и приложения

Автомасштабирование приложенийПравила масштабирования выбираются в зависимости от паттерна* и расписанияМасштабирование может быть настроено с использованием различных метрик

Metrics

CPU

Memory

HTTP Queue

Disk Queue

Data In

Data Out

Page 21: Azure - облачные сервисы и приложения

Масштабирование производительности«Размер» экземпляраДиапазоны

Количество экземпляровЗагрузка CPU

Page 22: Azure - облачные сервисы и приложения

ДЕМОАвтомасштабирование веб-приложений (старый портал)

Page 23: Azure - облачные сервисы и приложения

Публикациявеб-приложений

Page 24: Azure - облачные сервисы и приложения

Протокол Web DeployWeb Deploy упрощает развертывание веб-приложений на IIS, предоставляя стандартный формат пакета

Пакеты можно установить вручную – через IIS Manager или PowerShellПакеты можно установить удаленно через IIS instance remote deployment service

Visual Studio и WebMatrix поддерживают развертывание веб-приложений через Web Deploy

Page 25: Azure - облачные сервисы и приложения

Протокол Web Deploy

Page 26: Azure - облачные сервисы и приложения

App Settings и Connection StringsApp settings и connection strings можно задать и управлять ими через портал

Page 27: Azure - облачные сервисы и приложения

ДЕМОApp Settings и Connection Strings

Page 28: Azure - облачные сервисы и приложения

Мониторинг веб-приложенийСтарый портал:

Page 29: Azure - облачные сервисы и приложения

Мониторинг веб-приложенийНовый портал:

Page 30: Azure - облачные сервисы и приложения

Хостинг облачных сервисов в AzureОбзор облачных сервисовВеб-роли и рабочие роли. Экземпляры ролейНастройка облачных сервисовОбновление сервисов и управление их развертыванием

Page 31: Azure - облачные сервисы и приложения

Обзор облачных сервисов

Page 32: Azure - облачные сервисы и приложения

Архитектура облачного сервисаОблачный сервис в Azure состоит из трех частей:

Одна или больше виртуальных машин с Windows Azure OS(базируется на Windows Server)XML-файл конфигурации, который описывает сервис, точки подключения и др. нюансы сервиса и ролиБинарники для каждой роли

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

Page 33: Azure - облачные сервисы и приложения

Архитектура облачного сервиса

Page 34: Azure - облачные сервисы и приложения

Роли облачных сервисовWeb RoleХостинг приложений с публичными http/tcp-точками подключения (что-то, что имеет веб-интерфейс)

MVC Web SiteWCF ServiceWeb API Service

Worker RoleФоновая обработка, долготекущие или прерывающиеся задачиМожет быть несколько экземпляров, получающих данные из очереди

Page 35: Azure - облачные сервисы и приложения

Роли облачных сервисов

Worker roles• Default web

endpoints

Web roles• Hosted Web

Core (IIS)

Page 36: Azure - облачные сервисы и приложения

Веб-роли

Page 37: Azure - облачные сервисы и приложения

Веб-ролиПреднастроенный Windows ServerПредустановленный IISОткрытый порт 80Стандартная точка подключения (80)Может содержать все, что поддерживает IISМожно настроить через startup-скрипты

Page 38: Azure - облачные сервисы и приложения

Точки подключения

Публичный порт 1433

Внешняя точка

подключения

Cloud app / Hosted service

порт 1433

Page 39: Azure - облачные сервисы и приложения

Точки подключения

Внутренняя точка

подключения

порт 3389

Cloud app / Hosted service

Page 40: Azure - облачные сервисы и приложения

Воркер-роли

Page 41: Azure - облачные сервисы и приложения

Worker RolesПреднастроенный Windows ServerБольше ничего не установленоНет стандартных точек подключенияМожет содержать все, что не требует наличия IISУстановка дополнительного ПО через скриптыЛогика содержится в классе – наследнике WorkerRole.cs

Page 42: Azure - облачные сервисы и приложения

Обмен данными с воркер-рольюИзолированный модуль, который может иметь несколько экземпляровДля запросов используется внешнее хранилище

Azure Queue Storage для хранения сообщений для Worker RoleService Bus queues – тоже неплохой вариантРеляционные базы данных – еще один способ

Worker Role может быть хостом для WCF-сервиса для получения запросов

Page 43: Azure - облачные сервисы и приложения

Обмен данными с воркер-ролью

Page 44: Azure - облачные сервисы и приложения

Обработка запросовВоркер-роль обычно реализует простой паттерн

Приостановить поток

Проверить наличие новых сообщений в хранилище

Обработать сообщение

Пометить сообщение как обработанное

Page 45: Azure - облачные сервисы и приложения

Особенности реализации ролей

Page 46: Azure - облачные сервисы и приложения

Использование Service RuntimeСборка Microsoft.WindowsAzure.ServiceRuntime входит в состав Azure SDKСборка содержит пространство имен Microsoft.WindowsAzure.ServiceRuntime которое включает классы для управления ролямиКласс RoleEntryPoint (базовый для обеих видов ролей) также содержится здесь

Page 47: Azure - облачные сервисы и приложения

ДЕМОСтандартная реализация RoleEntryPoint

Page 48: Azure - облачные сервисы и приложения

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

RoleEntryPoint.OnStart()Global.Application_Start()RoleEntryPoint.Run()

Page 49: Azure - облачные сервисы и приложения

Реализация класса RoleEntryPointВ методе OnStart() Вы можете настроить воркер-роль перед запуском

В это время, при просмотре через портал, статус роли - BusyЕсли OnStart() возвращает false, роль немедленно останавливаетсяЕсли OnStart() возвращает true, выполняется метод Run()

Page 50: Azure - облачные сервисы и приложения

Реализация класса RoleEntryPointВ методе Run() Вы можете использовать бесконечный цикл для опроса состояния внешнего хранилища и получения из него одного или нескольких необработанных сообщений

Подробнее: https://azure.microsoft.com/en-us/documentation/articles/cloud-services-role-lifecycle-dotnet/

Page 51: Azure - облачные сервисы и приложения

Жизненный цикл ролиЗагрузка пакета

с сервисом в Azure

Создание виртуальных

машин

Роли запускаются

RoleEntryPoint OnStart()

RoleEntryPoint Run()

Web или worker роли запущены

[Role Recycle]RoleEntryPoint

OnStop()

[Role Recycle]Роль удаляется

из балансировщика

нагрузки

Page 52: Azure - облачные сервисы и приложения

Настройка облачных сервисов

Page 53: Azure - облачные сервисы и приложения

МасштабированиеДля каждой роли можно увеличить количество экземпляров (в свойствах)Для облачных сервисов могут быть созданы виртуальные машины разных размеров

Page 54: Azure - облачные сервисы и приложения

МасштабированиеНе забываем об автомасштабировании!Можно и нужно настроить правила автомасштабированияМожно масштабировать и вручную – через APIs

Page 55: Azure - облачные сервисы и приложения

Local StorageLocal storage внутри роли описывается в XML-файле описания сервисаLocal storage резервирует каталог в файловой системе если приложению нужно читать или модифицировать файлLocal storage может сохраняться на протяжении всего жизненного цикла экземпляра роли, но это не гарантируется!

Подробнее: https://azure.microsoft.com/en-us/documentation/articles/cloud-services-configure-local-storage-resources

/

Page 56: Azure - облачные сервисы и приложения

ДиагностикаМожно собирать диагностические данные об облачном сервисе в хранилище (storage account)

Только ошибки, все данные, или своя конфигурацияДанные сохраняются в учетной записи, описанной в XML-файле конфигурации ролиЭто настраивается через портал, скрипт или в файле конфигурации

Подробнее: https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-diagnostics/

Page 57: Azure - облачные сервисы и приложения

Развертывание облачных сервисов

Page 58: Azure - облачные сервисы и приложения

Cloud Service PackagesServiceDefinition.csdefВозможные теги

<WebRole /><Sites /><WorkerRole /><InputEndpoints /><InstanceInputEndpoints /><InternalEndpoints /><ConfigurationSettings /><Certificates /><LocalResources /><Imports /><Startup />

При изменении надо переразвернуть

Page 59: Azure - облачные сервисы и приложения

Cloud Service PackagesServiceConfiguration.*.cscfg(Cloud и Local)

<Instances /><ConfigurationSettings /><Certificates />

Должны коррелировать с ServiceDefinition.csdefМогут быть изменены без переразвертывания!

Page 60: Azure - облачные сервисы и приложения

Обновление «поверх» (In-Place)Для существующего сервиса можно загрузить обновленный файл конфигурации

Должна быть корреляция с файлом описания, загруженным как часть пакетаИзменение конфигурации без изменения структуры приложения

Новый пакет и файл конфигурации можно загрузить в промежуточную среду (Staging Slot)

Можно выполнить обмен виртуальными IP-адресами для переключения Staging и Production сред

Page 61: Azure - облачные сервисы и приложения

Лабораторная работа: веб-приложения облачные сервисы Часть 1Упражнение 1: Создание веб-приложения в Azure Упражнение 2: Развертывание ASP.NET веб-приложения в Azure

Упражнение 3: Настройка веб-приложения в AzureЧасть 2

Упражнение 1: Создание воркер-роли (C# Class Library)Упражнение 2: Добавление ее в проект облачного сервисаУпражнение 3: Отладка воркер-роли облачного сервисаРасчётное время: 65 минут

Page 62: Azure - облачные сервисы и приложения

Сценарий лабораторной работыЧасть 1

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

Часть 2Логика работы Вашего приложения требует возможности генерации для каждого мероприятия документов в формате Word. С целью удобства последующего масштабирования Вы решили вынести эту функциональность в воркер-роль и обращаться к ней из веб-роли.

Page 63: Azure - облачные сервисы и приложения

Вопросы и ответыРекомендации

Web Deploy упрощает развертывание и делает его независящим от хостинга

ВопросыПриведите примеры сценариев масштабирования приложений по расписаниюПочему есть смысл хранить логи для нескольких веб-приложений централизовано?Какие изменения нужно сделать в существующем веб-приложении, чтобы сделать его веб-ролью облачного сервиса? Правда или ложь: параметры в файле Web.config для веб-роли не могут быть изменены после ее публикации на Azure Приведите пример веб-роли с внутренней точкой подключения?