Створення WindowsAzure Virtual Machine для хостингу web-додатків, Microsoft Docs

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

Крок 0. Отримання доступу.

Для тих, хто полінувався перейти за посиланням на початку статті, я нагадаю, як можна отримати безкоштовний доступ до нових можливостей Windows Azure.

Крок 1. Створення віртуальної машини

Після того, як ми отримали доступ до компонентів Windows Azure, саме час почати їх використовувати. Для цього в порталі керування виберіть пункт Virtual Machines і внизу сторінки натисніть велику кнопку плюс (не схибите):

Нам буде доступно два пункти: Quick Create та From Gallery. Насправді різниця між ними невелика, тому розглянемо повніший шлях. Вибираємо From Gallery:

windowsazure

У цьому діалоговому вікні ми маємо кілька варіантів на вибір. Почнемо з того, що окрім готових образів ОС (видно на скріншоті), нам також надається можливість завантажити свій власний образ або VHD-диск, з якого згодом створиться віртуальна машина. Це буде зручно для великих проектів, де потрібно створити ферму однакових машин, не заморочуючись із налаштуванням кожної з них. А нас зараз це не цікавить, тому звернемо свій погляд на доступні готові образи.

На вибір пропонується кілька варіантів. Є Windows Server 2008 R2 (двох версій), лінуксові машинки, спеціалізований сервер під SQL Server (про цей образ, до речі, нещодавно писали на хабрі) та герой нашого сьогоднішнього експерименту – Windows Server 2012. Чому саме він? Це особисто мій вибір. Оскільки я використовую Windows Azure поки більше з ознайомлювальною метою, то я вирішив, щобуло б непогано спробувати і «новинку сезону» – новий сервер 2012 року.

Отже, вибираємо потрібну нам ОС та тиснемо стрілку знизу. Потрапляємо на наступний екран майстра створення віртуальної машини:

Тут усе зрозуміло. Треба вказати ім'я VM, пароль адміністратора та вибрати одну із запропонованих конфігурацій майбутнього «заліза». Вибір досить непоганий і може покрити більшість вимог щодо продуктивності для різних типів проекту. Я вибрав Small, що цілком мене влаштовує. Йдемо далі.

На третьому етапі майстра все теж досить зрозуміло:

Для початку треба визначитися із призначенням майбутньої машини. Якщо ми хочемо використовувати її як самостійний ресурс (а зараз ми саме цього і хочемо), то вибираємо Standalone. РежимConnect To, як написано в підказці, дозволить нам підключити цю ВМ до якоїсь мережі для розділення навантаження. Нас це поки що не цікавить.

Потім треба придумати ім'я хоста, яким буде доступна машина. Тут треба не плутати ім'я машини на попередньому етапі і це ім'я хоста. Ім'я машини – це ім'я комп'ютера у Windows. Ім'я хоста - це субдомен в домені cloudapp.net, за яким здійснюватиметься доступ і управління сервером. Це ім'я має бути унікальним, тому нам тут же в майстрі надається підказка про доступність або зайнятість того чи іншого імені.

На четвертому кроці взагалі нічого робити не потрібно, залишаємо все як є:

Натискаємо на галку внизу і віртуальна машина почне створюватися.

Крок 2. Управління віртуальною машиною

Після того, як ви створили віртуальну машину, вона буде доступна у відповідному списку:

virtual

Обов'язково дочекайтесь, коли статус машини зміниться з Provisioning на Running. Це означатиме, що машина готова довикористання. Якщо натиснути на її ім'я, то відкриється панель керування віртуальною машиною:

Внизу сторінки є кнопка Connect. Вона допоможе вам отримати правильний rdp файл для підключення до цієї машини за допомогою віддаленого робочого столу. Настав час зайти на новий сервер і покерувати ним.

Крок 3. Керування сервером

Насправді, в цій статті я не докладно розповідатиму про адміністрування Windows Server 2012. Оскільки в назві цієї статті згадуються web-додатки, ось саме цим ми й займемося — встановимо IIS.

При першому логіні на новий сервер нам відкриється вікно Server Manager:

За промовчанням, у Windows Server 2012 служби IIS не включені, тому їх потрібно додати. Вибираємо пунктAdd roles and features, після чого відкривається майстер додавання ролей. Три рази тиснемо Next (особливо цікаві шанують, що там пишуть, але зараз нас це не цікавить), і в дереві, що відкрилося, вибираємо Web Server (IIS). Далі нам необхідно обов'язково вибрати потрібні компоненти IIS, які дозволять запускати на ньому програми ASP.NET MVC. Точних параметрів налаштування я писати не буду, кожен сам вирішить, що саме йому потрібно. Обов'язково треба включити ASP.NET, інше до смаку.

