Подключение приложения PaaS к IaaS с помощью виртуальной сети

Приложения, создаваемые на платформе Windows Azure, могут быть очень разнообразны как по бизнес-составляющей и роду предлагаемого сервиса и функциональности, так и с технической точки зрения. Возможности IaaS (создания собственной контролируемой виртуальной инфраструктуры в облаке) открывают новые возможности для архитектуры приложений в Windows Azure: приложение может использовать как PaaS, так и IaaS функциональность (например, когда SQL Server развернут отдельно на IaaS машине, а веб-приложение в Cloud Service). В этом случае возникает вопрос: каким образом оптимально реализовать взаимодействия компонентов PaaS и IaaS, в том числе и с точки зрения сетевой задержки. Объединение в виртуальную сеть будет означать для Windows Azure, что компоненты работают в одной связке и плотно взаимодействуют друг с другом. Таким образом, Windows Azure сможет правильно роутить трафик (см. рисунок ниже).

image

image

Ниже представлена пошаговая инструкция настройки виртуальной сети для объединения PaaS и IaaS компонентов.

Сценарий:

  1. Создание виртуальную машину с SQL Server в Windows Azure IaaS.
  2. Развертывание примера веб-приложения в новой облачной службе.
  3. Настройка обмена данными между облачной службой и виртуальной машиной SQL Server через виртуальную сеть.

Задание 1: создание affinity-группы

В первую очередь необходимо создать affinity-группу для виртуальной сети.

  1. Откройте браузер, перейдите на сайт https://manage.windowsazure.com. Когда появится запрос, войдите со своими учетными данными Windows Azure. На портале Windows Azure щелкните Networks (Сети), Affinity Groups (Территориальные группы) и внизу нажмите Create (Создать) .

  2. Назовите территориальную группу именем myag, добавьте описание и выберите Region (Регион). Нажмите кнопку, чтобы создать территориальную группу.

image

Задание 2: создание новой виртуальной сети

Теперь необходимо создать новую виртуальную сеть.

  1. На портале Windows Azure щелкните Networks, Virtual Networks (Виртуальные сети) и внизу нажмите Create.

  2. Укажите имя виртуальной сети, например MyVNET, введите описание и щелкните кнопку со стрелкой, чтобы продолжить.

    image

  3. Для Address Space (Адресное пространство) укажите значение 192.168.0.0/16 и добавьте подсеть с именем AppSubnet с префиксом 192.168.1.0/24.

    image

  4. Оставьте параметры по умолчанию для DNS и нажмите Finish (Готово) .

    image

Упражнение 1: создание виртуальной машины SQL Server

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

Задание 1: создание виртуальной машины при помощи портала Windows Azure

  1. В веб-браузере откройте портал Windows Azure и войдите с данными учетной записи Microsoft, которая связана с учетной записью Windows Azure.

  2. Щелкните New (Создать) и выберите опцию Virtual Machine (Виртуальная машина), а затем From Gallery (Из галереи).

    image

  3. На странице VM OS Selection (Выбор ОС виртуальной машины) в меню слева щелкните Platform Images (Образы платформы) и из списка ОС образа выберите SQL Server 2012. Щелкните стрелку, чтобы продолжить.

  4. На странице VM Configuration (Настройка виртуальной машины) введите имя виртуальной машины в поле Name, введите пароль администратора в поля Admin Password (Пароль администратора) и Confirmation (Подтвердить) , в поле Size (Размер) выберите размер виртуальной машины — Extra Small (Очень маленький) . Нажмите Next (Далее) , чтобы продолжить.

    Примечание. Эти же учетные данные нужно будет указывать на следующих этапах работы при подключении виртуальной машины посредством удаленного рабочего стола.

    image

  5. На странице VM Mode (Режим виртуальной машины) выберите Standalone Virtual Machine (Автономная виртуальная машина) , затем укажите уникальное DNS Name (Имя DNS). Выберите созданную ранее виртуальную сеть из списка Region/Affinity Group/Virtual Network (Регион/Территориальная группа/Виртуальная сеть) и нажмите Next.

    image

  6. На странице VM Options (Параметры виртуальной машины) выберите подсеть виртуальной сети APPSUBNET и нажмите Finish, чтобы создать новую виртуальную машину.

    image

  7. В разделе Virtual Machines (Виртуальные машины) отобразится созданная вами виртуальная машина со статусом provisioning (подготовка) . Дождитесь изменения статуса на Running, затем переходите к следующим действиям.

    Примечание. Процесс подготовки виртуальной машины может занять от 8 до 10 минут.

  8. Теперь необходимо будет создать и подключить пустые диски данных для сохранения журналов и файлов данных SQL Server, а также добавить конечную точку. Для этого в разделе Virtual Machines выберите виртуальную машину SQL Server, созданную в этом задании.

  9. На панели виртуальной машины в меню внизу страницы щелкните Attach (Подключить) и выберите Attach Empty Disk (Подключить пустой диск) .

    image

  10. На странице Attach Empty Disk в пункте Size укажите 50 ГБ и создайте диск.

  11. Дождитесь завершения процесса подключения диска. Повторите шаги с 8 по 10, чтобы создать второй диск.

  12. Вы увидите три диска для виртуальной машины: один для ОС и два других для Данных и Журналов.

    Примечание. Прежде чем диски данных появятся на панели виртуальной машины на портале Azure, может пройти несколько минут.

