2013-04-17 3 views
2

Так что я имею в виду окунать ноги в бассейне AzureКак трудно перейти от IaaS к PaaS на Azure

Наш веб-приложение Люкс скоро будет чистой ASP.Net + SQL SERVER Affair

По разным причинам проще сначала создать виртуальную машину SQL и сначала запустить все оттуда.

Как трудно это будет для ...

  • ... мигрировать SQL от VM и в любом "облачных сервисов" или "Управление данными"?
  • ... перенести пакет WebApps с виртуальной машины и на «веб-сайты»?

Я понимаю, что, достигнув этой миграции, обновления уровня ОС перестают быть моей проблемой, так как они будут обрабатываться службой. Таким образом, на этом этапе я смогу выбросить оригинальную виртуальную машину :)

+1

Мы перенесли ~ 95% нашего корпоративного пакета продуктов SaaS на предложения PaaS от Azure. Это было много работы, но я очень рад, что мы это сделали! Моя конечная (на данный момент) впечатления таковы: 1) рентабельность инвестиций в веб-роли окупается ** ОЧЕНЬ ** быстро! 2) Ограничения SQL Azure довольно раздражают (особенно отсутствие «хороших» решений для резервного копирования). 3) Если вы не хотите инвестировать в автоматическое развертывание с самого начала, не беспокойтесь. Вы ДОЛЖНЫ иметь это! – Jaxidian

+0

Что такое автоматическое развертывание? и как они относятся к Azure? – Rob

+0

@Rob: Изучите непрерывную интеграцию и постройте серверы. TFS может это сделать, а Дженкинс - еще один популярный. В конечном счете, здесь много, МНОГО различных вариантов, и это ОГРОМНАЯ беседа, которая здесь не подходит. Пойдите Google вокруг, и это должно помочь вам LOT! – Jaxidian

ответ

1

Только вчера Microsoft объявила о своем намерении принять также решения Iaas, а не только решение Saas на своей платформе Azure. http://weblogs.asp.net/scottgu/archive/2013/04/16/windows-azure-general-availability-of-infrastructure-as-a-service-iaas.aspx

О миграции, это действительно зависит. Мы работаем с механизмом распространения: TFS + Octopus, поэтому развертывание очень простое и работает на Iaas или SQL Azure, это не имеет большого значения. Есть и другие вещи, которые следует учитывать при переходе в Саас. Вероятно, ваш код должен быть реорганизован, если он не ориентирован на Saas, или ваше приложение может иметь очень высокую стоимость хостинга по сравнению с Azure.

+1

Уточнение: план (и предварительный просмотр) IaaS был анонсирован в июне 2012 года. Вчерашнее объявление состояло в том, что сервис переходит в производство, что означает соглашения об уровне обслуживания, а также официальные цены, новые размеры виртуальных машин, а также выпуск продукции виртуальных сетей (также в предварительном просмотре с июня 2012 года). –

2

Будьте осторожны при работе с SQL на виртуальной машине, это не решение высокой доступности. Лазурные виртуальные машины склонны к перезапуску время от времени. Если у вас нет нескольких виртуальных машин, работающих под управлением SQL Server, в группе доступности или у вас есть какая-то настройка зеркалирования и балансировки нагрузки, у вас не будет решения с высокой доступностью. Я тоже изначально предпочитал маршрут IaaS на PaaS, в конце концов, это казалось ложной экономикой, так как миграция IaaS в PaaS - это такая же работа, как и миграция на PaaS. В конце концов я решил потратить время на оптимизацию моего приложения для PaaS, то есть перенос долговременного хранения на blobs, внедрение временной обработки ошибок и повторной логики и т. Д.

То, что вы предлагаете, конечно же возможно, но с несколькими VM для обеспечения высокой доступности SQL занимает немного работы и стоит дорого! Есть чтение следующего руководства, это было очень полезно для меня, когда я начал процесс миграции:

Top 7 Concerns of Migrating a .NET Application to Azure

+1

