Configurazione del servizio Pubblicazione Sul Web IIS in un cluster di failover di Windows Server

Questo articolo descrive come configurare Microsoft Internet Information Services (IIS) World Wide Web Publishing Service (W3SVC) in un cluster di failover di Windows Server (WSFC).

Versione originale del prodotto: Windows Server 2008 e versioni successive, Internet Information Services 8.0 e versioni successive
Numero KB originale: 970759

Introduzione

Le procedure descritte in questo articolo si applicano solo al servizio Pubblicazione sul Web. Per istruzioni su come configurare il servizio pubblicazione FTP in un cluster di failover, vedere Come configurare FTP per IIS in un cluster di failover di Windows Server.

Ulteriori informazioni

Nelle versioni precedenti di Internet Information Services, Microsoft forniva componenti generici per il monitoraggio delle risorse per supportare le istanze del server Web a disponibilità elevata usando l'infrastruttura di clustering Microsoft. Tuttavia, il codice personalizzato era necessario per realizzare appieno il potenziale di tale soluzione. Inoltre, gli script generici forniti da Microsoft non soddisfano le esigenze dei clienti. Per configurare IIS 7.0 o una versione successiva in un ambiente cluster che usa il clustering di failover di Windows Server, è necessario usare un codice personalizzato (scripting) per abilitare uno scenario di disponibilità elevata. In questo caso, gli utenti possono personalizzare la configurazione per soddisfare i propri requisiti. che offre loro il controllo completo sull'integrazione a disponibilità elevata delle applicazioni Web. Inoltre, le interfacce di script per l'amministrazione e il monitoraggio introdotte in IIS 7.0 offrono un ambiente più completo rispetto agli script forniti in precedenza.

Nota

I file di installazione di IIS 7.0 includono erroneamente i file di script Clusweb.vbs e Clusftp.vbs usati in IIS 6.0 per le attività amministrative del cluster IIS. Non usare questi script con IIS 7.0 o versione successiva.

È consigliabile che gli amministratori valutino attentamente l'uso del bilanciamento del carico di rete come metodo primario e preferito per migliorare la scalabilità e la disponibilità delle applicazioni Web con più server che eseguono IIS 7.0 o una versione successiva, anziché usare il clustering di failover. Uno dei vantaggi di Bilanciamento carico di rete è che tutti i server possono partecipare attivamente alla gestione simultanea delle richieste HTTP (HyperText Transfer Protocol) in ingresso. Un altro vantaggio è che in un ambiente IIS bilanciamento carico di rete può essere molto più semplice supportare aggiornamenti in sequenza e rollback, garantendo al tempo stesso la disponibilità elevata delle applicazioni Web. Per altre informazioni sull'uso di IIS 7.0 o versione successiva in un ambiente Bilanciamento carico di rete, vedere gli articoli seguenti:

È importante considerare che il clustering di IIS tramite il clustering dei servizi IIS non garantisce sempre una soluzione a disponibilità elevata per le applicazioni Web. Mentre i servizi IIS (in particolare il servizio WWW) potrebbero essere operativi, il processo di hosting di un pool di applicazioni specifico potrebbe essere terminato o l'applicazione potrebbe generare errori HTTP del server interno. Il clustering delle applicazioni Web e il monitoraggio dell'integrità tramite uno script personalizzato è il modo corretto e consigliato per ottenere un cluster IIS a disponibilità elevata usando il clustering di failover. Di seguito è riportato uno script di esempio che monitora lo stato di un pool di applicazioni per determinare se è stato avviato o meno.

Per configurare la disponibilità elevata per IIS 7.0 o un server Web versione successiva usando il clustering di failover, seguire questa procedura. I passaggi da 3 a 7 sono descritti in modo più dettagliato di seguito. Lo script di esempio più avanti in questo articolo può essere usato come esempio per IIS 7.0 o una versione successiva.

  1. Installare il ruolo Server Web in tutti i nodi del cluster. Per informazioni dettagliate, vedere Guida alla distribuzione di IIS 7.
  2. Installare la funzionalità di clustering di failover in tutti i nodi del cluster e creare il cluster. Per informazioni dettagliate, vedere Guida alla distribuzione del cluster di failover.
  3. Configurare una condivisione file che verrà usata per la configurazione condivisa di IIS.
  4. Configurare la configurazione condivisa di IIS in tutti i nodi del cluster.
  5. Configurare i file offline di IIS per la configurazione condivisa in tutti i nodi del cluster.
  6. Configurare il sito Web (incluso il pool di applicazioni associato) e specificare il percorso del relativo contenuto in un nodo del cluster.
  7. Configurare la disponibilità elevata per il sito Web creando uno script generico nel clustering di failover.