Задание 2: настройка экземпляра SQL Server 2012

  1. На портале управления Windows Azure в меню слева щелкните Virtual Machines.

    image

  2. Выберите виртуальную машину из списка машин и щелкните Connect (Подключить), чтобы выполнить подключение через Remote Desktop Connection (Подключение к удаленному рабочему столу).

  3. На виртуальной машине откройте Server Manager (Диспетчер серверов) через меню Start | All Programs | Administrative Tools (Пуск | Все программы | Администрирование).

  4. Разверните пункт Storage (Хранилище) и выберите Disk Management (Управление дисками).

    image

  5. Перейдите к дискам, которые были созданы при помощи функции Attach Empty Disk на портале управления Windows Azure. Правой кнопкой мыши щелкните первый диск и выберите Initialize Disk (Инициализировать диск).

  6. В диалоговом окне Initialize Disk оставьте значения по умолчанию и щелкните OK.

  7. Правой кнопкой мыши щелкните незанятое место первого диска и выберите New Simple Volume (Создать простой том) .

    image

  8. Выполните шаги мастера New Simple Volume Wizard (Создание простого тома). Когда появится запрос указать Volume Label (Метку тома) , используйте SQLData.

  9. Дождитесь завершения процесса для первого диска. Повторите шаги 15 и 16 для второго диска. В качестве Volume Label укажите SQLLogs.

  10. Disk Management (Управление дисками) должен содержать диски SQLData и SQLLogs аналогично следующему рисунку.

    image

  11. Откройте SQL Server Configuration Manager (Диспетчер конфигурации SQL Server) через меню Start | All Programs | Microsoft SQL Server 2012 | Configuration Tools (Пуск | Все программы | Microsoft SQL Server 2012 | Средства настройки)

  12. Разверните пункт SQL Server Network Configuration (Сетевая конфигурация SQL Server) и выберите Protocols for MSSQLSERVER (Протоколы для MSSQLSERVER) [эта опция может измениться, если при установке SQL Server вы использовали другое имя экземпляра]. Убедитесь, что протоколы Shared Memory (Общая память), Named Pipes (Именованные каналы) и TCP/IP включены. Чтобы включить протокол, щелкните имя протокола правой кнопкой мыши и выберите Enable (Включить).

    image

  13. Перейдите к узлу SQL Server Services (Службы SQL Server), правой кнопкой мыши щелкните SQL Server (MSSQLSERVER) и выберите Restart (Перезапустить) .

