AZR 201. Практическое использование Windows Azure Virtual Machines

Автор: Александр Белоцерковский (Windows Azure MVP)

Все лабораторные с TechEd доступны по ссылке.

Введение

Использование платформы Windows Azure в качестве IaaS позволит вам создавать инфраструктуру и управлять ею, быстро и просто развертывая мощности. Получите преимущества для собственного бизнеса с помощью облачной инфраструктуры, сокращающей расходы на лицензирование, развертывание мощностей и резервирование.

В этой лабораторной работе вы увидите, как можно развернуть простое веб-приложение ASP.NET MVC 4 на веб-сервер, расположенный в Windows Azure, с использованием SQL Server и балансировщика нагрузки, а также познакомитесь с командлетами PowerShell, которые можно использовать для целей автоматизации этих процессов.

Цели

После этой лабораторной работы вы научитесь:

· Создавать веб-ферму, используя портал управления Windows Azure

· Настраивать балансировщик нагрузки в IIS

· Разворачивать простое MVC-4 приложение, использующее SQL Server

· Создавать виртуальную машину с SQL Server и возможностью полнотекстового поиска

Предварительная настройка

Для выполнения работы вам необходимо:

· Наличие подписки Windows Azure с активированной функциональностью Virtual Machines Preview – зарегистрироваться для бесплатного тестового периода.

Если вы используете PowerShell, необходимо выполнить импортирование модуля с использованием командлета

Import-Module 'C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1'

А также получить файл настроек публикации по адресу

https://windows.azure.com/download/publishprofile.aspx

Упражнения

Эта лабораторная работа включает в себя следующие упражнения:

1. Создание виртуальных машин с IIS

2. Создание виртуальной машины с SQL Server

3. Развертывание простого MVC4 приложения

Примерное время на выполнение лабораторной работы: 90 минут.

Инструктор: Белоцерковский Александр.

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

В этом упражнении вы научитесь создавать виртуальные машины в Windows Azure и настраивать на них IIS.

Задание 1: Создание виртуальных машин с IIS

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

Примечание: Вы можете использовать командлет PowerShell для создания виртуальной машины:

1. Перейдите на https://manage.windowsazure.com/. Войдите в систему, используя учетные данные своего аккаунта Windows Azure.

2. Нажмите New | Compute | Virtual Machine | From Gallery.

Создание виртуальной машины

3. На Virtual machine operating system selection нажмите Platform Images и выберите образ Windows Server 2008 R2 SP1, October 2012. Нажмите ОК.

4. На VMConfiguration введите имя виртуальной машины (например, "iisvm1") и пароль администратора. Нажмите ОК.

Создание виртуальной машины - конфигурация

Примечание: Используйте сложный пароль для администратора, так как виртуальные машины доступны из Интернет по DNS. Дополнительное про сложные и безопасные пароли: https://www.microsoft.com/security/online-privacy/passwords-create.aspx

5. На VM Mode выберите Standalone Virtual Machine, введите DNS Name, выберите Storage Account или оставьте стандартный выбор Use Automatically Generated Storage Account, и выберите Region/Affinity Group/Virtual Network. Нажмите ОК.

Создание виртуальной машины - VMMode

6. На VMOptions оставьте стандартные значения и нажмите Finish.

Создание виртуальной машины - опции

7. На VirtualMachines вы увидите свою виртуальную машину с пометкой Starting ( provisioning ) . Дождитесь перехода ее состояния в Running.

Создание виртуальных машин для веб-фермы IIS

Примечание: развертывание виртуальной машины может занять до 10 минут.

8. Создайте вторую виртуальную машину, нажав New | VirtualMachine | FromGallery.

9. На VMOSSelection нажмите PlatformImages и выберите образ WindowsServer 2008 R2 SP1, October 2012. Нажмите ОК.

10. На VMConfiguration введите VirtualMachineName (например, "iisvm2"), пароль администратора и выберите размер. Нажмите ОК.

