Проблема подготовки сервера IIS 7.5 с использованием Web Farm Framework 2
Мы установили WFF 2.5 и использовали его для успешной настройки фермы и предоставления дополнительного сервера в нашей тестовой среде.
Наша среда (контроллер, первичные, вторичные серверы) - это Windows 2008 Server Web Edition R2 с IIS 7.5 и установленным WFF 2.5.
У нас продолжаются проблемы с заблокированным файлом.tmp в каталоге, связанном с пулами приложений. Монитор процессов указывает, что это рабочий процесс (w3wp.exe), блокирующий файл.
Точное сообщение об ошибке Не удалось запустить операцию "ProvisionApplications". Не удалось запустить метод "Microsoft.Web.Farm.SyncApplicationsRemoteMethod" на сервере "abc". Исключение в потоке ответов. Произошла ошибка при обработке операции "Удалить файл" на "ABC85DA.tmp". Код ошибки был 0x80070020. Процесс не может получить доступ к "C:\inetpub\temp\appPools\ABC85DA.tmp", так как он используется другим процессом
Если я закрываю службу активации процессов Windows, в которой AFAIK размещает рабочий процесс, ошибка исчезает, она устранена.
Очевидно, однако, чтобы перевести сервер в оперативный режим, нам нужно запустить службу, и, как только мы это сделаем, этап автоматической подготовки завершится неудачно, и WFF пометит сервер как нездоровый и выведет его из фермы.
Я попытался отключить инициализацию приложений, сняв флажок "Включить инициализацию приложений" в модуле инициализации приложений, но эта операция, похоже, срабатывает каждые 30 секунд.
Итак - две проблемы на самом деле:
Как решить проблему с блокировкой файла во временном файле пула приложений.
Как отключить автоматическую подготовку приложений на вторичных серверах? (это действительно обходной путь второго приза в случае, если нет решения проблемы 1)
ТИА
3 ответа
Мне удалось обойти эту проблему, обновив список игнорирования в c:\windows\system32\inetsrv\conf\applicationHost.config на контроллере веб-фермы. Я обновил раздел веб-фермы, чтобы пропустить предоставление папок appPool и logFiles, это, похоже, решило проблему для меня.
<webFarm>
<applicationProvision offlineWhileSync="true" syncWebServerFromPrimary="true" periodicSync="00:00:30">
<clear />
<skipDirectives>
<skip name="appPools" skipDirective="objectName=dirPath,absolutePath=.*appPools.*" />
<skip name="logFiles" skipDirective="objectName=dirPath,absolutePath=.*LogFiles.*" />
</skipDirectives>
</applicationProvision>
</webFarm>
Перезагрузка сервера ARR привела к тому, что сервер прекратил попытки повторной подготовки вторичных серверов (другими словами, применил опцию "Enable Application Provisioning", которую я отключил)
В противном случае, я думаю, что проблема блокировки все равно возникнет. Это может не быть проблемой, поскольку вы можете отключить службу активации процессов Windows при первоначальной подготовке службы и во время любой последующей подготовки приложения, предназначенной для синхронизации серверов.
Я подозреваю, что автоматическое предоставление по расписанию все еще будет проблемой.
Я могу заставить его успешно подготовить вторичный сервер, отключив Application Provisioning, но в моем сценарии мне нужно реплицировать контент, так что это на самом деле не решение, а просто флаг того, какая часть службы выходит из строя. Подготовка платформы выглядит нормально.
Я получаю ту же ошибку с заблокированными файлами tmp - при работе на чистых экземплярах на Amazon EC2.
Вы все еще получаете проблему с заблокированным файлом? Удалось ли вам получить разрешение на автоматическое выделение ресурсов?