Задание 3: установка базы данных AdventureWorks

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

  1. Чтобы включить функцию загрузки из Internet Explorer, необходимо обновить конфигурацию усиленной безопасности — Internet Explorer Enhanced Security Configuration. На виртуальной машине Azure откройте Server Manager (Диспетчер серверов) через меню Start | All Programs | Administrative Tools (Пуск | Все программы | Администрирование).

  2. В окне Server Manager щелкните Configure IE ESC (Настроить IE ESC) в разделе Security Information (Сведения о безопасности).

    image

  3. В диалоговом окне Internet Explorer Enhanced Security (Усиленная безопасность Internet Explorer) отключите усиленную безопасность для Administrators (Администраторов) и нажмите OK.

    image

    Примечание. Изменение конфигурации Internet Explorer Enhanced Security небезопасно. Этот пункт включен в задание только для выполнения данной практической работы. Правильно будет загрузить файлы локально, а затем скопировать их в папку общего доступа или непосредственно на виртуальную машину.

  4. Откройте SQL Server Management Studio через меню Start | All Programs | Microsoft SQL Server 2012 | SQL Server Management Studio (Пуск | Все программы | Microsoft SQL Server 2012 | SQL Server Management Studio).

  5. С учетной записью Windows подключите экземпляр SQL Server 2012 по умолчанию.

  6. Теперь необходимо обновить места хранения базы данных по умолчанию так, чтобы DATA и LOGS были разделены. Для этого щелкните экземпляр SQL Server правой кнопкой мыши и нажмите Properties (Свойства).

  7. На левой панели выберите Database Settings (Параметры базы данных).

  8. Перейдите к разделу Database default locations (Места хранения, используемые базой данных по умолчанию) и обновите значения по умолчанию, указав диски, которые вы подключили в предыдущем задании.

    image

  9. Через Проводник Windows создайте следующие папки: F:\Data, G:\Logs и G:\Backups.

  10. В данной практической работе используется база данных AdventureWorks. Откройте Internet Explorer и перейдите на сайт https://msftdbprodsamples.codeplex.com/, чтобы загрузить образцы баз данных SQL Server 2012. На нужной странице щелкните SQL Server 2012 DW и загрузите файл данных Adventure Works 2012. Загрузите файл в папку F:\Data.

  11. Щелкните файл базы данных правой кнопкой мыши и откройте свойства. Щелкните unblock (разблокировать)

  12. Добавьте образец базы данных AdventureWorks на ваш SQL Server. Для этого откройте SQL Server Management Studio, подключитесь к (local) с учетной записью Windows. Найдите узел вашего экземпляра сервера SQL Server и разверните его.

  13. Правой кнопкой мыши щелкните папку Databases (Базы данных) и выберите Attach (Присоединить).

    image

  14. В диалоговом окне Attach Databases (Присоединение баз данных) нажмите Add (Добавить). Перейдите к диску данных и выберите файл данных Adventure Works.

  15. Теперь в сведениях базы данных (database details) выберите строку AdventureWorks Log (Журнал AdventureWorks) и щелкните Remove (Удалить).

    image

  16. Нажмите OK, чтобы присоединить базу данных.

  17. Создайте полнотекстовый каталог для базы данных. Эта функция понадобится для приложения MVC, которое вы развернете в следующем упражнении. Для этого разверните пункт Storage в базе данных AdventureWorks.

  18. Правой кнопкой мыши щелкните кнопку Full Text Catalogs (Полнотекстовые каталоги) и выберите New Full-Text Catalog (Создать полнотекстовый каталог) .

    image

  19. В диалоговом окне New Full-Text Catalog в пункте Name (Имя) задайте значение AdventureWorksCatalog и нажмите OK.

    image

  20. Правой кнопкой мыши щелкните AdventureWorksCatalog и выберите Properties. Выберите пункт меню Tables/Views (Таблицы или представления) . Добавьте таблицу Production.Product в список Table/View objects assigned to the Catalog (Объекты таблиц и представлений, связанные с данным каталогом). Отметьте пункт Name в eligible columns (подходящие столбцы) и щелкните OK.

    image

  21. Включите Mixed Mode Authentication (Смешанный режим проверки подлинности) для экземпляра SQL Server. Для этого в SQL Server Management Studio щелкните экземпляр сервера правой кнопкой мыши и выберите Properties.

  22. На правой панели выберите страницу Security (Безопасность), а затем выберите SQL Server and Windows Authentication mode (Проверка подлинности SQL Server и Windows) в разделе Server Authentication (Серверная проверка подлинности). Щелкните OK, чтобы сохранить изменения.

    image

  23. Перезапустите экземпляр SQL Server. Для этого щелкните экземпляр SQL Server правой кнопкой мыши и нажмите Restart (Перезапустить).

  24. Добавьте нового пользователя для приложения MVC4, которое вы будете разворачивать в следующем упражнении. Для этого разверните папку Security внутри экземпляра SQL Server. Правой кнопкой мыши щелкните папку Logins (Имена входа) и выберите New Login (Создать имя входа) .

    image

  25. В разделе General (Общее) в пункте Login name (Имя входа) введите AzureStore. Выберите опцию SQL Server authentication (Проверка подлинности SQL Server) и в поле Password (Пароль) введите Azure$123.

    Примечание. Если на этом этапе вы укажете иное имя пользователя или пароль, необходимо будет соответствующим образом обновить файл web.config для приложения MVC 4, которое вы будете использовать в следующем упражнении.

  26. Снимите флажок в пункте Enforce password policy (Требовать использование политики паролей), чтобы не пришлось изменять пароль пользователя при первом входе, а для параметра Default database (База данных по умолчанию) укажите AdventureWorks.

    image

  27. Перейдите в раздел User Mapping (Сопоставление пользователей) . Сопоставьте пользователя с базой данных AdventureWorks и щелкните OK.

    image

  28. Разверните базу данных AdventureWorks внутри папки Databases. В папке Security разверните пункт Users (Пользователи) и дважды щелкните пользователя AzureStore.

  29. Выберите страницу Membership (Членство) и отметьте роль db_owner (владелец БД) для пользователя AzureStore, затем нажмите OK.

    image

    Примечание. Приложение, которое вы будете развертывать в следующем упражнении, для управления сеансами использует Universal Providers (Универсальные поставщики). При первом запуске приложения поставщик создаст таблицу сеансов внутри базы данных AdventureWorks. По этой причине вы назначаете пользователю AzureStore роль db_owner. После первого запуска приложения эту роль пользователя можно удалить, так как эти права ему больше не понадобятся.

  30. Закройте SQL Server Management Studio.

  31. Чтобы разрешить приложению MVC4 доступ к базе данных SQL Server, в Windows Firewall (Брандмауэре Windows) необходимо добавить Inbound Rule (Правило для входящего подключения) для запросов SQL Server. Для этого откройте Windows Firewall with Advance Security (Брандмауэр Windows в режиме повышенной безопасности) через меню Start | All Programs | Administrative Tools (Пуск | Все программы | Администрирование).

  32. Выберите пункт Inbound Rules (Правила для входящего подключения), щелкните его правой кнопкой мыши и выберите New Rule (Новое правило) .

    image

  33. В мастере New Inbound Rule Wizard выберите Port в качестве Rule Type (Типа правила) и щелкните Next.

    image

  34. На шаге Protocols and Ports (Протоколы и порты) выберите Specific local ports (Определенные локальные порты) и введите значение «1433» . Щелкните Next, чтобы продолжить.

    image

  35. На шаге Action (Действие) убедитесь, что выбрана опция Allow the connection (Разрешить подключение) и щелкните Next.

    image

  36. На шаге Profile (Профиль) оставьте значения по умолчанию и щелкните Next.

  37. Укажите Name правила для входящего подключения — SQLServerRule и щелкните Finish.

    image

  38. Закройте окно Windows Firewall with Advanced Security (Брандмауэр Windows в режиме повышенной безопасности) , затем закройте Remote Desktop Connection (Подключение к удаленному рабочему столу).