11. На VM Mode выберите Connect to existing Virtual Machine и укажите созданную ранее машину. Выберите Storage Account или оставьте стандартный выбор Use Automatically Generated Storage Account и нажмите ОК. Так вы добавляете новую виртуальную машину в Cloud Services, созданный для предыдущей виртуальной машины, что позволяет находиться этим машинам в одной сети.

Создание виртуальной машины - VMMode

12. На VMOptions оставьте стандартные значения и нажмите ОК.

13. Дождитесь окончания развертывания второй виртуальной машины.

Примечание: развертывание виртуальной машины может занять до 10 минут.

14. После создания второй виртуальной машины создайте точку входа на 80 порту: нажмите на имени виртуальной машины iisvm1 и на Dashboardнажмите Endpoints.

15. Выберите Add Endpoint.

Настройка конечной точки входа

16. На Specify endpoint details укажите значение Name как webport, Protocol как TCP и Public Port с Private Port как 80. Нажмите ОК.

Настройка конечной точки входа

Примечание: создание новой точки входа может занять некоторое время.

17. Запустите процесс создания новой точки входа для второй виртуальной машины для реализации балансировки нагрузки.

18. Выберите Add Endpoint, выберите Load Balance Traffic On An Existing Endpoint. Укажите созданную ранее точку входа и нажмите ОК.

Балансировка нагрузки на точку входа

19. На New Endpoint Details укажите значение Name как webport и Private Port как 80. Нажмите на кнопку для создания точки входа.

Примечание: создание новой точки входа может занять некоторое время.

20. В VirtualMachines перейдите на Dashboardпервой виртуальной машины (iisvm1) и нажмите Endpoints.

21. Выберите webport. Убедитесь что значение LoadBalancer равно Yes.

Проверка балансировки нагрузки

22. Нажмите EditEndpoint и проверьте, активирована ли балансировка нагрузки. Проверьте также вторую виртуальную машину.

Проверка балансировки нагрузки

Примечание: с использованием PowerShell можно создать и провести предварительную настройку виртуальной машины можно с помощью следующего кода

$vmname2 = 'iisvm1'

$vmname3 = ‘iisvm2'

$vm2 = New-AzureVMConfig -Name $vmname2 -InstanceSize ExtraSmall -ImageName $image |

Add-AzureProvisioningConfig -Windows -Password $adminPassword |

Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'datadisk1' -LUN 0 |

Add-AzureEndpoint -Protocol tcp -LocalPort 80 -PublicPort 80 -Name 'web' `

-LBSetName 'lbweb' -ProbePort 80 -ProbeProtocol http -ProbePath '/'

$vm3 = New-AzureVMConfig -Name $vmname3 -InstanceSize ExtraSmall -ImageName $image |

Add-AzureProvisioningConfig -Windows -Password $adminPassword |

Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'datadisk2' -LUN 0 |

Add-AzureEndpoint -Protocol tcp -LocalPort 80 -PublicPort 80 -Name 'web' `

-LBSetName 'lbweb' -ProbePort 80 -ProbeProtocol http -ProbePath '/'

New-AzureVM -ServiceName $cloudSvcName -VMs $vm2,$vm3

Задание 2: настройка виртуальных машин с IIS

В этом задании вы настроите виртуальные машины с IIS.

1. Нажмите VirtualMachines на портале управления.

2. В списке виртуальных машин выберите первую созданную вами виртуальную машину и нажмите Connect.

3. Нажмите Open и войдите в систему как администратор.

4. Откройте Start | All Programs | Administrative Tools | Server Manager.

5. Выберите Roles.

Server Manager

6. Нажмите Add Roles.

Добавление серверной роли

7. На Before you Begin нажмите Next.

8. На Select Server Roles выберите Application Server и Web Server (IIS) . Нажмите AddRequiredFeatures для установки необходимой функциональности и нажмите Next.

Add Roles Wizard

9. На ApplicationServer прочтите сведения и нажмите Next.

