Это не точно ответить на ваши вопросы, но это могло бы помочь обучить Вас на несколько вопросов, чтобы спросить и дает вам толчок из ворот. Это были все уроки, извлеченные до, во время или после нашей миграции наших систем в 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 в этой виртуальной машине. Затем выполните свои миграции оттуда!
Тест, тест, ТЕСТ !!!
Мы перенесли ~ 95% нашего корпоративного пакета продуктов SaaS на предложения PaaS от Azure. Это было много работы, но я очень рад, что мы это сделали! Моя конечная (на данный момент) впечатления таковы: 1) рентабельность инвестиций в веб-роли окупается ** ОЧЕНЬ ** быстро! 2) Ограничения SQL Azure довольно раздражают (особенно отсутствие «хороших» решений для резервного копирования). 3) Если вы не хотите инвестировать в автоматическое развертывание с самого начала, не беспокойтесь. Вы ДОЛЖНЫ иметь это! – Jaxidian
Что такое автоматическое развертывание? и как они относятся к Azure? – Rob
@Rob: Изучите непрерывную интеграцию и постройте серверы. TFS может это сделать, а Дженкинс - еще один популярный. В конечном счете, здесь много, МНОГО различных вариантов, и это ОГРОМНАЯ беседа, которая здесь не подходит. Пойдите Google вокруг, и это должно помочь вам LOT! – Jaxidian