Упражнение 2: развертывание простого приложения MVC4

В рамках этого упражнения вы должны будете настроить простое веб-приложение для подключения к экземпляру SQL Server (который был создан в прошлом упражнении); затем необходимо будет опубликовать приложение в Windows Azure и запустить его в облаке.

Задание 1: настройка приложения MVC4 для подключения к экземпляру SQL Server

В рамках этого задания вы должны будете изменить строку подключения так, чтобы она указывала на экземпляр SQL Server, созданный в предыдущем упражнении; а также обновить настройки конфигурации, включив сетевую связь между веб-ролью и экземпляром SQL Server.

  1. В веб-браузере откройте портал Windows Azure и войдите с данными учетной записи Microsoft, которая связана с учетной записью Windows Azure.

  2. На левой панели щелкните Virtual Machines и перейдите к виртуальной машине SQL Server, созданной в предыдущем упражнении. Выберите виртуальную машину и нажмите Connect.

  3. Когда появится запрос сохранить или открыть файл .rdp, щелкните Open (Открыть) и войдите с учетными данными администратора, которые вы указывали при создании виртуальной машины.

  4. После входа откройте командную строку и введите ipconfig, чтобы просмотреть IP-конфигурацию машины.

  5. Запишите IP-адрес машины, он понадобится вам позже.

    image

  6. Откройте Visual Studio с правами администратора через меню Start | All Programs | Microsoft Visual Studio 2010 (Пуск | Все программы | Microsoft Visual Studio 2010) — правой кнопкой мыши щелкните ярлык Microsoft Visual Studio 2010 и выберите Run as administrator (Запуск от имени администратора).

  7. Откройте решение IaaSDeploySimpleApp.sln, расположенное в папке Ex02-DeploySampleApp, под папкой Source в данной работе.

  8. Скомпилируйте решение, чтобы загрузить необходимые пакеты.

  9. Откройте файл Web.config и найдите узел connectionStrings в конце файла. Замените значения атрибута Data Source (Источник данных) IP-адресом виртуальной машины SQL Server, который вы записали на шаге 2.

    XML

      <connectionStrings>    <add name="DefaultConnection" connectionString="Data Source=[ENTER-IP-ADDRESS];initial catalog=AdventureWorksLT2008R2;Uid=AzureStore;Password=Azure$123;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />    <add name="AdventureWorksEntities" connectionString="metadata=res://*/Models.AdventureWorks.csdl|res://*/Models.AdventureWorks.ssdl|res://*/Models.AdventureWorks.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=[ENTER-IP-ADDRESS];initial catalog=AdventureWorksLT2008R2;Uid=AzureStore;Password=Azure$123;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />   </connectionStrings>  
    
  10. Чтобы включить обмен данными между веб-ролью и виртуальной машиной SQL Server, необходимо настроить конфигурацию веб-роли таким образом, чтобы она подключалась к той же виртуальной сети, что и виртуальная машина SQL Server. Для этого откройте ServiceConfiguration.Cloud.cscfg в проекте AzureStore.Azure и добавьте выделенную цветом настройку:

    XML

     <?xml version="1.0" encoding="utf-8"?> <ServiceConfiguration serviceName="AzureStore.Azure" xmlns="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*" schemaVersion="2012-05.1.7"> <Role name="AzureStore"> <Instances count="1" /> <ConfigurationSettings> <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" /> </ConfigurationSettings> </Role>  <NetworkConfiguration>   <VirtualNetworkSite name="MyVNET" />   <AddressAssignments>    <InstanceAddress roleName="AzureStore">    <Subnets>    <Subnet name="AppSubnet" />    </Subnets>    </InstanceAddress>   </AddressAssignments>   </NetworkConfiguration>  </ServiceConfiguration> 
    

