Microsoft Azure Backups - notes from the field

 

Резервирование - тема важная и очень горячая в современном мире уже повзрослевшего хостинга и активно развивающихся облачных провайдеров, предлагающих размещать на своих ресурсах инфраструктуру и данные. Потеря данных и инфраструктуры в разной степени может повлиять на карьерные перспективы, поэтому до возникновения проблем надо максимально озаботиться разработкой стратегии резервирования.

Microsoft Azure - замечательная функциональная облачная платформа с большим количеством разных опций резервирования важных частей вашего проекта, однако единого решения для резервирования всего и сразу нет.

Платформа развивается, появляются новые сервисы, и потребность в перечне опций назрела естественным образом, поэтому я собрал ссылки и информацию, которая может быть полезной в процессе разработки стратегии выполнения резервирования. Статья будет редактироваться. Статья НЕ является руководством к действию - скорее набором ссылок и небольших советов.

Итак, в мире резервирования Azure есть два больших уровня:

  • Уровень файловой системы VM
  • Уровень приложения (SQL DB, PaaS и др.)

Перед и после прочтения этой статьи рекомендую уделить внимание статье на MSDN “Backup and recovery options for Azure virtual machines”, перечисляющей основные способы резервирования виртуальных машин. Статья здесь.

Приступим.

Приступим и начнем, конечно же, с простых данных. Далее будет блок про резервирование виртуальных машин и блок про веб-сайты и мобильные сервисы.

Резервирование данных в Microsoft Azure

Помимо простого копирования есть набор сервисов, интегрированных тем или иным образом в саму платформу Microsoft Azure. Список сервисов отсортирован по функциональности сервиса и простоте его использования.

  • Microsoft Azure Storage. Самое простое решение по резервированию данных, существующее на платформе, а также, по факту, являющееся базой для других сервисов резервирования. Microsoft Azure Storage - высокомасштабируемое и устойчивое хранилище, состоящее из трех подсервисов - таблиц (noSQL хранилище), блобов (бинарные объекты) и очередей (передача данных от источника к получателю). В одном аккаунте хранилища можно хранить до 500 терабайт, одна подписка же ограничена 50 аккаунтами, что приводит к тому, что хранить можно 500х50 терабайт. Существует длинный список утилит и программного обеспечения (помимо использования API), с помощью которых можно управлять хранимыми данными (список можно найти ниже, сравнение некоторых из них же находится здесь). Операции можно автоматизировать и выполнять с необходимой периодичностью с помощью Powershell.
  • Microsoft Azure Backup. Абстракция между пользователем и Microsoft Azure Storage. Сервис используется дл ярезервирования файлов и папок в защищенное хранилище блобов. Работать может в двух режимах - в режиме интеграции с Windows Server и режиме интергации с Data Protection Manager. Выбор всецело зависит от задач. С первой опцией (более простой и требующей выполнения нескольких шагов) вы получаете улучшенное диалоговое окно Windows Server Backup, в котором после установки агента Microsoft Azure Backup появляется новая опция резервирования в облако. Работать очень удобно, однако есть и ограничения, продиктованные больше стандартными ограничениями Server Backup - нельзя резервировать system state и нет централизованного управления. Можно резервировать файлы, снапшоты баз данных SQL Server, виртуальные машины, с поддержкой инкрементального резервирования. Все взаимодействие пользователя с резервированием заключается в использовании стандартного меню Windows Server, вся реализация же скрыта. До 5 гигабайт бесплатно.
  • Data Protection Manager Azure. Второй режим функционирования Microsoft Azure Backup - интеграция в System Center DPM. Гораздо более корпоративное решение, нежели первый вариант, поддерживающее политики резервирования, умное резервирование (часть в облако, часть локально) и многое другое.
  • PowerShell. PowerShell - средство, знакомое многим. С помощью него можно делать практически все что угодно, и платформа Microsoft Azure - не исключение. На платформе есть только несколько сервисов, не поддерживающих управление через Powershell, и вы можете делать резервирование и снапшотирование виртуальных машин с помощью Powershell в другой аккаунт хранилища, например. Недостаток есть один - время и простой машины в то время, пока делается снапшот.
  • StorSimple. StorSimple - "железное" решение, которое ставится физически в центре обработки данных и выполняет работу хранилища. При этом StorSimple - хранилище гибридного типа, состоящее из массива SSD+SAS и интеграции в Microsoft Azure Storage. Во время работы оно определяет частоту доступа к данным и, в зависимости от нее, размещает данные ближе или дальше от конечного пользователя. Самые редкоиспользуемые данные отправляются в облако, перед этим проходя дедупликацию и шифрование, для слабых каналов и безопасности соответственно. При этом для конечного пользователя StorSimple выглядит не более чем сетевое хранилище, все остальное происходит в "фоне". Типичным сценарием использования StorSimple является, помимо резервирования, размещение галереи образов виртуальных машин. Запросить демо можно здесь. Подробное руководство здесь.

