Автор: Александр Белоцерковский (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. Дополнительное про сложные и безопасные пароли: http://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и перейдите на сайт http://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и перейдите на http://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="data source=[ENTER YOUR SQL SERVER NAME];initial catalog=AdventureWorks2012;Uid=AzureStore;Password=Azure$123;multipleactiveresultsets=True;App=EntityFramework""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. Перейдите на http://[YOUR-SERVICE-NAME].cloudapp.net/AzureStore. Service Name - имя, созданное при создании виртуальных машин с IIS.
MVC4 приложение в веб-ферме
2. В Searchвведите Classicи нажмите Search. После этого действия должен появиться список продуктов, чье имя удовлетворяет заданному критерию поиска.
Поиск по продуктам
Выводы
В этой лабораторной работе вы познакомились с тем, как можно развернуть простое веб-приложение ASP.NET MVC 4 на веб-сервер, расположенный в Windows Azure, с использованием SQL Server и балансировщика нагрузки.