Тиснемо кілька разів Next, налаштовуємо майбутню роль як нам треба і після завершення процесу встановлення наш сервер з радістю готовий приймати гостей. Переконатися в цьому можна, перейшовши localhost/. Повинно з'явитися щось на кшталт цього:

Крок 4. Відкриття доступу

Все чудово, ось ми нарешті налагодили веб-сервер, розмістили на ньому якусь програму і вона відкривається по localhost. Як же тепер відкрити його ззовні? Насправді, все досить просто. Напевно, ви ще на етапі створення віртуальної машини намагалися натискати на посилання в панелі управління,яка має вигляд .cloudapp.net. І, напевно, у вас нічого не відобразилося. Все тому, що до віртуальної машини закрито доступ ззовні, причому не на рівні фаєрволу операційної системи, а на рівні інфраструктури Windows Azure.

Якщо ви в панелі управління віртуальною машиною подивіться нагору, побачите там три пункти меню: Dashboard, Endpoints і Configure. З першим ми розібралися на самому початку, з останнім все зрозуміло - там налаштовуються параметри "заліза", а що таке Endpoints давайте розберемося.

В закладці Endpoints ми можемо задавати те, які протоколи та які порти будуть відкриті для даної віртуальної машини та на які фізичні порти вони будуть перенаправлені:

За замовчуванням у цьому списку буде лише один порт — той, яким ви з'єднуєтеся через Remote Desktop. Причому публічний порт може бути будь-яким, що, мабуть, зроблено для більшої безпеки. Для того, щоб відкривати веб-програми на даній віртуальній машині, необхідно відкрити 80-й порт. На скріншоті вище показано. Після цього дії за посиланням .cloudapp.net ви повинні будете побачити ваш власний додаток. Маленької перемоги досягнуто.

Крок 5. Привласнюємо власний домен

На попередньому кроці ми зробили все, щоб програма запрацювала в хмарі і була доступна ззовні. Однак погодьтеся, що було б зовсім не круто, якби ми могли звертатися до нього лише за субдоменом і ніяк не могли б привласнити свій один або кілька доменів.

Звичайно ж, це зробити можливо і досить просто. Для цього офіційна документація радить два різні шляхи і обидва пов'язані з редагуванням зони DNS. Перший має на увазі те, що ви створюєте CNAME запис, в якому вказуєте, що, наприклад, www.mydomain.com буде перенаправлятися наmywinazure.cloudapp.net. Цей метод простий, але надто прямолінійний. Якщо у вас на сервері розміщено кілька веб-додатків, або на основному домені може бути кілька субдоменів, то цей спосіб не спрацює. Благо, що є другий, якісніший спосіб.

Крок 6. Бонус

Файли програми я переніс безболісно. Але коли я згадав про базу, то спочатку трохи засмутився. Я відразу уявив собі, що мені доведеться спочатку завантажити дистрибутив, потім відвести під його встановлення якесь місце. Запустити службу БД на і без того не найшвидшій машині. Мати БД та веб-додаток на одному сервері. Перенести дані з одного сервера на інший. Ну і ще кілька таких неприємностей. Не сказати, щоб це було пряме так вже складно, але, чесно кажучи, ліниво.

І тут я подумав — а що якщо я нацькую програму, розміщену у віртуальній машині, на БД, яка була створена в рамках хостингу сайту на Web Sites? Адже з точки зору додатка дана БД точно така сама, якби вона була встановлена ​​на локальному сервері. Сказано зроблено. Я змінив web.config належним чином, вказавши як сервер БД той самий сервер, який у мене існував у Windows Azure. І що б ви думали? Воно працює. Тепер я маю окремий сервер додатків і окрему базу даних, які можна незалежно один від одного заміщати, розширювати і дзеркати в разі потреби. Дякую Azure за такі приємності.

Висновок

Якщо комусь інетерсно подивитися, що за додаток працює в хмарі, то ось посилання: prog-facts.ru іss10.ru (друге навів просто як приклад, що два домени відмінно направляються на один хостинг).

Дякую за увагу!

Дякуємо Георгію Могелашвілі, Microsoft MCP за підготовку статті