Configurare una condivisione file che verrà usata per la configurazione condivisa iis

  1. Creare un utente che accederà alla condivisione che verrà usata per la configurazione condivisa di IIS.
  2. Creare la condivisione file. Questa condivisione verrà usata per archiviare la configurazione condivisa iis che verrà condivisa tra IIS in tutti i nodi del cluster. Sono disponibili più opzioni:
  3. Impostare le autorizzazioni per la condivisione creata nel passaggio 2. Concedere all'utente creato nel passaggio 1 autorizzazioni di controllo completo per la condivisione file e le autorizzazioni NTFS.
  4. Verificare che tutti i nodi del cluster possano passare alla condivisione file. Il percorso della condivisione file è \\<fileserver>\<share>.

Configurare la configurazione condivisa di IIS in tutti i nodi del cluster

Nota

Si è verificato un problema con la configurazione condivisa di IIS in Windows 2008 Server a causa di privilegi mancanti per Application Host Helper Service. Per il funzionamento della configurazione condivisa, è necessario seguire questa procedura quando si configura la configurazione condivisa di IIS in Windows 2008 Server.

  1. Aprire un prompt dei comandi amministrativo.

  2. Eseguire il comando riportato di seguito:

    net stop apphostsvc
    
  3. Eseguire il comando riportato di seguito:

    sc privs apphostsvc SeChangeNotifyPrivilege/SeTcbPrivilege/SeImpersonatePrivilege
    
  4. Eseguire il comando riportato di seguito:

    net start apphostsvc
    

Dopo aver completato questi passaggi in ogni server Windows 2008 nel cluster, continuare a configurare la configurazione condivisa iis come descritto in questa sezione.

In uno dei nodi del cluster esportare la configurazione condivisa nella condivisione file:

  1. Passare a Strumenti di amministrazione e quindi selezionare Gestione Internet Information Services (IIS).
  2. Nel riquadro sinistro selezionare il nodo del nome del server .
  3. Fare doppio clic sull'icona Configurazione condivisa .
  4. Nella pagina Configurazione condivisa selezionare Esporta configurazione nel riquadro Azioni (riquadro destro) per esportare i file di configurazione dal computer locale in un altro percorso.
  5. Nella finestra di dialogo Esporta configurazione digitare il percorso della condivisione file (\\<fileserver>\<share>) nella casella Percorso fisico .
  6. Selezionare Connetti come e quindi digitare il nome utente e la password per l'account utente che ha accesso alla condivisione in cui è archiviata la configurazione condivisa e quindi selezionare OK. Questo account verrà usato per accedere alla condivisione. È consigliabile usare un account Active Directory con restrizioni che non è l'amministratore di dominio.
  7. Nella finestra di dialogo Esporta configurazione digitare una password che verrà usata per proteggere le chiavi di crittografia e quindi selezionare OK.
  8. Nella pagina Configurazione condivisa selezionare la casella di controllo Abilita configurazione condivisa .
  9. Digitare il percorso fisico, l'account utente e la password immessi in precedenza, quindi selezionare Applica nel riquadro Azioni .
  10. Nella finestra di dialogo Password chiavi di crittografia digitare la password della chiave di crittografia impostata in precedenza e quindi selezionare OK.
  11. Nella finestra di dialogo Configurazione condivisa selezionare OK.
  12. Selezionare OK.

In ognuno degli altri nodi del cluster usare la configurazione condivisa appena esportata nella condivisione file:

  1. Passare a Strumenti di amministrazione e quindi selezionare Gestione Internet Information Services (IIS).
  2. Selezionare il nodo del nome del server .
  3. Fare doppio clic sull'icona Configurazione condivisa .
  4. Nella pagina Configurazione condivisa selezionare la casella di controllo Abilita configurazione condivisa .
  5. Digitare il percorso fisico della condivisione file (\\<fileserver>\<share>), l'account utente e la password immessi in precedenza, quindi selezionare Applica nel riquadro Azioni .
  6. Nella finestra di dialogo Password chiavi di crittografia digitare la password della chiave di crittografia impostata in precedenza e quindi selezionare OK.
  7. Nella finestra di dialogo Configurazione condivisa selezionare OK.
  8. Selezionare OK.

