Міграція сайтів в хмару разом з Azure Websites Migration Assistant



Хмарні технології все сильніше проникають в наше життя, дозволяючи легко і швидко розгортати складні технічні рішення на величезних обчислювальних потужностях за всього кілька кліків мишки. Основні гіганти IT ринку постійно покращують свої сервіси, представляючи все нові і нові можливості. Перевага хмар цілком очевидно — швидкість, потужність, масштабованість і легкість в налаштуванні. Це може бути відмінним рішенням, якщо ви починаєте новий проект або стартап.

Але що робити, якщо у вас вже є веб-сайт, який розміщений на ваших власних потужностях? Цей ресурс працює, до нього напевно підключена база даних, застосовані різні налаштування в конфіги і так далі. В такому випадку міграція в хмару — досить клопіткий процес. Навіть якщо ви дійсно розумієте, що на використанні хмари ви зможете виграти, не факт, що складність перенесення всього цього оточення може переважити дані переваги.

Для таких випадків компанія Microsoft представила свій новий інструмент — Azure Websites Migration Assistant. Це невелика програма, яка може зібрати необхідну інформацію про веб-сайті, розміщеному на IIS (починаючи з версії 6), проаналізувати її, а потім автоматично перенести всі налаштування, файли і, що вкрай важливо, навіть базу даних прямо в хмару Microsoft Azure.

У даній статті я на власному прикладі продемонструвати, що міграція сайту — це дійсно нескладно і виконується протягом декількох хвилин.

Підготовка
Я підготував веб-сайт і розмістив його на своєму локальному комп'ютері з IIS 8:



До речі, варто загострити увагу на тому, що мігрує саме веб-сайт, а не віртуальна директорія. В даному випадку крім Default Web Site у мене створений сайт migrations, який я і буду переносити. Це простий сайт ASP.NET, створений з допомогою шаблону в Visual Studio 2013. До нього підключена база даних, розміщена на локальному комп'ютері в SQL Server Express:



Структура БД проста і містить лише інформацію про користувача і ролях. Ця БД створюється автоматично разом з веб-сайтом. Ось як все виглядає в результаті:



Для сайту налаштовані bindings, щоб він відкривався за замовчуванням при виклику localhost:80. Звичайно, цей приклад не є супер складним, однак навіть у такому простому випадку самостійна міграція всіх файлів, налаштувань і БД зайняла б досить тривалий час (як мінімум день).

Azure Website Migration Assistant
Перше, що потрібно зробити — завантажити утиліту Azure Website Migration Assistant офіційного сайту. Вона являє собою просте ClickOnce додаток, виконане в стилі покрокового майстра.

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



Є два варіанти — локальний комп'ютер або віддалений сервер. Другий особливо корисний, якщо ви не маєте фізичного доступу до серверу з вашим веб-сайтом або установка додаткового софту там з тих чи інших причин неможлива.

У нашому випадку я вибираю перший варіант, і утиліта пропонує мені уточнити, який саме сайт я буду мігрувати:



Я не хочу переносити Default Web Site, оскільки там нічого немає, тому вибираю тільки сайт migrations.

Як тільки ви визначитеся з вибором і натиснете Next, буде проведений короткий аналіз вашого IIS і визначення ключових параметрів веб-сайту. Виглядає це приблизно так:



На цьому екрані перераховані основні налаштування сервера, такі як протокол і номер порту, по якому доступний сайт, пул застосунків, в якому виконується код, а також, зауважте, з'єднання з БД. Дана настройка (і не тільки вона) береться з web.config вашого сайту. Це означає, що, по-перше, Azure Website Migration Assistant знає про те, що ваш сайт працює з БД (і потім врахує це), а по-друге, він може перенести будь-які інші специфічні параметри конфігурації і застосувати їх в хмарі.

Наступний крок (який викликається по кнопці Upload), покаже вам звіт про готовність вашого сайту до міграції. Цей звіт складається на сервері в хмарі і виявляє потенційні розбіжності між вашій локальній конфігурацією і тим, що може працювати в Azure.



На даний момент є список відомих обмежень, які перераховані в спеціальному розділі на офіційному Azure Websites Migration Assistant. У моєму випадку все перевірки виявилися успішними і міграція може бути продовжено:



Після натискання кнопки Begin Migration, починається найцікавіше — робота з Azure. Вас попросять залогуватися під своїм «хмарним» аккаунтом. Не бачу причин не зробити цього :)



Після того, як ви успішно авторізуетесь, утиліта зможе отримати дані про вашому хмарі і ресурсах, які в ньому є. На наступному кроці ви зможете вибрати, в яку підписку ви хочете додати новий веб-сайт, і в якому регіоні він повинен знаходитися:



Я виберу West Europe як найбільш близький. Кнопка Start Migration насправді ще поки не почне безпосередньо міграцію, а відправить на черговий екран налаштувань:



І ось саме цей екран я вважаю найкрутішим у всій утиліті. Пам'ятаєте, я казав, що Azure Websites Migration Assistant зчитує параметри з config, в тому числі рядок з'єднання з БД? Так от, це робиться не просто так, оскільки на цьому екрані ви можете створити локальної БД, в яку потім перенесуться схема і дані з локальної БД. Досить вказати ім'я сервера, логін/пароль адміністратора.

У нижній половині вказуються параметри майбутнього сайту — його назву та назву БД. Також в розділі Customize settings можна налаштувати параметри потужностей майбутнього сайту. На вибір пропонуються всі варіанти, доступні в звичайному порталі управління Azure:



Наступний крок — створення хмарних потужностей: веб-сайту і сервера БД:





Після того, як все буде завершено, залишається останній крок — перенесення даних. При натисканні на Begin Publish всі локальні файли вашого веб-сайту будуть перенесені в хмару, разом зі структурою і даними БД:





Перевірка
Щоб переконатися, що все працює коректно, достатньо зайти за адресою хмарного сайту і порівняти з локальною версією:



Зверніть увагу на URL — це вже не localhost, а повноцінний веб-сайт в інтернеті. А також подивіться на праву верхню частину сайту, де написано Hello: aaa@aaa.com. Інформація про користувача береться з бази даних, і той факт, що цей користувач видно в хмарному сайті говорить про те, що та схема БД, і її дані і параметри підключення — все було перенесено Azure Websites Migration Assistant без проблем і відновлено у хмарі в первозданному вигляді.

Додатково можна перевірити, що відбувається в порталі управління:



Новий сайт доступний і пов'язаний з БД migrations. Здорово, що ще сказати!

кінець
Ця утиліта не фінальний реліз, і буде розвиватися і далі. Вже відомі деякі обмеження:
  • доступні тільки порти 80 і 443 (обмеження самого Azure), тому якщо ви використовуєте щось інше, подумайте про шляхи обходу
  • аутентифікація може бути тільки анонімної або через веб форми, а Windows Authentication може бути здійснена через Microsoft Active Directory
  • компоненти COM і кастомні ISAPI фільтри також не перенесуться автоматично, потрібно буде включати їх руками
  • повний список тут
Весь код даної утиліти викладений в вільний доступ на Codeplex. Так що якщо дуже хочеться, можна доопрацювати її самостійно. Ну і також майже на всіх кроках утиліти є посилання на форму зворотнього зв'язку — не полінуйтеся написати відгук розробникам, щоб вони могли покращити інструмент в майбутніх релізах:



Вдалої вам міграції!

P.S. А якщо у вас ще немає Azure, але хочеться спробувати, то тут можна знайти безкоштовний тріал

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.