Блог Георгия Могелашвили

Azure Website Migration Assistant

Azure Website Migration Assistant

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

Но что делать, если у вас уже есть веб-сайт, который размещен на ваших собственных мощностях? Этот ресурс работает, к нему наверняка подключена база данных, применены различные настройки в конфиге и так далее. В таком случае миграция в облако – довольно хлопотный процесс. Даже если вы действительно понимаете, что на использовании облака вы сможете выиграть, не факт, что сложность переноса всего этого окружения может перевесить данные преимущества.

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

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

Подготовка

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

IIS 8
Кстати, стоит заострить внимание на том, что мигрирует именно веб-сайт, а не виртуальная директория. В данном случае помимо Default Web Site у меня создан сайт migrations, который я и буду переносить. Это простой сайт ASP.NET, созданный с помощью шаблона в Visual Studio 2013. К нему подключена база данных, также размещенная на локальном компьютере в SQL Server Express:

База данных в SQL Server Express
Структура БД простая и содержит лишь информацию о пользователя и ролях. Эта БД создается автоматически вместе с веб-сайтом. Вот как все выглядит в итоге:

Локальный веб-сайт
Для сайта настроены bindings, чтобы он открывался по умолчанию при вызове http://localhost:80. Конечно, данный пример не является супер сложным, однако даже в таком просто случае самостоятельная миграция всех файлов, настроек и БД заняла бы довольно продолжительное время (как минимум день).

Azure Website Migration Assistant

Первое, что нужно сделать – скачать утилиту Azure Website Migration Assistant с официального сайта. Она представляет собой простое ClickOnce приложение, выполненное в стиле пошагового мастера.

На первом шаге вам будет предложено выбрать, где искать сайт, который вы хотите мигрировать:

Azure Website Migration Assistant
Есть два варианта – локальный компьютер или удаленный сервер. Второй особенно полезен, если вы не имеете физического доступа к серверу с вашим веб-сайтом или установка дополнительного софта там по тем или иным причинам невозможна.

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

Azure Website Migration Assistant
Я не хочу переносить Default Web Site, поскольку там ничего нет, поэтому выбираю только сайт migrations.

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

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

Следующий шаг (который вызывается по кнопке Upload), покажет вам отчет о готовности вашего сайта к миграции. Этот отчет составляется на сервере в облаке и выявляет все потенциальные нестыковки между вашей локальной конфигурацией и тем, что может работать в Azure.

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

Azure Websites Migration Assistant
После нажатия кнопки Begin Migration, начинается самое интересное – работа с облаком. Вас попросят залогиниться под своим “облачным” аккаунтом. Не вижу причин не сделать этого :)

Azure Websites Migration Assistant
После того, как вы успешно авторизуетесь, утилита сможет получить данные о вашем облаке и ресурсах, которые в нем есть. На следующем шаге вы сможете выбрать, в какую подписку вы хотите добавить новый веб-сайт, и в каком регионе он должен находиться:

Azure Websites Migration Assistant
Я выберу West Europe как самый близкий. Кнопка Start Migration на самом деле еше пока не начнет непосредственно миграцию, а отправит на очередной экран настроек:

Azure Websites Migration Assistant
И вот именно этот экран я считаю самым крутым во всей утилите. Помните, я говорил, что Azure Websites Migration Assistant считывает настройки из web.config, в том числе строку соединения с БД? Так вот, это делается не просто так, поскольку на данном экране вы можете создать облачную БД, в которую потом перенесутся схема и данные из локальный БД. Достаточно указать имя сервера и логин/пароль администратора.

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

Azure Websites Migration Assistant
Следующий шаг – создание облачных мощностей: веб-сайта и сервера БД:

Azure Websites Migration Assistant

Azure Websites Migration Assistant
После того, как все будет завершено, остается последний шаг – перенос данных. При нажатии на Begin Publish все локальные файлы вашего веб-сайта будут перенесены в облако, вместе со структурой и данными БД:

Azure Websites Migration Assistant

Azure Websites Migration Assistant

Проверка

Чтобы убедиться, что все работает корректно, достаточно зайти по адресу облачного сайта и сравнить с локальной версией:

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

Дополнительно можно проверить, что происходит в портале управления:

Azure Portal
Новый сайт доступен и связан с БД migrations. Здорово, что еще сказать!

Не конец

Эта утилита – не финальный релиз, и будет развиваться и дальше. Уже известны некоторые ограничения:

  • доступны только порты 80 и 443 (ограничения самого Azure), поэтому если вы используете что-то другое, подумайте о путях обхода
  • аутентификация может быть только анонимной или через веб формы, а Windows Authentication может быть осуществлена через Azure Active Directory
  • компоненты COM и кастомные ISAPI фильтры также не перенесутся автоматически, нужно будет включать их руками
  • полный список тут

Весь код данной утилиты выложен в свободный доступ на Codeplex. Так что если очень хочется, можно доработать ее самостоятельно. Ну и также почти на всех шагах утилиты есть ссылка на форму обратной связи – не поленитесь написать отзыв разработчикам, чтобы он могли улучшить инструмент в будущих релизах:

Azure Websites Migration Assistant
Удачной вам миграции!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>