Диссертация (1148251), страница 8
Текст из файла (страница 8)
РАБОЧАЯ РОЛЬ И ОЧЕРЕДЬ СООБЩЕНИЙЛюбое ASP.NET приложение, которое не работает с файловой системойнапрямую, может быть запущено в виде веб-роли. Таким образом, проект веброли—этоASP.NETпроект,дополненныйклассомWebRoleиконфигурационными файлами. В конфигурационных файлах задаются точкидоступа к роли, вид нижележащей операционной системы, а также количество итипвыделенныхвиртуальныхмашин.Запусквеб-ролизаключаетсявразворачивании и настройке средой Microsoft Azure требуемых виртуальныхмашин, после чего балансировщик нагрузки будет распределять по ним запросы.Как правило, при запуске веб-приложения требуется выполнение какой-тоинициализации (наполнение кэша, создание очередей сообщений и т.п.).
Этиоперации необходимо поместить в код Global.asax ASP.NET сайта. Однакоперезапуск какой-то виртуальной машины или добавление новой не требуетперезапускавсеговеб-приложенияиоперациизапускаилиостановкивиртуальной машины перехватываются в классе WebRole. В листинге 2 приведенпример, когда при старте виртуальной машины вносятся изменения в её IISсервер:36public class WebRole : RoleEntryPoint {public override bool OnStart() {using (var server = new ServerManager()) {server.ApplicationPoolDefaults.ProcessModel.IdleTimeout =new TimeSpan(0, 120, 00);server.CommitChanges();}return base.OnStart();}}ЛИСТИНГ 2.
ВНЕСЕНИЕ ВЕБ-РОЛЬЮ ИЗМЕНЕНИЙ В КОНФИГУРАЦИЮ IIS-СЕРВЕРАКак можно видеть, механизм разделения облачного приложения наразличные роли позволяет сделать их эластичными и масштабируемыми. Однакотакой подход неприменим для унаследованных приложений, а также в случаях,когда необходим доступ к операционной системе и сетевой инфраструктуре.Такие приложения следует разворачивать на арендованных виртуальныхмашинах, потеряв при этом возможность горизонтального масштабирования.1.3.2 Сетевая инфраструктураСетевая инфраструктура облачных провайдеров отвечает за безопасноесоединение облачных и частных (on-premises) локальных сетей друг с другом(Site-To-Site), либо организует соединение одного клиента с облачной сетью(Point-To-Site).
Также она ответственна за доставку контента от веб-сервера доконечного пользователя.Виртуальная закрытая сеть (Virtual Private Network, VPN) позволяетпрокладывать туннель (т.е. упорядоченный поток пакетов в обоих направлениях)по обмену трафиком между двумя хостами в публичной сети Интернет. В случаеSite-To-Site соединения все пакеты трафика из одной сети проходят через VPNшлюз (VPN gateway), который шифрует их, упаковывает для передачи по туннелюи посылает VPN-шлюзу в целевой локальной сети. Последний занимаетсяраспаковкой и дешифрацией пришедших пакетов, а затем отправляет их вцелевуюлокальнуюсеть.ПрисоединенииPoint-To-Siteпользовательустанавливает специальную программу, которая играет роль исходящего VPN-37шлюза, то есть шифрует и упаковывает для передачи по туннелю его трафик вцелевой VPN-шлюз, а также производит обратные операции для входящеготрафика.
Такая схема помогает избежать перехвата информации при её передачепо открытым узлам Интернет. У обоих облачных провайдеров есть технологии поорганизации VPN-доступа к арендованным облачным серверам: Microsoft AzureVirtual Network Service и Amazon Web Services Virtual Private Cloud (VPC) Service.Особенно это актуально в гибридных облачных сетях, когда какая-то частьсерверов находится на территории клиента, и тогда они объединяются соблачными в одну VPN сеть.
Кроме того, вполне возможно объединить черезVPN-сеть облачные серверы Azure с серверами в AWS.Благодаря безопасному обмену данными через Интернет, VPN-сетиобладают наименьшей стоимостью, однако иногда возникают ситуации, когдамежду сегментами сети необходимо передавать гигантские объемы данных. Вэтом случае производительности Интернет-канала может не хватить и требуетсяпостроить собственное прямое соединение (direct connection) между частной иоблачной сетью. Несмотря на высокую стоимость, преимуществами прямогосетевого соединения являются высокая пропускная способность, надежность иповышенная безопасность. Всё это можно организовать в рамках Microsoft AzureExpress Route Service и Amazon Web Services Direct Connect Service.Сеть доставки контента (Content Delivery Network, CDN) представляетсобойсовокупностьпрокси-серверов,накоторыеотправляетсязапроспользователя в первую очередь.
Эти серверы вначале отдают закэшированыйстатический контент (html-страницы, изображения, файлы и видео), а затемпереадресуют пользователя на основные серверы за динамическим содержимым.Имея сеть из таких прокси-серверов, каждый из которых расположен вгеографическом регионе пользователя, можно существенно повысить скоростьзагрузки и отклика веб-приложения. Сервисы Microsoft Azure Content DeliveryNetwork Service и Amazon Web Services CloudFront Service позволяют арендоватьCDN-сеть для веб-приложения.38Наконец, балансировщик нагрузки (load balancing) представляет собойспециальный маршрутизатор, который отслеживает состояние серверов вебприложенияи,приполучениизапросапользователя,направляетегосоответствующему серверу так, чтобы обеспечить минимальное время полученияответа. В зависимости от архитектуры системы, возможны различные стратегиивыбора сервера.1.
Преодоление отказа (failover) — все запросы передаются на основнойсервер до тех, пока он не откажет. После этого запросы обрабатываютзапасные сервера.2. Близость к пользователю (performance) — запрос отправляется серверу,географически наиболее близкому к пользователю.3. Обход по кругу (Round-Robin) — метод равномерного распределениянагрузки по серверам, когда каждый следующий запрос направляетсяследующему серверу.Таким образом, именно сервисы балансировки нагрузки Microsoft AzureTraffic Manager Service и Amazon Web Services Elastic Load Balancing Serviceпозволяют облачным веб-приложениям быть постоянно доступными для своихпользователей [126].1.3.3 Реляционные облачные СУБДОблачные технологии предоставляют возможности создания реляционныхбаз данных наряду с другими видами организации данных. Базы данныхиспользуютсядляпоиска,объединенияивыборкиданных,связанныхразличными соотношениями, по каким-либо критериям.
В том случае, когда базаданных размещена в облаке, она приобретает свойство эластичности, т.е.адаптацию под любой уровень нагрузки и любое количество данных.База данных может быть размещена в облаке как на IaaS, так и на PaaSуровнях. В первом случае арендуются виртуальные сервера, на которые39пользователем устанавливается нужная СУБД.
Этот вариант аналогиченустановке и настройке СУБД на обычном сервере и, поэтому, подходит дляпереноса существующей базы данных, а также использования нереляционныхСУБД. Кроме отсутствия необходимости адаптации базы данных, такой вариантобладает и экономической привлекательностью, так как оплачиваться будеттолько время работы соответствующих серверов. Более того, малонагруженныевеб-приложения могут разделять свою виртуальную машину с такой СУБД.Эластичность будет обеспечиваться подключением (на портале управления, либочерез REST API) более мощного оборудования или добавлением новых серверов.Несмотря на свою экономическую привлекательность, размещение базыданных на уровне IaaS перекладывает на пользователя всю сложностьадминистрированияисозданияотказоустойчивойархитектуры:созданиерезервных копий, обновление СУБД, распределение и синхронизация базыданных по нескольким серверам, размещение серверов в разных географическихрегионах и т.п.
Как можно видеть, перенос базы данных в облако на уровне IaaSдобавляеттольковозможностьвертикальногоигоризонтальногомасштабирования веб-приложения, а остальные вопросы могут быть решеныоблачными провайдерами только на уровне PaaS — предоставление собственнойоблачной СУБД в виде сервиса.Amazon Relational Database Service (RDS) предоставляет функциональностьследующих СУБД: Amazon Aurora, Oracle, Microsoft SQL Server, PostgreSQL,MySQL и MariaDB, в то время как Azure SQL основана только на одной MicrosoftSQL Server. В рамках этих сервисов пользователь создает базу данных, котораябудет размещена на серверах компаний Amazon или Microsoft, по крайней мере, втрех дублирующих экземплярах.
Так как у пользователя нет доступа коборудованию, операционной системе и программному окружению, где запущенаегобазаданных,товсёадминистрированиепроизводитсяоблачнымипровайдерами. Пользователь может определить регион размещения этих серверови настройки резервного копирования, а облачный провайдер будет ответственнымза устойчивость, безопасность, целостность и поддержание высокого времени40отклика базы данных. В дополнение к простоте обслуживания баз данных науровне PaaS, у пользователя есть доступ к статистике её использования инагрузки, что упрощает оптимизацию её схемы.
Таким образом, Amazon RDS иAzure SQL обеспечивают максимально высокую надежность базы данных и могутприменяться как в облачных приложениях, так и в частных. Однако при этомтарифицируется каждая транзакция и общий размер базы данных, что можетсильно повысить стоимость такого решения для ряда проектов по сравнению сразмещением на уровне IaaS.1.3.4 Облачное хранилище данныхКроме реляционных таблиц приложениям в облаке требуется доступ кдругим структурам данных: файлам, коллекциям сущностей, очередям событий,общим (shared) директориям, разделяемым между несколькими приложениями.Соответственно, облачное хранилище Microsoft Azure предлагает специальныетехнологии для надежного хранения и масштабируемого доступа к каждой изэтих структур данных [131].