Что сказал этот парень. «Надежные» Azure VMs требуют много работы! Я думаю, что наиболее официальное решение занимает 2-3 виртуальных машины и в конечном итоге объединяет их вместе. Для 98% людей это, безусловно, НЕ то, что вы хотите сделать. Тем не менее, перемещение базы данных SQL в SQL Azure также является очень большим скачком веры. В этом участвует многоголосец.Хотя это, скорее всего, ваша конечная цель, если вы быстро перейдете к ней, пожалуйста, протестируйте тестовый тест! И изучите ограничения. Кроме того, администраторы баз данных склонны ненавидеть SQL Azure, потому что есть так много вещей обслуживания, которые вы просто не можете сделать. – Jaxidian

+1

Это действительно прыжок веры! и я во-вторых, нужно проверить! Я все еще работаю над оптимизацией всех наших запросов (через 3 месяца) и пытается разработать набор инструментов для поддержки нашей БД один раз в Azure. Даже запуск резервного копирования - это минное поле по сравнению с тем, что вы можете сделать в SQL Server. Но да, дьявольски проверить и устранить как можно больше сомнений. С положительной стороны вы, надеюсь, в конечном итоге получите очень масштабируемое решение, поэтому не откладывайте! Разработка на аппаратных средствах производительности может привести к неаккуратным кодам, облако заставляет вас это осознавать. – QFDev

+0

Еще один комментарий +1 к резервной копии! Я буду гораздо более тупым и ровным, скажем, что встроенные резервные решения Azure ** ужасны ** прямо сейчас. Например, ** единственный возможный способ получения транзакционно-согласованной резервной копии - это процесс, который занимает почти 10 минут на каждый GB. Это означает, что 8 часов для базы данных 50 ГБ и 24 часа для базы данных 150 ГБ. Наша БД составляет 50 ГБ, а 8-часовой процесс резервного копирования не является вариантом, поэтому мы используем опцию, которая не является транзакционной, но, к счастью, этого нам достаточно. Мы также используем решение Red Gate для его автоматизации. Обычно это занимает ~ 1,5 часа. – Jaxidian

5

Это не точно ответить на ваши вопросы, но это могло бы помочь обучить Вас на несколько вопросов, чтобы спросить и дает вам толчок из ворот. Это были все уроки, извлеченные до, во время или после нашей миграции наших систем в Azure. Теперь, когда мы там, у нас есть база данных размером ~ 50 ГБ с ~ 6 службами, работающими в ~ 30 экземплярах. Пока наша резервная копия базы данных ведет себя, общая сумма усилий по обновлению всего составляет менее часа (и может быть намного меньше, если у нас не было много гарантий, чтобы заставить нас знать о том, что происходит во время процесс миграции - мы не хотим, чтобы он тоже был просто для развертывания, чтобы защитить нас от нас самих).

