Резервное копирование локальных папок виртуальной машины Azure в хранилище BLOB-объектов?

Я только что настроил дополнительный небольшой экземпляр виртуальной машины в Windows Azure, чтобы запустить справочную консоль для нашей компании. Файлы справки могут быть обновлены и опубликованы через простой интерфейс.NET. Очевидно, что плоские html-файлы развертываются на локальный диск виртуальной машины и публикуются через IIS. Мне просто интересно, насколько это стабильно? Если виртуальная машина испытывает аппаратный сбой, предположительно, нет автоматического перехода на другой ресурс, и любые изменения, внесенные нами в справочную систему, будут потеряны?

Кто-нибудь может порекомендовать, как я могу перенести исходные файлы из виртуальной машины в хранилище BLOB-объектов? Я мог бы написать приложение для этого, мне просто интересно, есть ли там готовое решение?

Дополнительная информация:

  • Экземпляр виртуальной машины работает под управлением Server 2008 R2 SP1 (как виртуальная машина, а не веб-роль)
  • Резервная копия должна создаваться один раз каждые 24 часа
  • Устаревшие резервные копии (3+ дня) должны автоматически очищаться от контейнера BLOB-объектов
  • Используемая нами справочная система называется HelpConsole 2012
  • Новые страницы добавляются из расчета 2-3 раза в неделю

1 ответ

Решение

Ответ зависит от того, выполняете ли вы это на виртуальной машине Windows Azure или на веб-роли Windows Azure.

Если вы выполняете это на виртуальной машине Windows Azure, то виртуальный жесткий диск хранится в хранилище больших двоичных объектов и, если сайт работает с диска C:, а не на диске с данными, в системе включено некоторое кэширование хоста для обоих. читает и пишет. В этом сценарии возможно (в зависимости от методов, которые вы используете для записи ваших файлов), что данные не отправляются обратно на виртуальный жесткий диск в хранилище больших двоичных объектов до того, как произойдет сбой. Вы можете либо убедиться, что ваши методы записи выполняют операцию сквозной записи, либо отключить кэширование записи. А еще лучше, прикрепите диск с данными для файлов вашего веб-сайта. По умолчанию на дисках с данными отключено кэширование чтения и записи (можно включить кэширование чтения). Поскольку виртуальные жесткие диски сохраняются, вам не нужно беспокоиться о потере правки. Вы можете написать сценарий, сделав снимок файлов и переместив их в хранилище больших двоичных объектов отдельно, или даже отправить их в другое место. Еще одна вещь, о которой стоит подумать с этой опцией, - это то, что вам нужно заботиться об экземплярах виртуальных машин и поддерживать их в актуальном состоянии.

Если вы запускаете веб-роль, то да, если происходит сбой и виртуальная машина проходит самовосстановление, она действительно будет повторно развернута со старыми файлами. В этом случае я бы рекомендовал изменить код в веб-роли, чтобы при записи обновлений в локальный файл он также помещал копию локального файла в хранилище больших двоичных объектов. Кроме того, в веб-роли OnStart вы можете обратиться к хранилищу больших двоичных объектов и получить весь новый контент локально. Будьте ОЧЕНЬ ОСТОРОЖНЫ с этим подходом, потому что он действительно хорошо работает только для ОДНОГО экземпляра, а не для нескольких. Если вы планируете запускать несколько экземпляров сервера (и вам понадобится, если вы хотите, чтобы SLA работал безотказно), ваш код должен быть немного более устойчивым и выполнять запись в хранилище больших двоичных объектов, а затем оповещать все экземпляры роли что есть новый файл для локального удаления.

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

Теперь другой вариант - использовать для этого веб-сайты Windows Azure. Базовое хранилище файлов веб-сайтов на веб-сайтах Windows Azure является общим местоположением, поэтому обновление файлов в нем будет немедленно отражено для всех экземпляров. Кроме того, контент для сайта хранится в BLOB-хранилище и может быть обновлен через FTP, контроль версий или непосредственно из кода. Здесь много вариантов. Вы можете перейти к зарезервированным экземплярам, ​​чтобы избежать некоторых квот, которые есть на веб-сайтах. В настоящее время веб-сайты могут не подходить для вас, в зависимости от других требований (например, от того, насколько вам нужен контроль над средой, поскольку вы не получаете большого контроля над веб-сайтами).

Другие вопросы по тегам