10. На Select Role Services выберите для Application Server опцию Web Server (IIS) Support и убедитесь, что отмечен .NET Framework 3.5.1. Нажмите AddRequiredRoleServices для установки необходимой функциональности и нажмите Next .

Add Roles Wizard

11. На WebServer ( IIS ) изучите предоставленную информацию. Нажмите ОК.

12. Нажмите Next.

Add Roles Wizard

13. На Confirm Installation Selections нажмите Install.

AddRolesWizard

Примечание: установка и настройка могут занять несколько минут.

1. Закройте Remote Desktop Connection.

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

Примечание: установить IIS можно с использованием командной строки, выполнив следующую команду

CMD /C START /w PKGMGR.EXE /l:log.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-ODBCLogging;IIS-Security;IIS-BasicAuthentication;IIS-WindowsAuthentication;IIS-DigestAuthentication;IIS-ClientCertificateMappingAuthentication;IIS-IISCertificateMappingAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementScriptingTools;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;WAS-WindowsActivationService;WAS-ProcessModel;IIS-FTPServer;IIS-FTPSvc;IIS-FTPExtensibility;IIS-WebDAV;IIS-ASPNET;IIS-NetFxExtensibility;WAS-NetFxEnvironment;WAS-ConfigurationAPI;IIS-ManagementService;MicrosoftWindowsPowerShell

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

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

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

В этом задании вы создадите новую виртуальную машину на портале управления в том же Cloud Service, в котором развернуты виртуальные машины с IIS.

1. Нажмите New | Virtual Machine | From Gallery.

2. На VM OS Selection нажмите Platform Images и выберите образ SQL Server 2012.

3. На VM Configuration введите имя Virtual Machine Name (i.e. "sqlvm1"), пароль администратора и выберите размер. Нажмите ОК.

4. На VMMode выберите ConnecttoexistingVirtualMachine и выберите первую созданную вами виртуальную машину. Нажмите ОК.

5. На VMOptions нажмите ОК.

6. Дождитесь развертывания виртуальной машины, что может занять до 10 минут.

Задание 2: Подключение пустых образов дисков

В этом задании вы создадите два пустых дисков с данными и присоедините их к существующей виртуальной машине с использованием портала управления Windows Azure.

1. Выберите в секции VirtualMachines виртуальную машину с SQL Server, созданную ранее.

2. Нажмите Dashboard, Attach, Attach Empty Disk.

Подключение пустого диска

3. На AttachEmptyDisk укажите размер Size как 50 GB и создайте диск.

4. Дождитесь окончания создания диска и повторите последовательность для создания второго диска.

5. Теперь у вас должно быть три диска – один для OS, второй для данных, третий для логов.

Примечание: диск может появиться спустя несколько минут после создания.

Подключенные диски с данными

6. Теперь вы должны отформатировать диски данных. Нажмите Connect и подключитесь с помощью загруженного файла к серверу.

7. Откройте Start | All Programs | Administrative Tools | Server Manager.

8. Разверните Storage и выберите Disk Management.

Управление дисками

9. В Initialize Disk нажмите OK.

10. Нажмите правой кнопкой на неразмеченном пространстве и нажмите NewSimpleVolume.

Управление дисками

11. В NewSimpleVolumeWizard нажимайте ОК, когда вас спросят о значении VolumeLabel , введите SQLData.

12. Дождитесь окончания настройки и повторите шаги 11, 12 для второго диска, указав для него VolumeLabel как SQLLogs.

13. В DiskManagement должны отображаться два диска: SQLData и SQLLogs.

Управление дисками

Примечание: Не закрывайте RemoteDesktopConnection.

Примечание: Вы также можете динамически добавить диск данных к виртуальной машине с использование командлетов PowerShell

$vmname = 'mytestvm1'

Get-AzureVM -Name $vmname -ServiceName $cloudSvcName |

Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'datadisk1' -LUN 0 |

Add-AzureDataDisk -CreateNew -DiskSizeInGB 50 -DiskLabel 'translogs1' -LUN 1 |

Update-AzureVM

Задание 3: Настройка SQL Server в виртуальной машине