Подготовка к миграции системы Azure:

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

  • Вы должны понимать, что «высокая доступность» делает не значит «безошибочный». На самом деле, в средах с высокой доступностью обычно есть и более ошибок, с которыми вы должны справиться. Например, если у вас есть запрос, переходящий через сеть на сервер, на котором только что была загружена материнская плата, и он был отключен, этот сетевой запрос будет неудачным. Обычно это не проблема, которую вы кодируете в «стандартных» серверных приложениях. Чтобы сделать это еще дальше, что, если эта неудачная сеть для подключения к базе данных, которая возвращается в пул соединений? Это приведет к тому, что соединение будет отравлено и сломано в следующий раз, когда кто-то вытащит его, независимо от будущего состояния этого сервера, который пошел в пуф! Есть несколько дополнительных вещей, о которых можно беспокоиться, потому что вы больше не зависите от одной сети с 4 серверами, но теперь они зависят от сотен сетей с тысячами серверов. Этот сценарий ошибок 0,05% будет происходить намного чаще для вас, чем вы когда-либо испытывали в прошлом, и вам действительно нужно знать об этом!
  • Вы должны использовать зависимость-инъекции, чтобы легко изменить ситуацию. Правильное разделение опасений изменится, что кажется очень сложным, стало очень легко в Azure.
  • Вы должны использовать архитектуры для «высокой доступности». Например, веб-приложение, которое сломается при работе в веб-ферме, также сломается в Azure, но веб-приложение, предназначенное для работы в веб-ферме, будет очень легко запускаться в Azure.
  • Для всех ваших приложений необходимо иметь автоматическое развертывание и преобразования конфигурации. Все остальное просто неустойчиво, если это не более чем один маленький веб-сайт или что-то в этом роде.
  • В зависимости от ваших потребностей, вы можете сделать это по этапам. Если латентность базы данных не является чем-то большим, возможно, гибридный подход (через VPN от Azure к вашему центру обработки данных) является приемлемым для того, чтобы ваши приложения были запущены в Azure, когда вы позже переносите свою базу данных. Или, возможно, наоборот. То, что мы делали, заключалось в том, чтобы сохранить первичные приложения и базу данных в нашем центре обработки данных, но сначала добавить в Azure вторичные приложения. Затем некоторые основные приложения (которые поразили производительность за месяц до), а затем нашу базу данных и важные приложения. Эта окончательная миграция наверняка сделана в течение очень долгого уик-энда и не так много сна, но сейчас SOO намного приятнее, когда мы закончили!

Перенос приложений на Azure:

Это в конечном счете, очень сильно зависит от того, что ваше приложение или делает, и каждый сценарий имеет различные шаги/проблемы/выгоды. Я не собираюсь рассказывать об этом глубоко, кроме как сказать: «Используйте Google, это твой друг!». Кроме того, для нас получение наших приложений в Azure было самым большим выигрышем по сравнению с нашими данными. ROI в нашей миграции приложений был меньше месяца между хостинговыми расходами, лицензированием и усилиями по управлению. Вместо того, чтобы делать пару дней для настройки сервера, теперь я могу потратить целый день на создание совершенно новой и дублированной среды всех наших SaaS-приложений/баз данных/etc и их запуск на ~ 25 различных экземплярах Cloud!

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

  • Если у вас есть проблемы приложений в ОС Windows 2012, юмор меня и попробуйте в Windows 2008 R2. В некоторых образцах 2012 года, которые они подготовили, есть несколько ошибок. Это невероятно тривиально переключаться взад-вперед!
  • Идите, сделайте свой журнал 1000x лучше, чем сейчас. Если вы не сделаете этого сейчас, вы пожалеете об этом.
  • Не зависеть от 100% от простой в использовании «Azure Logging». Он работает достаточно хорошо, но он более или менее требует, чтобы ваши приложения запускались успешно и абсолютно бесполезны при отладке задач запуска. Если у вас нет альтернативы, вы будете тратить много, много часов, просто отлаживая глупые небольшие проблемы, когда ваше приложение запустится. К тому моменту, когда вы закончите с этим, вы могли бы легко добавить еще 5 других фреймворков регистрации и иметь удивительно потрясающую систему ведения журнала, а также запущенное приложение вместо того, чтобы показывать только одно приложение за такое же время. Действительно, сделайте это! (Профилирование также является хорошей идеей, хотя у Mini-Profiler есть проблемы с балансировкой нагрузки, если у вас есть несколько экземпляров.)
  • Если вы добавляете новые конечные точки в развертывание (порты и т. Д.), То вы не можете просто «обновить», существующее развертывание. Вы должны удалить его (развертывание, а не службу) и установить с нуля. Вы можете удалить Staging, развернуть на Staging, а затем поменять местами.
  • Если у вас есть приложения WCF, притворитесь, что вы не знаете о службах активации Windows. По умолчанию они отключены в Azure. Вы можете либо взломать их, чтобы включить их (сценарии запуска), либо создать собственное приложение для самостоятельного хостинга. Мы сами принимаем так, чтобы мы могли более легко настраивать конфигурации сервисов после развертывания (редактировать файлы web.config не так легко, как в Azure). Веб-службы работают в «IIS» в Azure, но TCP, именованные каналы и т. Д. Нет.
  • Приобретайте и добавляйте блок приложений с переходными ошибками (или что-то подобное) на все, с чем вы общаетесь. Если вы не сделаете это сейчас, вы пожалеете об этом.
  • Пойдите, сделайте свою вырубку лучше! Действительно, действительно, ДЕЙСТВИТЕЛЬНО сделайте это!