Nota

Per altre informazioni su come configurare configurazioni condivise in IIS, vedere Configurazione condivisa.

Configurare i file offline iis per la configurazione condivisa in tutti i nodi del cluster

In ogni nodo del cluster abilitare File offline:

  1. Installare l'esperienza desktop

    1. Passare a Strumenti di amministrazione e quindi selezionare Server Manager.
    2. Nel riquadro sinistro selezionare Funzionalità.
    3. Selezionare Aggiungi funzionalità nel riquadro destro.
    4. Eseguire una delle operazioni seguenti, in base alle esigenze per la versione di Windows:
      • Per Windows Server 2016, vedere Installare server con Esperienza desktop.
      • Per Windows Server 2102 e 2012 R2, scegliere Esperienza desktop in Interfacce utente e infrastrutture nell'elenco delle funzionalità.
      • Per Windows Server 2008 e 2008 R2, scegliere Esperienza desktop.
    5. Selezionare Installa per installare Esperienza desktop.
    6. Riavviare il computer.
  2. Eseguire una delle operazioni seguenti:

    • Per Windows Server 2012, 2012 R2 e 2016, selezionare Centro sincronizzazione in Pannello di controllo e quindi selezionare Gestisci file offline.
    • Per Windows Server 2008 e 2008 R2 selezionare File offline in Pannello di controllo.
  3. Selezionare Abilita file offline. Non riavviare il computer in questo momento.

  4. Assicurarsi che la cache sia impostata su sola lettura. A tale scopo, eseguire il comando seguente a un prompt dei comandi con privilegi elevati:

    REG ADD "HKLM\System\CurrentControlSet\Services\CSC\Parameters" /v ReadOnlyCache /t REG_DWORD /d 1 /f
    
  5. Riavviare il computer.

  6. Passare al file server dal computer. Fare clic con il pulsante destro del mouse sulla condivisione che contiene la configurazione condivisa iis e quindi scegliere Always Available Offline.

    Nota

    Se si configura la condivisione file come a disponibilità elevata nello stesso cluster di failover che ospita i nodi IIS, l'opzione Always Available Offline non verrà visualizzata quando si fa clic con il pulsante destro del mouse sulla condivisione se il nodo del cluster in cui si trova ospita il file server a disponibilità elevata. Sarà necessario spostare l'applicazione file server a disponibilità elevata in un altro nodo.

  7. In Pannello di controllo aprire File offline. Selezionare Apri Centro sincronizzazione e quindi selezionare Pianifica.

  8. Pianificare una sincronizzazione dei file offline per ogni giorno o in base alle proprie esigenze. È anche possibile configurare la sincronizzazione offline per l'esecuzione ogni pochi minuti. Anche se non si configura un'utilità di pianificazione, quando si modifica qualcosa nel file Applicationhost.config , la modifica viene riflessa nel server Web.

Nota

Per altre informazioni su come configurare i file offline per una configurazione condivisa in IIS, vedere File offline per la configurazione condivisa.

Configurare il sito Web e specificare il percorso del relativo contenuto in un nodo del cluster

Trovare il nodo del cluster proprietario della risorsa disco del cluster in cui rimarranno i file di contenuto del sito Web:

  1. Passare a Strumenti di amministrazione e quindi selezionare Gestione cluster di failover.
  2. Connettersi al cluster. Se si usa uno dei nodi del cluster, il cluster verrà visualizzato automaticamente nell'elenco.
  3. In Archiviazione individuare la risorsa disco in cui risiederà il contenuto della pagina Web. A tale scopo, espandere l'albero di archiviazione per la risorsa disco. Assicurarsi che l'archiviazione non venga usata da altre applicazioni a disponibilità elevata nel cluster. Lo spazio di archiviazione è disponibile in Archiviazione disponibile.
  4. Nodo del cluster in cui questa risorsa è online. Iis verrà configurato in tale nodo del cluster.
  5. Nome della risorsa del disco del cluster.