В этом задании вы настроите SQL Server 2012. You will create the database that will be used by the MVC4 application and add Full-Text Search capabilities to it. Additionally, you will create a SQL Server user for the MVC4 website.

1. Создайте следующие папки: F :\ Data , G :\ Logs и G :\ Backups.

2. Откройте Start | All Programs | Microsoft SQL Server 2012 | SQL Server Management Studio

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

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

5. На левой панели выберите DatabaseSettings** .

6. Перейдите к разделу Databasedefaultlocationsи обновите значения по умолчанию, указав диски, которые вы подключили в предыдущем задании.

Определение расположения базы данных по умолчанию

7. Нажмите правой кнопкой мыши на экземпляре SQL Server и нажмите Restart.

8. В ObjectExplorer нажмите правой кнопкой мыши на сервер и нажмите Restart.

9. Откройте Start | All Programs | Administrative Tools | Server Manager.

10. В Server Manager нажмите Configure IE ESC в секции Security Information.

11. В Internet explorer Enhanced Security выберите off для Administrators и нажмите OK.

InternetExplorerEnhancedSecurity

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

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

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

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

Подключение базы данных

15. Правой кнопкой мыши щелкните папку Databases и выберите Attach.

Подключение базы данных AdventureWorks

16. В сведениях базы данных (database details) выберите строку AdventureWorks Log и нажмите Remove.

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

Образец базы данных AdventureWorks

18. Создайте полнотекстовый каталог для базы данных. Для этого разверните Storage в базе данных AdventureWorks. Правой кнопкой мыши нажмите кнопку FullTextCatalogsи выберите NewFull** - TextCatalog**.

Примечание: Эта функция понадобится для приложения MVC, которое вы развернете в следующем упражнении.

Созданиеновогополнотекстовогокаталога

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

Созданиеновогополнотекстовогокаталога

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

Созданиеновогополнотекстовогокаталога

21. Проверьте наличие нового каталога в папке Full - TextCatalogs.

Созданиеновогополнотекстовогокаталога

22. Для добавления пользователя для MVC4 приложения, откройте Security вашего экземпляра SQL Server. Нажмите правой кнопкой мыши на Logins и нажмите NewLogin.

Создание нового пользователя

23. В разделе Generalв пункте Loginnameвведите AzureStore . Выберите опцию *SQLServerauthentication***и в поле Passwordвведите Azure $123.

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

24. Снимите флажок в пункте Enforcepasswordpolicy , чтобы не пришлось изменять пароль пользователя при первом входе, для параметра Defaultdatabase**укажите AdventureWorks.

Создание нового пользователя

25. Перейдите в раздел UserMapping**. Сопоставьте пользователя с базой данных AdventureWorks и щелкните OK .

Сопоставление пользователя и базы данных AdventureWorks

26. Разверните базу данных AdventureWorks внутри папки Databases. В папке Security разверните пункт Users и дважды нажмите на пользователе AzureStore.

27. Выберите страницу Membershipи отметьте роль db _ owner для пользователя AzureStore, затем нажмите OK.

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

28. Включите MixedModeAuthentication для экземпляра SQL Server. Для этого в SQLServerManagementStudio нажмите экземпляр сервера правой кнопкой мыши и выберите Properties.

29. На правой панели выберите страницу Security , а затем выберите SQL Server and Windows Authentication mode в разделе Server Authentication . Нажмите OK.

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

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

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

33. Выберите пункт InboundRules** , нажмите на нем правой кнопкой мыши и выберите NewRule**.

Создание InboundRule

34. В NewInboundRuleWizard выберите Port в качестве RuleType**и щелкните Next.

Создание Inbound Rule

35. На ProtocolsandPorts выберите Specificlocalportsи введите значение «1433» . Нажмите Next.

Создание Inbound Rule

36. На шаге Actionубедитесь, что выбрана опция Allow the connectionи нажмите Next.

Создание InboundRule

37. На Profileоставьте значения по умолчанию и нажмите Next .

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

Создание Inbound Rule