Перенос базы данных SQL Server для Azure:

Получение базы данных вверх в Azure это немного болезненный процесс. Существует не быстрый и простой способ просто получить его там и заставить его работать. Некоторым людям приходится совершать какие-то серьезные изменения, в то время как другие просто должны придумать несколько невежественных вещей здесь и там. Однако, независимо от того, насколько большой или небольшой ваша база данных, вы действительно ДЕЙСТВИТЕЛЬНО должны уделять много времени на ее тестирование. Проверьте процесс миграции. Проверьте свои скрипты, чтобы подготовить базу данных. Проверьте работоспособность и стабильность базы данных в облаке. Проверьте свои процедуры резервного копирования. Проверьте свои процедуры обновления. Проверьте процедуры восстановления резервной копии. Испытайте ВСЕ, потому что я гарантирую вам, что вы найдете некоторые сюрпризы!

Схема:

  • Go узнать обо всех ограничениях SQL Azure. Нет кучи и т. Д. Узнайте их, прежде чем начинать! Пойди, узнай их сейчас! Все они в основном очень разумные.
  • Знайте, что ограничение 2GB T-Log! Это означает, что некоторые очень большие индексы никогда не могут быть восстановлены!(это говорит о том, что наша таблица с 30 ГБ еще не ударила)
  • Чтобы развернуть схему, перейдите в SSMS для локальной базы данных и используйте функцию «Задачи -> Извлечь уровень данных ...» (она находится в разных области меню в разных версиях SSMS). Возьмите этот файл и войдите в SSMS для своей базы данных Azure и используйте функцию «Развертывание уровня данных». (Это поможет вам уловить недостатков Azure, которые вы не соблюдаете, если этот процесс не удается.) Это самый простой способ получить пустую версию вашей базы данных в Azure.
  • Используйте инструмент, такой как Redgate SQL Compare, чтобы проверить вашу работу (вам нужно настроить пару параметров, например WITH NOCHECK, чтобы получить чистое сравнение).
  • Вам нужно будет очистить пользователей, схемы, сломанные sprocs и т. Д., Прежде чем это удастся. (Это хорошо!)

данных:

  • Go узнать обо всех ограничениях SQL Azure. Изучите их, прежде чем начать! Пойди, узнай их сейчас! Все они в основном очень разумные.
  • Загрузите Мастер миграции базы данных Azure из Codeplex (или где бы ни была последняя версия). Это не самое удивительное программное обеспечение (вроде бы неустойчивое), но даже если он сработает один или два раза на вас, он все равно сохранит вам много времени!
  • I strong Рекомендуется сравнить данные SQL-сервера RedGate. Ранее упомянутый мастер миграции поможет вам выявить проблемы (вам нужно их исправить) и вы переведете ~ 98%, но вы захотите вернуться и убрать после него. В нем есть некоторые ошибки, которые пропускают поля с NULL BIT (и верхние символы ascii) и некоторые другие вещи, которые инструмент, подобный SQL Data Compare, может легко идентифицировать и исправить. Это также может дать вам душевное спокойствие, что вы можете зависеть от своей базы данных.
  • Если ваша база данных большая, подумайте о том, чтобы развернуть временную виртуальную машину в Azure (они имеют их с предустановленным SQL Server и доступны через ~ 20 минут), чтобы выполнить ваши миграции. Если вы сделаете это, лучше всего загрузить резервную копию базы данных в хранилище Blob (для этого также хорошо подходит хранилище Cerebrata), а затем захватить его и восстановить на SQL Server в этой виртуальной машине. Затем выполните свои миграции оттуда!

Тест, тест, ТЕСТ !!!