Verrà usato per i file di contenuto. Nel nodo del cluster in cui la risorsa è online configurare il server Web per l'uso del disco condiviso per il contenuto del sito Web:

  1. Passare a Strumenti di amministrazione e quindi selezionare Gestione Internet Information Services (IIS).
  2. Nel riquadro sinistro espandere il nodo del nome del server.
  3. Espandere Siti e quindi in Siti selezionare il sito che si sta configurando.
  4. Nel riquadro destro selezionare Impostazioni avanzate in Gestisci sito Web.
  5. Individuare la proprietà Percorso fisico in Impostazioni generali e quindi digitare il percorso in cui si trovano i file di contenuto del sito Web. Si tratta della posizione della risorsa disco del cluster annotata nel passaggio 5 della procedura precedente.
  6. Selezionare OK.

Configurare la disponibilità elevata per il sito Web creando uno script generico in Gestione cluster di failover

Per l'ultimo passaggio per configurare la disponibilità elevata per i server Web IIS, configurare la risorsa script generica che verrà usata per monitorare il sito Web e il pool di applicazioni per il sito Web:

  1. In ogni nodo del cluster copiare lo script fornito alla fine di questo articolo in Windows\System32\inetsrv\Clusweb7.vbs.

  2. Per impostazione predefinita, lo script monitora un sito Web denominato Sito Web predefinito e un pool di applicazioni denominato DefaultAppPool. Se questi non sono il sito Web e il pool di applicazioni corretti, modificare le SITE_NAME and APP_POOL_NAME variabili. Assicurarsi che lo stesso sito Web e lo stesso pool di applicazioni nello script esistano in tutti i nodi del cluster.

    Nota

    I nomi fanno distinzione tra maiuscole e minuscole.

  3. Passare a Strumenti di amministrazione e quindi selezionare Gestione cluster di failover.

  4. Connettersi al cluster. Se si usa uno dei nodi del cluster, il cluster verrà visualizzato automaticamente nell'elenco.

  5. Eseguire una delle operazioni seguenti:

    • Per Windows Server 2012, 2012 R2 e 2016, fare clic con il pulsante destro del mouse su Ruoli e quindi scegliere Configura ruolo per crearlo.
    • Per Windows Server 2008 e 2008 R2, fare clic con il pulsante destro del mouse sul cluster e quindi scegliere Configura un servizio o un'applicazione. Una procedura guidata crea il carico di lavoro a disponibilità elevata.
  6. Selezionare Script generico.

  7. Selezionare il file di script da %systemroot%\System32\Inetsrv\clusweb7.vbs.

  8. Impostare il nome cap (Client Access Point) sul nome del sito Web che i client useranno per connettersi al sito Web a disponibilità elevata. Specificare gli INDIRIZZI IP statici da usare per il cap del sito Web. Se si usa DHCP (Dynamic Host Configuration Protocol), questa opzione non verrà visualizzata.

  9. Nel passaggio Seleziona archiviazione selezionare il disco condiviso del cluster in cui si trovano i file di contenuto del sito Web. L'archiviazione deve essere inutilizzata da qualsiasi altra applicazione a disponibilità elevata nel cluster.

    Nota

    Se la condivisione file usata per la configurazione condivisa IIS è ospitata nello stesso cluster, in questo caso deve essere usata una risorsa disco diversa.

  10. Dopo aver confermato le impostazioni, la procedura guidata creerà il gruppo di cluster, le risorse del cluster e le dipendenze tra le risorse e quindi le porterà online.

    Nota

    Per ospitare più siti Web a disponibilità elevata nello stesso cluster di failover, seguire la stessa procedura descritta in precedenza. Usare tuttavia un file di script diverso per ogni sito Web e un'archiviazione condivisa cluster diversa. Ad esempio, in %systemroot%\System32\Inetsrvusare clusweb7.vbs per il primo sito Web, clweb7-2.vbs per il secondo, clweb7-3.vbs per il terzo e così via. Ogni file di script monitora un sito Web e un pool di applicazioni diversi.

Lo script seguente è solo a scopo di esempio e non è supportato in modo esplicito da Microsoft. L'uso di questo script in un ambiente cluster iis 7.0 o versione successiva è a proprio rischio.

'<begin script sample>
'This script provides high availability for IIS websites
'By default, it monitors the "Default Web Site" and "DefaultAppPool"
'To monitor another website, change the SITE_NAME below
'To monitor another application pool, change the APP_POOL_NAME below
'More thorough and application-specific health monitoring logic can be added to the script if needed

Option Explicit

DIM SITE_NAME
DIM APP_POOL_NAME
Dim START_WEB_SITE
Dim START_APP_POOL
Dim SITES_SECTION_NAME
Dim APPLICATION_POOLS_SECTION_NAME
Dim CONFIG_APPHOST_ROOT
Dim STOP_WEB_SITE