39. Закройте Windows Firewall with Advanced Security.

Примечание : Убедитесь что для экземпляра сервера включены протоколы Named Pipes и TCP/IP, что можно проверить в SQL Server Configuration Manager в SQL Server Network Configuration. Обратите внимание, что после включения протокола экземпляр SQL Server необходимо перезапустить.

Закройте RemoteDesktopConnection.

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

В этом упражнении вы развернете простое ASP.NET MVC 4 приложения в IIS на виртуальной машине в Windows Azure.

Примечание: для реализации высокой доступности вам необходимо настроить SQL Server в availability set и SQL Server Mirroring между экземплярами.

Задание 1: Развертывание простого MVC4 приложения

В этом задании вы развернете MVC4 приложение в IIS в виртуальной машине.

1. На портале управления перейдите в VirtualMachines.

2. Выберите виртуальную машину iisvm1, которую создавали в первом упражнении, и нажмите Connect, после чего с помощью загруженного файла подключитесь к серверу.

3. Перейдите в Start | All Programs | Administrative Toolsи запустите Server Manager.

4. Нажмите Configure IE ESC в секции Security Informatio.

Internet Explorer Enhanced Security

5. В Internet explorer Enhanced Security нажмите off для Administrators и нажмите OK.

InternetExplorerEnhancedSecurity

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

6. Откройте InternetExplorer и перейдите на https://go.microsoft.com/fwlink/?linkid=186916. Загрузите и установите . NETFramework 4.0.

7. Распакуйте AzureStore.zip в Source\Assets\AzureStore.

8. Откройте файл Web.config в папке AzureStore в Source\Assets в папке этой лабораторной. В конце файла замените код со строкой подключения на следующий код, заменив соответствующее поле имени SQL Server на имя вашего SQL Server.

XML

< connectionStrings >

< addname = "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 YOUR SQL SERVER NAME];initial catalog=AdventureWorks2012;Uid=AzureStore;Password=Azure$123;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName = "System.Data.EntityClient" />

< addname = "DefaultConnection" connectionString = "Data Source=[ENTER YOUR SQL SERVER NAME];initial catalog=AdventureWorks2012;Uid=AzureStore;Password=Azure$123;MultipleActiveResultSets=True" providerName = "System.Data.SqlClient" />

</ connectionStrings >

9. Вернитесь в виртуальную машину и перейдите в папку C :\ inetpub\wwwroot , после чего скопируйте сюда MVC4 приложение из папки Source \ Assets \ AzureStore.

Папка wwwroot

10. Откройте Start | All Programs | Administrative Tools | Internet Information Services (IIS) Manager.

11. В панели Connections разверните Default Web Site. Вы должны увидеть скопированную папку AzureStore.

IIS Manager

12. Нажмите правой кнопкой мыши на папке AzureStore и нажмите Convert to Application.

IIS Manager – преобразование в приложение

13. В Add Application нажмите OK.

Add Application

14. Выберите ApplicationPools и нажмите два раза на DefaultAppPool.

Изменение Default Application Pool

15. В Edit Application Pool измените версию .Net Framework на v4.0 и нажмите OK.

Изменение Application Pool

Изменение Default Application Pool

16. Закройте Internet Information Server (IIS) Manager и Remote Desktop Connection.

Повторите последовательность действий для второй виртуальной машины, созданной в первом упражнении (iisvm2).

Проверка

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

1. Перейдите на https://[YOUR - SERVICE - NAME].cloudapp.net/AzureStore. Service Name - имя, созданное при создании виртуальных машин с IIS.

MVC4 приложение в веб-ферме

2. В Search введите Classic и нажмите Search. После этого действия должен появиться список продуктов, чье имя удовлетворяет заданному критерию поиска.

Поиск по продуктам

Выводы

В этой лабораторной работе вы познакомились с тем, как можно развернуть простое веб-приложение ASP.NET MVC 4 на веб-сервер, расположенный в Windows Azure, с использованием SQL Server и балансировщика нагрузки.