2

У нас есть несколько веб-сайтов в IIS на каждом из наших серверов, и у нас есть PowerShell скрипты, которые могут создавать/обновлять отдельный веб-сайт, а также настройки привязки, пулы SSL, приложение и т.д.Может конфигурации IIS быть изменены одновременно

Учитывая размер фермы серверов и количество веб-сайтов, очень желательно иметь возможность одновременно обновлять несколько веб-сайтов.

Однако это поднимает вопрос, который обновляет на applicationHost.config на сайте А, может быть перезаписаны одновременно обновлений сайта B.

Возможно ли это?

ответ

3

Всегда лучше, чтобы проверить это:

Давайте начнем с простого скрипта, создать несколько сайтов, 20 в этом случае.

Param 
(
    [Parameter(Mandatory=$true)] 
    [int] 
    $offset 
) 

Import-Module WebAdministration 

ForEach ($number in 1..20) { 

    $id = $offset + $number 
    New-WebSite -Name $("Test_" + $id) -Port $id -Id $id -PhysicalPath "$env:systemdrive\inetpub\wwwroot" 
} 

я сохранить это в C:\temp\New-TestSite.ps1

Теперь запустите этот сценарий три раза, в то же время, я создал еще один сценарий: C:\temp\Run-Test.ps1 со следующим содержанием:

start-job -ScriptBlock {& C:\temp\New-TestSite.ps1 -offset 10000} 
start-job -ScriptBlock {& C:\temp\New-TestSite.ps1 -offset 20000} 
start-job -ScriptBlock {& C:\temp\New-TestSite.ps1 -offset 30000} 

После запуска Run-Test.ps1, пусть проверьте, сколько сайтов мы создали:

ls iis:\sites | group {$_.Name.substring(0,6)} | Select Count,Name | Format-Table -AutoSize 

я получил:

Count Name 
----- ---- 
    19 Test_1 
    18 Test_2 
    15 Test_3 

Таким образом, мы создали 52 из 60

При создании 50 за сценарий, я получил:

Count Name 
----- ---- 
    31 Test_1 
    31 Test_2 
    30 Test_3 

Это 92 из 150

Хуже того, в некоторых тестовых случаях один из процессов PowerShell разбился:

enter image description here

По крайней мере Get-Job показывает:

Id  Name   PSJobTypeName State  
36  Job36   BackgroundJob Failed 
38  Job38   BackgroundJob Completed 
40  Job40   BackgroundJob Completed 

Таким образом, в заключение можно сказать, что это не сохранить изменения Applicationhost.config одновременно.

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

Испытания проводились на сервере 2012 R2 (IIS 8.5)

+0

Yay Science! Я думаю, что это довольно убедительно. Благодарю. – sheikhjabootie

Смежные вопросы