'Note:
'Replace this with the site and application pool you want to configure high availability for
'Make sure that the same website and application pool in the script exist on all cluster nodes. Note that the names are case-sensitive.
SITE_NAME = "Default Web Site"
APP_POOL_NAME = "DefaultAppPool"

START_WEB_SITE = 0
START_APP_POOL = 0
STOP_WEB_SITE  = 1
SITES_SECTION_NAME = "system.applicationHost/sites"
APPLICATION_POOLS_SECTION_NAME = "system.applicationHost/applicationPools"
CONFIG_APPHOST_ROOT = "MACHINE/WEBROOT/APPHOST"

'Helper script functions
'Find the index of the website on this node
Function FindSiteIndex(collection, siteName)
    Dim i
    FindSiteIndex = -1

    For i = 0 To (CInt(collection.Count) - 1)
        If collection.Item(i).GetPropertyByName("name").Value = siteName Then
            FindSiteIndex = i
            Exit For
        End If
    Next
End Function

'Find the index of the application pool on this node
Function FindAppPoolIndex(collection, appPoolName)
    Dim i
    FindAppPoolIndex = -1

    For i = 0 To (CInt(collection.Count) - 1)
        If collection.Item(i).GetPropertyByName("name").Value = appPoolName Then
            FindAppPoolIndex = i
            Exit For
        End If
    Next
End Function

'Get the state of the website
Function GetWebSiteState(adminManager, siteName)

    Dim sitesSection, sitesSectionCollection, siteSection, index, siteMethods, startMethod, executeMethod
    Set sitesSection = adminManager.GetAdminSection(SITES_SECTION_NAME, CONFIG_APPHOST_ROOT)
    Set sitesSectionCollection = sitesSection.Collection

    index = FindSiteIndex(sitesSectionCollection, siteName)
    If index = -1 Then
        GetWebSiteState = -1
    End If

    Set siteSection = sitesSectionCollection(index)
    GetWebSiteState = siteSection.GetPropertyByName("state").Value
End Function

'Get the state of the ApplicationPool
Function GetAppPoolState(adminManager, appPool)
    Dim configSection, index, appPoolState

    set configSection = adminManager.GetAdminSection(APPLICATION_POOLS_SECTION_NAME, CONFIG_APPHOST_ROOT)
    index = FindAppPoolIndex(configSection.Collection, appPool)

    If index = -1 Then
        GetAppPoolState = -1
    End If

    GetAppPoolState = configSection.Collection.Item(index).GetPropertyByName("state").Value
End Function

'Start the w3svc service on this node
Function StartW3SVC()
    Dim objWmiProvider
    Dim objService
    Dim strServiceState
    Dim response

    'Check to see if the service is running
    set objWmiProvider = GetObject("winmgmts:/root/cimv2")
    set objService = objWmiProvider.get("win32_service='w3svc'")
    strServiceState = objService.state

    If ucase(strServiceState) = "RUNNING" Then
        StartW3SVC = True
    Else
        'If the service is not running, try to start it
        response = objService.StartService()

        'response = 0  or 10 indicates that the request to start was accepted
        If ( response <> 0 ) and ( response <> 10 ) Then
            StartW3SVC = False
        Else
            StartW3SVC = True
        End If
    End If
End Function

'Start the application pool for the website
Function StartAppPool()
    Dim ahwriter, appPoolsSection, appPoolsCollection, index, appPool, appPoolMethods, startMethod, callStartMethod
    Set ahwriter = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")

    Set appPoolsSection = ahwriter.GetAdminSection(APPLICATION_POOLS_SECTION_NAME, CONFIG_APPHOST_ROOT)
    Set appPoolsCollection = appPoolsSection.Collection
    index = FindAppPoolIndex(appPoolsCollection, APP_POOL_NAME)
    Set appPool = appPoolsCollection.Item(index)

    'See if it is already started
    If appPool.GetPropertyByName("state").Value = 1 Then
        StartAppPool = True
        Exit Function
    End If

    'Try To start the application pool
    Set appPoolMethods = appPool.Methods
    Set startMethod = appPoolMethods.Item(START_APP_POOL)
    Set callStartMethod = startMethod.CreateInstance()
    callStartMethod.Execute()

    'If started return true, otherwise return false
    If appPool.GetPropertyByName("state").Value = 1 Then
        StartAppPool = True
    Else
        StartAppPool = False
    End If
