Рабочая роль Azure - подключите диск, который можно повторно использовать между развертываниями

Это файлы Dll, на которые мне нужно динамически ссылаться, поэтому я не могу использовать хранилище Azure для этого.

Я могу подключить диск к виртуальной машине Azure в соответствии с: http://www.windowsazure.com/en-us/manage/windows/how-to-guides/attach-a-disk/

Но как я могу сделать то же самое для рабочей роли?

Причины:

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

  2. Файлы должны сохраняться при развертывании новой версии веб-роли.

2 ответа

Посмотрите на диски Azure: http://go.microsoft.com/?linkid=9710117. По сути, это блок страниц (то есть постоянное хранилище), который содержит виртуальный жесткий диск в формате NTFS (VHD). Одним из недостатков Azure Drive является то, что только один экземпляр имеет разрешение на запись на Azure Drive. Все остальные экземпляры имеют разрешение только на чтение.

Как указал Гаурав, вы можете сохранить VHD-файл в BLOB-объекте, а затем присоединить его к своим экземплярам. Просто помните, что для дополнительных случаев вам нужно будет сделать снимки большого двоичного объекта. Пока содержимое VHD не меняется, снимки будут крошечными (на самом деле это набор указателей на большие страницы). И... если вам нужно обновить один из DLL, вы должны сделать это через экземпляр, который подключил диск для записи.

Относительно критерия № 1 выше (не желая дублировать файлы на локальный диск для каждого экземпляра): я бы предложил сначала попробовать его, посмотрев, сколько времени займет копирование dll-файлов из отдельных больших двоичных объектов (или zip-файла в одном большом двоичном объекте) в локальное хранилище во время запуска экземпляра. Поскольку учетная запись хранения и ваши вычислительные экземпляры будут (по крайней мере, должны быть) в одном и том же центре обработки данных, копирование должно быть очень быстрым, и пропускная способность не взимается. Вы можете сделать это легко с помощью задачи запуска. Положительные стороны?

  • Проще обновлять отдельные библиотеки DLL (вы можете использовать любой готовый инструмент управления BLOB-объектами, PowerShell и т. Д.) - не нужно даже запускать экземпляр при обновлении библиотеки DLL и других распространенных файлов. Если вы храните на смонтированном диске, вам нужно будет запустить экземпляр, если вы хотите сохранить список файлов, и вам потребуется все управление файлами через этот экземпляр.
  • Нет риска потери доступа к DLL, если что-то может привести к поломке диска (не говоря уже о том, что это произойдет, но локальная копия не будет зависеть от хранилища BLOB-объектов).

Нетрудно придумать схему сигнализации, чтобы ваши экземпляры знали, что для них есть обновление программного обеспечения (может быть, простое сообщение паб / субсервисная шина?).

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