Можно ли очистить хост роли Azure и запустить его на том же хосте без очистки?

Предположим, моя роль Azure создает много временных файлов во временной папке Windows и забывает удалить их. В какой-то момент он получит ошибку "не могу создать временный файл". Предположим, что как только это произойдет, мой код роли выбрасывает исключение из RoleEntryPoint.Run() и роль перезапускается.

Я не говорю о совершенном коде, поддерживающем Azure. Моя роль может использовать сторонний код черного ящика, который теперь не будет ничего касаться Azure и "локального хранилища" и будет просто вызывать System.IO.Path.GetTempPath() и, таким образом, создавайте файлы прямо в не удобном для Azure месте

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

Обязательно ли сбрасывать локальные изменения, такие как созданные временные файлы, при перезапуске роли? Как мне убедиться, что начальная роль находится в достаточно чистом состоянии?

1 ответ

Решение

Роль сбрасывается при новых развертываниях, обновлениях и недавно масштабированных экземплярах из золотого образа (базовая гостевая ОС VHD). Как правило, для перезагрузок и сбоев вы получаете тот же VHD и машину.

Код, который вы пишете, не будет иметь права на запись на диск ОС (D:) - без повышения прав (или для входа в систему через RDP). Кроме того, существует квота на корневой диск роли пользователя (E:), которая предотвращает случайное заполнение диска файлами. Раньше это было 10% от размера пакета - все, что вам было разрешено написать. Существует также квота на диске ресурсов (C:), но это гораздо более щедрый и зависит от размера виртуальной машины.

Ничто не будет очищено на нелокальных ресурсных дисках, но в конечном итоге вы получите ошибки, если попытаетесь превысить квоты. Вы можете отключить хранилище на локальных ресурсах, и они будут очищены при перезагрузке. Конечно, как и другие изменения на диске, эти временные файлы нелокальных ресурсов иногда будут потеряны при обновлении гостевой ОС (или базовой корневой ОС). Если вы работаете с повышенными правами и действительно испортили свою установку (что вы можете сделать), вам нужно будет нажать кнопку "Reimage" на портале, и все вернется к золотому изображению.

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