Как я чисто закрываю все соединения на WLBS

Я использую "поле" и "машину", просто говоря в повседневной речи. Если я буду представлять или говорить с группой или управлением затем, то я использую более соответствующие термины "ПК", "Сервер", "Рабочая станция", "Клиент", и т.д. на основе сценария обсуждения.

Если какой-либо из них капризничает затем, они сразу получают названную икру демона.

2
задан 11 July 2009 в 04:43
2 ответа

Используя старый прием от дискуссионных групп Joel выключения активного, и затем выполнение WLBS drainstop был ключом к тому, чтобы заставлять это работать правильно. Затем я записал сценарий в VBS для автоматизации всего этого. Существует 2 сценария. Один сценарий для удаления узла из кластера и другого для возвращения узла онлайн.

Удалить Сценарий следующие.

Set IISOBJ = getObject("IIS://LocalHost/W3SVC")
Dim IISInstance
Dim FoundIIS
Dim IISInstanceName 
Dim NumConnections
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")

IISInstanceName = "Default Web Site"

FoundIIS = False

For each IISInstance in IISOBJ
    If (IISInstance.Class = "IIsWebServer") Then
        If (IISInstance.ServerComment = IISInstanceName) Then
            IISInstance.Put "AllowKeepAlive", False
            IISInstance.SetInfo()
            FoundIIS = True
            Exit For
        End If
    End If
Next

If Not FoundIIS Then
    WScript.Echo "Could Not Find IIS.  Exiting."
    Wscript.quit()
End If

WSHShell.Run "wlbs drainstop" , 0, true

WScript.Echo " Going To Sleep For: " & IISInstance.Get("ConnectionTimeout") & " Seconds"

WScript.Sleep IISInstance.Get("ConnectionTimeout") * 1000 

WSHShell.Run "wlbs stop" , 0, true

WScript.Echo "Successfully removed node from load balancing"

И сценарий для возвращения машины онлайн следующие.

Set IISOBJ = getObject("IIS://LocalHost/W3SVC")
Dim IISInstance
Dim FoundIIS
Dim IISInstanceName 

IISInstanceName = "Default Web Site"

FoundIIS = False

For each IISInstance in IISOBJ
    If (IISInstance.Class = "IIsWebServer") Then
        If (IISInstance.ServerComment = IISInstanceName) Then
            IISInstance.Put "AllowKeepAlive", True
            IISInstance.SetInfo()
            FoundIIS = True
            Exit For
        End If
        End If
Next

If Not FoundIIS Then
    WScript.Echo "Could Not Find IIS.  Exiting."
    Wscript.quit()
End If

Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")

WSHShell.Run "wlbs start" , 0, true

WScript.Echo "Successfully added node to load balancing"

Можно заменить переменную IISInstanceName наверху сценария для соответствия названию веб-сервера. Это - имя, которое обнаруживается, когда Вы переходите к разделу "Internet Information Services" под "Средствами администрирования". Можно изменить это на то, что Вы назвали своим веб-сервером. В целом это немного неуклюже, но это работает. Также Возможно изменить первую Строку На

Set IISInstance = getObject("IIS://LocalHost/W3SVC/1")

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

2
ответ дан 3 December 2019 в 11:20

Просто понижение тайм-аута проверки активности с двух минут вниз к ~20 секундам могло бы быть достаточно.

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/ea116535-8eb9-4c80-8b14-b34418dbfe42.mspx

1
ответ дан 3 December 2019 в 11:20

Теги

Похожие вопросы