End Function

'Start the website
Function StartWebSite()
    Dim ahwriter, sitesSection, sitesSectionCollection, siteSection, index, siteMethods, startMethod, executeMethod
    Set ahwriter = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
    Set sitesSection = ahwriter.GetAdminSection(SITES_SECTION_NAME, CONFIG_APPHOST_ROOT)
    Set sitesSectionCollection = sitesSection.Collection
    index = FindSiteIndex(sitesSectionCollection, SITE_NAME)
    Set siteSection = sitesSectionCollection(index)

    if siteSection.GetPropertyByName("state").Value = 1 Then
        'Site is already started
        StartWebSite = True
        Exit Function
    End If

    'Try to start site
    Set siteMethods = siteSection.Methods
    Set startMethod = siteMethods.Item(START_WEB_SITE)
    Set executeMethod = startMethod.CreateInstance()
    executeMethod.Execute()

    'Check to see if the site started, if not return false
    If siteSection.GetPropertyByName("state").Value = 1 Then
        StartWebSite = True
    Else
        StartWebSite = False
    End If
End Function

'Stop the website
Function StopWebSite()
    Dim ahwriter, sitesSection, sitesSectionCollection, siteSection, index, siteMethods, startMethod, executeMethod, autoStartProperty
    Set ahwriter = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
    Set sitesSection = ahwriter.GetAdminSection(SITES_SECTION_NAME, CONFIG_APPHOST_ROOT)
    Set sitesSectionCollection = sitesSection.Collection
    index = FindSiteIndex(sitesSectionCollection, SITE_NAME)
    Set siteSection = sitesSectionCollection(index)

    'Stop the site
    Set siteMethods = siteSection.Methods
    Set startMethod = siteMethods.Item(STOP_WEB_SITE)
    Set executeMethod = startMethod.CreateInstance()
    executeMethod.Execute()
End Function

'Cluster resource entry points. More details here:
'http://msdn.microsoft.com/en-us/library/aa372846(VS.85).aspx
'Cluster resource Online entry point
'Make sure the website and the application pool are started
Function Online( )
    Dim bOnline
    'Make sure w3svc is started
    bOnline = StartW3SVC()

    If bOnline <> True Then
        Resource.LogInformation "The resource failed to come online because w3svc could not be started."
        Online = False
        Exit Function
    End If

    'Make sure the application pool is started
    bOnline = StartAppPool()
    If bOnline <> True Then
        Resource.LogInformation "The resource failed to come online because the application pool could not be started."
        Online = False
        Exit Function
    End If

    'Make sure the website is started
    bOnline = StartWebSite()
    If bOnline <> True Then
        Resource.LogInformation "The resource failed to come online because the web site could not be started."
        Online = False
        Exit Function
    End If

    Online = true
End Function

'Cluster resource offline entry point
'Stop the website
Function Offline( )
    StopWebSite()
    Offline = true
End Function

'Cluster resource LooksAlive entry point
'Check for the health of the website and the application pool
Function LooksAlive( )
    Dim adminManager, appPoolState, configSection, i, appPoolName, appPool, index
    i = 0
    Set adminManager  = CreateObject("Microsoft.ApplicationHost.AdminManager")
    appPoolState = -1

    'Get the state of the website
    if GetWebSiteState(adminManager, SITE_NAME) <> 1 Then
        Resource.LogInformation "The resource failed because the " & SITE_NAME & " web site is not started."
        LooksAlive = false
        Exit Function
    End If

    'Get the state of the Application Pool
    if GetAppPoolState(adminManager, APP_POOL_NAME) <> 1 Then
         Resource.LogInformation "The resource failed because Application Pool " & APP_POOL_NAME & " is not started."
         LooksAlive = false  
         Exit Function
    End if

    'Web site and Application Pool state are valid return true
    LooksAlive = true
End Function

'Cluster resource IsAlive entry point
'Do the same health checks as LooksAlive
'If a more thorough than what we do in LooksAlive is required, this should be performed here
Function IsAlive()
    IsAlive = LooksAlive
End Function

'Cluster resource Open entry point
Function Open()
    Open = true
End Function

'Cluster resource Close entry point
Function Close()
    Close = true
End Function

'Cluster resource Terminate entry point
Function Terminate()
    Terminate = true
End Function
'<end script sample>