Поделиться через


Устранение неполадок экземпляров ролей Облачных служб Azure (расширенная поддержка), которые не запускаются

В этой статье описывается, как устранять сбои запуска в экземплярах ролей Облачные службы Azure (расширенная поддержка).

Контрольный список по устранению неполадок

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

Вариант 1. Отключение пользовательских ошибок

Чтобы просмотреть полные сведения об ошибке, откройте файл web.config для веб-роли, задайте для пользовательского режима Offошибки и повторно разверните службу:

  1. Откройте решение в Visual Studio.

  2. В Обозреватель решений откройте файл web.config.

  3. system.web В разделе добавьте следующий XML-код:

    <customErrors mode="Off" />
    
  4. Сохраните файл.

  5. Перепакуйте и повторно разверните службу.

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

Вариант 2. Просмотр состояния экземпляра роли с помощью PowerShell

Чтобы получить сведения о состоянии среды выполнения экземпляра роли, выполните командлет Get-AzCloudServiceRoleInstanceView :

$roleInstanceView = @{
    CloudServiceName = "<cloud-service-name>"
    ResourceGroupName = "<resource-group-name>"
    RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView

Состояние экземпляра роли отображается в первом столбце, как показано в следующем примере выходных данных:

Statuses            PlatformFaultDomain PlatformUpdateDomain
--------            ------------------- --------------------
{RoleStateStarting} 0                   0

Вариант 3. Использование портал Azure для просмотра состояния экземпляра роли

Чтобы просмотреть сведения о состоянии экземпляра роли в портал Azure, выполните следующие действия.

  1. В портал Azure найдите и выберите облачные службы (расширенная поддержка).

  2. В списке облачных служб выберите имя облачной службы.

  3. В области меню найдите раздел "Параметры", а затем выберите "Роли и экземпляры".

  4. Выберите имя экземпляра роли.

  5. В области экземпляра роли обратите внимание на состояние экземпляра роли в поле "Состояние ".

Вариант 4. Просмотр сведений об ошибке с помощью удаленного рабочего стола

Чтобы получить доступ к роли и просмотреть полные сведения об ошибке, используйте протокол удаленного рабочего стола (RDP), выполнив следующие действия.

  1. Добавьте расширение удаленного рабочего стола для облачных служб Azure (расширенная поддержка).

  2. В портал Azure, когда экземпляр облачной службы отображает состояние "Готово", используйте удаленный рабочий стол для входа в облачную службу. Дополнительные сведения см. в статье Подключение к экземплярам роли с использованием удаленного рабочего стола.

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

  4. Откройте окно командной строки.

  5. Выполните команду ipconfig. Скопируйте возвращаемое значение для IPv4-адреса.

  6. Откройте веб-браузер.

  7. В адресной строке вставьте адрес IPv4, а затем добавьте косую черту и имя файла веб-приложения по умолчанию. Например, http://<ipv4-address>/default.aspx.

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

Ошибка сервера в приложении "/"

Не удалось загрузить файл или сборку Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string> или одну из зависимостей. Системе не удается найти указанный файл.

Описание. Необработанное исключение произошло во время выполнения текущего веб-запроса. Чтобы получить дополнительную информацию об ошибке и ее источнике в коде, изучите трассировку стека.

Сведения об исключении: System.IO.FileNotFoundException

Вариант 5. Использование эмулятора вычислений

Вы можете использовать эмулятор вычислений Azure для диагностики и устранения проблем с отсутствующими зависимостями и ошибками web.config . Для получения наилучших результатов при использовании этого метода для диагностики проблем используйте компьютер или виртуальную машину с чистой установкой Windows.

Чтобы диагностировать проблемы с помощью эмулятора вычислений Azure, выполните следующие действия.

  1. Установить пакет Azure SDK.

  2. На компьютере разработчика создайте проект облачной службы.

  3. В обозревателе файлов в проекте облачной службы перейдите в папку bin\debug.

  4. Скопируйте папку .csx и файл .cscfg на компьютер, который используется для отладки.

  5. На чистом компьютере откройте окно командной строки пакета SDK Azure.

  6. В командной строке выполните следующую csrun команду:

    csrun.exe /devstore:start
    
  7. Выполните следующую команду:

    run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
    

    При запуске роли в веб-браузере отображаются подробные сведения об ошибке.

Если требуется дополнительная диагностика, можно использовать стандартные средства устранения неполадок Windows.

Вариант 6. Использование IntelliTrace

Примечание.

Не удается использовать IntelliTrace в Visual Studio 2022. IntelliTrace по-прежнему доступен, если вы используете Visual Studio 2019, 2017 или 2015.

Для рабочих ролей и веб-ролей, использующих .NET Framework 4, можно использовать IntelliTrace. Функция IntelliTrace доступна в Visual Studio Enterprise.

Чтобы развернуть облачную службу во время включения IntelliTrace:

  1. Убедитесь, что установлен пакет AZURE SDK 1.3 или более поздняя версия.

  2. Разверните решение в Visual Studio. При настройке развертывания установите флажок Включить IntelliTrace для ролей .NET 4.

  3. После запуска экземпляра роли откройте обозреватель сервера.

  4. Разверните узел Azure\Облачные службы.

  5. Чтобы получить список экземпляров роли, разверните развертывание. Затем щелкните правой кнопкой мыши экземпляр роли.

  6. Выберите параметр Просмотр журналов IntelliTrace.

  7. В сводке IntelliTrace перейдите к данным исключений и разверните этот узел.

  8. В списке исключений найдите строку, содержащую значение столбца Type System.IO.FileNotFoundException. Соответствующее значение столбца сообщения должно выглядеть следующим образом:

    Не удалось загрузить файл или сборку Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string> или одну из зависимостей. Системе не удается найти указанный файл.

Причина 1. Сбой операции облачной службы из-за ролиInstanceStartupTimeoutError

Один или несколько экземпляров роли в Azure Облачные службы (расширенная поддержка) могут быть медленными. Или экземпляр роли может быть перезаключен или застрял в состоянии занятой работы, а не запускаться должным образом. В этой ситуации появится сообщение об ошибке RoleInstanceStartupTimeoutError приложения роли.

Приложение роли состоит из двух частей, которые могут привести к перезапуску роли:

Если происходит остановка роли, агент платформы как услуги (PaaS) перезапускает роль.

Чтобы определить, вызвана ли проблема задачей запуска, выполните следующие действия:

  1. Попробуйте использовать удаленный рабочий стол для подключения к проблемному экземпляру роли.

  2. После подключения к экземпляру роли нажмите кнопку "Пуск", а затем найдите и выберите диспетчер задач.

  3. Чтобы просмотреть список процессов, выберите вкладку Сведения в диспетчере задач.

  4. Проверьте, существуют ли процессы для WaIISHost.exe (для WebRole) или WaWorkerHost.exe (для WorkerRole). Если оба этих процесса отсутствуют, возможно, не выполняется задача запуска.

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

Решение: выполните отладку сценария задачи запуска

Чтобы устранить сбой задачи запуска, выполните отладку сценария, который выполняется во время запуска виртуальной машины. Этот сценарий задачи запуска представляет собой файл Startup.cmd. Чтобы исследовать проблемы в сценарии, можно выполнить одно из следующих действий:

  • Просмотрите файл журнала C:\Resources\WaHostBootstrapper.log. Этот файл представляет собой журнал для процесса WaHostBootstrapper.exe . Этот процесс отвечает за задачи запуска. Он описан в рабочем процессе классической архитектуры виртуальных машин Windows Azure. Затем найдите любую ошибку или исключение, включающее выполнение Startup.cmd. Убедитесь, что код выхода равен 0. Если это не так, задача запуска будет завершена, но без ошибки. Если нет журналов, связанных с кодом выхода для сценария, задача запуска все еще будет выполняться.

  • Если сценарий задачи запуска не может быть свободно запущен в рабочей среде из-за ожидаемого влияния на бизнес, настройте механизм ведения журнала в командной строке. Например, вы можете перенаправить вывод ключевой информации в команде сценария в файл. Одним из способов этого является добавление > "%TEMP%\StartupLog.txt" в конец команды.

  • В командной строке вручную запустите сценарий задачи запуска. Расположения этого скрипта для ролей WebRole или WorkerRole показаны в следующей таблице.

    Роль Расположение скрипта
    WebRole E:\approot\bin\Startup.cmd
    WorkerRole E:\approot\Startup.cmd

Причина 2. Отсутствуют библиотеки DLL или сборки

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

Ниже приведены признаки отсутствия библиотек DLL или сборок.

  • Экземпляр роли выполняет циклы по состояниям инициализации, занятости и остановки .

  • Экземпляр роли перемещен в состояние "Готово ", но страница не отображается в веб-приложении.

Если веб-сайт развернут в веб-роли и отсутствует библиотека DLL, может отобразиться следующее сообщение об ошибке среды выполнения сервера.

Ошибка сервера в приложении "/"

Ошибка среды выполнения

Описание: на сервере произошла ошибка приложения. Текущие настраиваемые параметры ошибок для этого приложения препятствуют удаленному просмотру сведений об ошибке приложения (по соображениям безопасности). Однако их можно просмотреть из браузеров на локальном сервере.

Сведения. Чтобы включить просмотр этого конкретного сообщения об ошибке на удаленном компьютере, создайте <customErrors> тег с файлом конфигурации web.config, расположенным в корневом каталоге текущего веб-приложения. Затем этот <customErrors> тег должен иметь для атрибутаmode "" значение "Off".

Решение. Устранение отсутствующих библиотек DLL и сборок

Чтобы устранить ошибки отсутствия библиотек DLL и сборок, выполните следующее.

  1. Откройте решение в Visual Studio.

  2. В обозревателе решений откройте папку Справочные материалы.

  3. Выберите сборку, определяемую в сообщении об ошибке.

  4. В разделе Свойства задайте для свойства Копировать локально значение Истина.

  5. Повторно разверните облачную службу.

Убедившись, что ошибки больше не отображаются, повторно разверните службу. При настройке развертывания не устанавливайте флажок Включить IntelliTrace для ролей .NET 4.

Следующие шаги

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

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

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.