Как и обещал выше, привожу неполный список утилит, которые можно использовать для резервирования данных в Microsoft Azure:

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

Если же у вас есть SC DPM, то он полностью совместим с SQL Server и при разработке стратегии резервирования должен быть рассмотрен в первую очередь.

Резервирование виртуальных машин

Простые данные и резервировать достаточно просто. Виртуальные машины же находятся в другой плоскости - данные, которые нужно резервировать в случае виртуальных машин, это не простые данные, но само состояние виртуальной машины. Которое, конечно, меняется ежесекундно. Резервирование здесь происходит на уровне VHD. VHD (Virtual Hard Disk) - файловый формат, представляющий собой виртуальный диск (HDD) и содержащий партиции и файловую систему.

Резервировать VHD можно, например, еженедельно в Microsoft Azure. Таким образом у вас будет гарантия, что в случае падения по той или причине останется копия как минимум недельной давности. Нелишне также упомянуть о том, что VHD и так содержится в блобе и, как и все другие сущности в хранилище Microsoft Azure, автоматически реплицируется в минимум три экземпляра (к которым нет пользовательского доступа, эти реплики используются для обеспечения отказоустойчивости внутренними сервисами платформы).

При резервировании нужно помнить о том:

  • Что запущено на виртуальной машине: Windows, Linux, приложения, сервисы, какие нагрузки, насколько часто обновляются данные.
  • Какой период простоя допустим. Резервировать системное состояние ОС, конфигурацию виртуальной машины и данные необходимо отдельно - если данные можно резервировать, пока виртуальная машина работает, то для резервирования системного состояния ее надо будет выключить.

Процесс резервирования VHD можно автоматизировать PowerShell, используя командлет Stop-VM –StayProvisioned для остановки виртуальной машины. StayProvisioned в данном случае означает, что конфигурация виртуальной машины будет сохранена. В ином случае она будет потеряна. Выключить же ВМ надо для того, чтобы обеспечить резервирование стабильной версии системного состояния. После остановки машины можно приступать к резервированию, используя, например, командлеты Start-AzureStorageBlobCopy & Get-AzureStorageBlobCopyState.

PowerShell - отличное средство, но для реализации механизма резервирования нужно некоторое количество времени потратить на программирование и ручную работу. Новый сервис автоматизации может быть подходящим вариантом для ухода от программирования и перехода на более концептуальный уровень.

Резервирование PaaS

PaaS, исходя из названия, гарантирует, что большей частью рутинные работы от конечного пользователя изолированы. Однако это не означает, что сервис знает, как правильно и насколько часто резервировать данные и программный код.

Веб-сайты. При создании веб-сайта мы имеем изолированный доступ к IIS с некоторыми допущениями для настройки. Для веб-сайтов есть встроенный сервис резервирования, доступный на портале управления Microsoft Azure. С Azure Web Sites Backup можно настраивать резервирование как ручное, так и автоматическое и, в случае проблем, вы сможете легко откатиться на предыдущее состояние или создать новый сайт на основе резервной копии. Подробнее почитать про резервирование и познакомиться с рекомендациями можно здесь.

Mobile Services - мобильные сервисы скрывают всю реализацию от пользователя, предоставляя доступ только к настройкам, скриптам и данным. Здесь нужно уточнить, что Mobile Services в качестве бэкенда для хранения данных используют Azure SQL DB, что означает, что вы можете резервировать данные с позиции подхода SQL Server. Встроенного механизма резервирования нет, однако вы можете использовать PowerShell для того, чтобы выполнять резервную копию на регулярной основе.