Задание 2:  публикация   приложения MVC4  в Windows Azure

В рамках этого задания необходимо будет опубликовать веб-приложение в Windows Azure с помощью Visual Studio.

  1. В Visual Studio правой кнопкой мыши щелкните проект AzureStore.Azure и выберите Package (Пакет) .

    image

  2. В диалоговом окне Package Windows Azure Application (Упаковать приложение Windows Azure) проверьте, что для Service Configuration (Конфигурация службы) выбрано Cloud (Облако), а для Build Configuration (Конфигурация сборки)Release (Выпуск). Затем нажмите кнопу Package.

    image

  3. Дождитесь завершения процесса упаковки, затем переходите к следующему шагу.

  4. В веб-браузере откройте портал Windows Azure и войдите с данными учетной записи Microsoft, которая связана с учетной записью Windows Azure.

  5. Щелкните расположенную внизу страницы ссылку New (Новая) , выберите Cloud Service (Облачная служба), затем Custom Create (Создать свою).

  6. В окне Create Your Cloud Service (Создание своей облачной службы) введите AzureStore в поле Url, выберите myag из списка Region/Affinity Group (Регион/Территориальная группа) и установите флажок напротив опции Deploy a Cloud Service package now (Выполнить развертывание облачной службы сейчас).

    image

  7. В окне Publish you Cloud Service (Опубликовать облачную службу) введите имя для нового развертывания (например, AzureStore). Введите местоположение вашего пакета и файлов конфигурации (обычно они находятся в папке облачного проекта bin\Release\app.publish) и отметьте опцию Deploy even if one or more roles contain a single instance (Выполнить развертывание, даже если одна роль или более содержат единственный экземпляр). Затем нажмите кнопу Finish.

    image

  8. Дождитесь завершения развертывания и подготовки Cloud Service (Облачной службы).

  9. Когда статус Cloud Service изменится на Ready (Готов) , щелкните имя службы, чтобы перейти на страницу панели. Далее щелкните ссылку Site Url (URL-адрес сайта) на панели быстрого осмотра Quick Glance.

    image

  10. В браузере отобразится главная страница примера приложения Azure Store. В поле Search (Поиск) впишите Classic и щелкните Search. Отобразятся все продукты, которые удовлетворяют критерию поиска. Облачное приложение подключается к SQL Server посредством общедоступной конечной точки для извлечения списка продуктов.

    image