Konfigurieren des IIS World Wide Web Publishing Service in einem Windows Server-Failovercluster
In diesem Artikel wird beschrieben, wie Sie Microsoft-Internetinformationsdienste (IIS) World Wide Web Publishing Service (W3SVC) in einem Windows Server-Failovercluster (WSFC) konfigurieren.
Ursprüngliche Produktversion: Windows Server 2008 und höhere Versionen, Internetinformationsdienste 8.0 und höhere Versionen
Ursprüngliche KB-Nummer: 970759
Einführung
Die Verfahren in diesem Artikel gelten nur für den World Wide Web Publishing Service. Anweisungen zum Konfigurieren des FTP-Veröffentlichungsdiensts in einem Failovercluster finden Sie unter Konfigurieren von FTP für IIS in einem Windows Server-Failovercluster.
Weitere Informationen
In früheren Versionen von Internetinformationsdienste hat Microsoft generische Ressourcenüberwachungskomponenten bereitgestellt, um Hochverfügbarkeitswebserverinstanzen mithilfe der Microsoft Clustering-Infrastruktur zu unterstützen. Allerdings war benutzerdefinierter Code erforderlich, um das Potenzial einer solchen Lösung voll auszuschöpfen. Außerdem erfüllten die von Microsoft bereitgestellten generischen Skripts die Kundenanforderungen nicht. Um IIS 7.0 oder eine höhere Version in einer Clusterumgebung zu konfigurieren, die Windows Server-Failoverclustering verwendet, müssen Sie einen benutzerdefinierten Code (Skripterstellung) verwenden, um ein solches Hochverfügbarkeitsszenario zu ermöglichen. Wenn Sie dies tun, können Benutzer das Setup an ihre Anforderungen anpassen. wodurch sie die volle Kontrolle über die Hochverfügbarkeitsintegration von Webanwendungen erhalten. Darüber hinaus bieten die in IIS 7.0 eingeführten Skriptschnittstellen für Verwaltung und Überwachung eine umfangreichere Umgebung als die zuvor bereitgestellten Skripts.
Hinweis
Die IIS 7.0-Installationsdateien enthalten fälschlicherweise die Clusweb.vbs - und Clusftp.vbs Skriptdateien, die in IIS 6.0 für administrative Iis-Clusteraufgaben verwendet werden. Verwenden Sie diese Skripts nicht mit IIS 7.0 oder einer höheren Version.
Administratoren sollten die Verwendung des Netzwerklastenausgleichs (Network Load Balancing, NLB) als primäre und bevorzugte Methode zur Verbesserung der Skalierbarkeit und Verfügbarkeit von Webanwendungen mit mehreren Servern, auf denen IIS 7.0 oder höher ausgeführt wird, sorgfältig bewerten, anstatt Failoverclustering zu verwenden. Einer der Vorteile von NLB besteht darin, dass alle Server aktiv an der gleichzeitigen Verarbeitung eingehender HTTP-Anforderungen (HyperText Transfer Protocol) teilnehmen können. Ein weiterer Vorteil ist, dass es in einer NLB-IIS-Umgebung viel einfacher sein kann, parallele Updates und Rollbacks zu unterstützen, während weiterhin Hochverfügbarkeit von Webanwendungen bereitgestellt wird. Weitere Informationen zur Verwendung von IIS 7.0 oder einer höheren Version in einer NLB-Umgebung finden Sie in den folgenden Artikeln:
Es ist wichtig zu berücksichtigen, dass das Clustern von IIS durch Clustering der IIS-Dienste nicht immer eine Hochverfügbarkeitslösung für Webanwendungen garantiert. Während die IIS-Dienste (insbesondere der WWW-Dienst) ausgeführt werden können, kann der Hostingprozess eines bestimmten Anwendungspools beendet worden sein, oder die Anwendung löst interne SERVER-HTTP-Fehler aus. Das Clustering der Webanwendungen und die Überwachung ihrer Integrität mithilfe eines benutzerdefinierten Skripts ist die richtige und empfohlene Methode, um einen IIS-Cluster mit Hoher Verfügbarkeit mithilfe von Failoverclustering zu erreichen. Im Folgenden finden Sie ein Beispielskript, das den Zustand eines Anwendungspools überwacht, um zu ermitteln, ob er gestartet wurde oder nicht.
Führen Sie die folgenden Schritte aus, um Hochverfügbarkeit für IIS 7.0 oder einen Webserver höher mithilfe von Failoverclustering zu konfigurieren. Die Schritte 3 bis 7 werden unten ausführlicher beschrieben. Das Beispielskript weiter unten in diesem Artikel kann als Beispiel für IIS 7.0 oder eine höhere Version verwendet werden.
- Installieren Sie die Webserverrolle auf allen Clusterknoten. Weitere Informationen finden Sie im IIS 7-Bereitstellungshandbuch.
- Installieren Sie das Failoverclusteringfeature auf allen Clusterknoten, und erstellen Sie den Cluster. Weitere Informationen finden Sie im Bereitstellungshandbuch für Failovercluster.
- Richten Sie eine Dateifreigabe ein, die für die freigegebene IIS-Konfiguration verwendet wird.
- Konfigurieren Sie die freigegebene IIS-Konfiguration auf allen Clusterknoten.
- Konfigurieren Sie IIS-Offlinedateien für die freigegebene Konfiguration auf allen Clusterknoten.
- Konfigurieren Sie die Website (einschließlich des zugeordneten Anwendungspools), und geben Sie den Speicherort ihres Inhalts auf einem Clusterknoten an.
- Konfigurieren Sie Hochverfügbarkeit für Ihre Website, indem Sie ein generisches Skript im Failoverclustering erstellen.
Einrichten einer Dateifreigabe, die für die freigegebene IIS-Konfiguration verwendet wird
- Erstellen Sie einen Benutzer, der auf die Freigabe zugreift, die für die freigegebene IIS-Konfiguration verwendet wird.
- Erstellen Sie die Dateifreigabe. Diese Freigabe wird verwendet, um die freigegebene IIS-Konfiguration zu speichern, die von IIS auf allen Clusterknoten gemeinsam genutzt wird. Es gibt mehrere Optionen:
- Erstellen Sie auf einem eigenständigen Server, der nicht Teil eines Failoverclusters ist, eine Dateifreigabe.
- Erstellen Sie in einem anderen Windows Server-Failovercluster eine Dateifreigabe mit hoher Verfügbarkeit. Ausführliche Informationen finden Sie unter Schritt-für-Schritt-Anleitung für Failovercluster: Konfigurieren eines Two-Node Dateiserver-Failoverclusters.
- Erstellen Sie im selben Failovercluster, der die Hochverfügbarkeitswebsite hosten wird, eine Dateifreigabe mit hoher Verfügbarkeit. Weitere Informationen finden Sie unter Schritt-für-Schritt-Anleitung für Failovercluster: Konfigurieren eines Two-Node Dateiserver-Failoverclusters.
- Legen Sie die Berechtigungen für die Freigabe fest, die Sie in Schritt 2 erstellt haben. Erteilen Sie dem Benutzer, den Sie in Schritt 1 erstellt haben, Vollzugriffsberechtigungen für die Dateifreigabe und NTFS-Berechtigungen.
- Vergewissern Sie sich, dass alle Clusterknoten zur Dateifreigabe navigieren können. Der Pfad zur Dateifreigabe ist
\\<fileserver>\<share>
.
Konfigurieren der freigegebenen IIS-Konfiguration auf allen Clusterknoten
Hinweis
Es gibt ein Problem mit der freigegebenen IIS-Konfiguration unter Windows 2008 Server aufgrund fehlender Berechtigungen für Application Host Helper Service
. Damit die freigegebene Konfiguration funktioniert, müssen Sie diese Schritte ausführen, wenn Sie die freigegebene IIS-Konfiguration unter Windows 2008 Server einrichten.
Öffnen Sie eine administrative Eingabeaufforderung.
Führen Sie den folgenden Befehl aus:
net stop apphostsvc
Führen Sie den folgenden Befehl aus:
sc privs apphostsvc SeChangeNotifyPrivilege/SeTcbPrivilege/SeImpersonatePrivilege
Führen Sie den folgenden Befehl aus:
net start apphostsvc
Nachdem Sie diese Schritte auf jedem Windows 2008-Server im Cluster ausgeführt haben, fahren Sie mit dem Einrichten der freigegebenen IIS-Konfiguration fort, wie in diesem Abschnitt beschrieben.
Exportieren Sie auf einem der Clusterknoten die freigegebene Konfiguration in die Dateifreigabe:
- Navigieren Sie zu Verwaltung, und wählen Sie dann Internetinformationsdienste-Manager (IIS) aus.
- Wählen Sie im linken Bereich den Servernamenknoten aus.
- Doppelklicken Sie auf das Symbol Freigegebene Konfiguration .
- Wählen Sie auf der Seite Freigegebene Konfiguration im Bereich Aktionen (im rechten Bereich) die Option Konfiguration exportieren aus, um die Konfigurationsdateien vom lokalen Computer an einen anderen Speicherort zu exportieren.
- Geben Sie im Dialogfeld Konfiguration exportieren den Pfad der Dateifreigabe (
\\<fileserver>\<share>
) in das Feld Physischer Pfad ein. - Wählen Sie Verbinden als aus, geben Sie dann den Benutzernamen und das Kennwort für das Benutzerkonto ein, das Zugriff auf die Freigabe hat, in der die freigegebene Konfiguration gespeichert ist, und wählen Sie dann OK aus. Dieses Konto wird für den Zugriff auf die Freigabe verwendet. Sie sollten ein eingeschränktes Active Directory-Konto verwenden, das nicht der Domänenadministrator ist.
- Geben Sie im Dialogfeld Konfiguration exportieren ein Kennwort ein, das zum Schutz der Verschlüsselungsschlüssel verwendet wird, und wählen Sie dann OK aus.
- Aktivieren Sie auf der Seite Freigegebene Konfiguration das Kontrollkästchen Freigegebene Konfiguration aktivieren .
- Geben Sie den physischen Pfad, das Benutzerkonto und das Kennwort ein, die Sie zuvor eingegeben haben, und klicken Sie dann im Bereich Aktionen auf Anwenden.
- Geben Sie im Dialogfeld Kennwort für Verschlüsselungsschlüssel das Kennwort für den Verschlüsselungsschlüssel ein, das Sie zuvor festgelegt haben, und wählen Sie dann OK aus.
- Wählen Sie im Dialogfeld Freigegebene Konfigurationdie Option OK aus.
- Wählen Sie OK aus.
Verwenden Sie auf jedem der anderen Clusterknoten die freigegebene Konfiguration, die Sie soeben in die Dateifreigabe exportiert haben:
- Navigieren Sie zu Verwaltung, und wählen Sie dann Internetinformationsdienste-Manager (IIS) aus.
- Wählen Sie den Servernamenknoten aus.
- Doppelklicken Sie auf das Symbol Freigegebene Konfiguration .
- Aktivieren Sie auf der Seite Freigegebene Konfiguration das Kontrollkästchen Freigegebene Konfiguration aktivieren .
- Geben Sie den physischen Pfad der Dateifreigabe (
\\<fileserver>\<share>
), das Benutzerkonto und das Kennwort ein, die Sie zuvor eingegeben haben, und wählen Sie dann im Bereich Aktionendie Option Übernehmen aus. - Geben Sie im Dialogfeld Kennwort für Verschlüsselungsschlüssel das Kennwort für den Verschlüsselungsschlüssel ein, das Sie zuvor festgelegt haben, und wählen Sie dann OK aus.
- Wählen Sie im Dialogfeld Freigegebene Konfigurationdie Option OK aus.
- Wählen Sie OK aus.
Hinweis
Weitere Informationen zum Einrichten freigegebener Konfigurationen in IIS finden Sie unter Freigegebene Konfiguration.
Konfigurieren von IIS-Offlinedateien für die freigegebene Konfiguration auf allen Clusterknoten
Aktivieren Sie auf jedem Clusterknoten Offlinedateien:
Installieren der Desktopdarstellung
- Navigieren Sie zu Verwaltung, und wählen Sie dann Server-Manager aus.
- Wählen Sie im linken Bereich Features aus.
- Wählen Sie im rechten Bereich Features hinzufügen aus.
- Führen Sie je nach Windows-Version einen der folgenden Schritte aus:
- Informationen Windows Server 2016 finden Sie unter Installieren von Server mit Desktopdarstellung.
- Wählen Sie für Windows Server 2102 und 2012 R2 in der Featureliste unter Benutzeroberflächen und Infrastrukturen die Option Desktopdarstellung aus.
- Wählen Sie für Windows Server 2008 und 2008 R2 Desktopdarstellung aus.
- Wählen Sie Installieren aus, um die Desktopdarstellung zu installieren.
- Starten Sie den Computer neu.
Führen Sie einen der folgenden Schritte aus:
- Wählen Sie für Windows Server 2012, 2012 R2 und 2016 Synchronisierungscenter in Systemsteuerung und dann Offlinedateien verwalten aus.
- Wählen Sie für Windows Server 2008 und 2008 R2 Offlinedateien in Systemsteuerung aus.
Wählen Sie Offlinedateien aktivieren aus. Starten Sie den Computer zu diesem Zeitpunkt nicht neu.
Stellen Sie sicher, dass der Cache schreibgeschützt ist. Führen Sie dazu den folgenden Befehl an einer Eingabeaufforderung mit erhöhten Rechten aus:
REG ADD "HKLM\System\CurrentControlSet\Services\CSC\Parameters" /v ReadOnlyCache /t REG_DWORD /d 1 /f
Starten Sie den Computer neu.
Navigieren Sie vom Computer zum Dateiserver. Klicken Sie mit der rechten Maustaste auf die Freigabe, die die freigegebene IIS-Konfiguration enthält, und wählen Sie dann Immer offline verfügbar aus.
Hinweis
Wenn Sie die Dateifreigabe so einrichten, dass sie auf demselben Failovercluster hochverfügbar ist, auf dem IIS-Knoten gehostet werden, wird die Option Offline immer verfügbar nicht angezeigt, wenn Sie mit der rechten Maustaste auf die Freigabe klicken, wenn der Clusterknoten, auf dem Sie sich befinden, den hochverfügbaren Dateiserver hostet. Sie müssen die hoch verfügbare Dateiserveranwendung auf einen anderen Knoten verschieben.
Öffnen Sie Systemsteuerung Offlinedateien. Wählen Sie Synchronisierungscenter öffnen und dann Zeitplan aus.
Planen Sie eine Offlinedateisynchronisierung für jeden Tag oder gemäß Ihren Anforderungen. Sie können die Offlinesynchronisierung auch so konfigurieren, dass sie alle paar Minuten ausgeführt wird. Auch wenn Sie keinen Planer einrichten, wird die Änderung auf dem Webserver wiedergegeben, wenn Sie etwas in der Applicationhost.config-Datei ändern.
Hinweis
Weitere Informationen zum Konfigurieren von Offlinedateien für eine freigegebene Konfiguration in IIS finden Sie unter Offlinedateien für die freigegebene Konfiguration.
Konfigurieren der Website und Angeben des Speicherorts des Inhalts auf einem Clusterknoten
Suchen Sie den Clusterknoten, der besitzer der Clusterdatenträgerressource ist, in dem die Websiteinhaltsdateien verbleiben:
- Navigieren Sie zu Verwaltung, und wählen Sie dann Failovercluster-Manager aus.
- Stellen Sie eine Verbindung mit dem Cluster her. Wenn Sie sich auf einem der Clusterknoten befinden, wird der Cluster automatisch in der Liste angezeigt.
- Suchen Sie unter Speicher nach der Datenträgerressource, auf der sich der Webseiteninhalt befindet. Erweitern Sie dazu die Speicherstruktur für die Datenträgerressource. Stellen Sie sicher, dass der Speicher nicht von anderen Hochverfügbarkeitsanwendungen im Cluster verwendet wird. Sie finden den Speicher unter Verfügbarer Speicher.
- Der Clusterknoten, auf dem diese Ressource online ist. Sie konfigurieren IIS auf diesem Clusterknoten.
- Der Name der Clusterdatenträgerressource.
Sie verwenden dies für die Inhaltsdateien. Konfigurieren Sie auf dem Clusterknoten, auf dem die Ressource online ist, den Webserver für die Verwendung des freigegebenen Datenträgers für Websiteinhalte:
- Navigieren Sie zu Verwaltung, und wählen Sie dann Internetinformationsdienste-Manager (IIS) aus.
- Erweitern Sie im linken Bereich den Knoten Servername.
- Erweitern Sie Websites, und wählen Sie dann unter Websites die Website aus, die Sie konfigurieren.
- Wählen Sie im rechten Bereich unter Website verwaltendie Option Erweiterte Einstellungen aus.
- Suchen Sie die Eigenschaft Physischer Pfad unter Allgemeine Einstellungen, und geben Sie dann den Speicherort ein, an dem sich die Websiteinhaltsdateien befinden. Dies ist der Speicherort der Clusterdatenträgerressource, den Sie sich in Schritt 5 des vorherigen Verfahrens notiert haben.
- Wählen Sie OK aus.
Konfigurieren der Hochverfügbarkeit für Ihre Website durch Erstellen eines generischen Skripts im Failovercluster-Manager
Richten Sie im letzten Schritt zum Konfigurieren der Hochverfügbarkeit für IIS-Webserver die generische Skriptressource ein, die zum Überwachen der Website und des Anwendungspools für die Website verwendet wird:
Kopieren Sie auf jedem Clusterknoten das Skript, das am Ende dieses Artikels bereitgestellt wird, in
Windows\System32\inetsrv\Clusweb7.vbs
.Standardmäßig überwacht das Skript eine Website mit dem Namen Standardwebsite und einen Anwendungspool mit dem Namen DefaultAppPool. Wenn dies nicht die richtige Website und der richtige Anwendungspool sind, ändern Sie die
SITE_NAME and APP_POOL_NAME
Variablen. Stellen Sie sicher, dass die gleiche Website und derselbe Anwendungspool im Skript auf allen Clusterknoten vorhanden sind.Hinweis
Bei den Namen wird die Groß-/Kleinschreibung beachtet.
Navigieren Sie zu Verwaltung, und wählen Sie dann Failovercluster-Manager aus.
Stellen Sie eine Verbindung mit dem Cluster her. Wenn Sie sich auf einem der Clusterknoten befinden, wird der Cluster automatisch in der Liste angezeigt.
Führen Sie einen der folgenden Schritte aus:
- Klicken Sie für Windows Server 2012, 2012 R2 und 2016 mit der rechten Maustaste auf Rollen, und wählen Sie dann Rolle konfigurieren aus, um sie zu erstellen.
- Klicken Sie unter Windows Server 2008 und 2008 R2 mit der rechten Maustaste auf den Cluster, und wählen Sie dann Dienst oder Anwendung konfigurieren aus. Ein Assistent erstellt die Hochverfügbarkeitsworkload.
Wählen Sie Generisches Skript aus.
Wählen Sie die Skriptdatei unter aus
%systemroot%\System32\Inetsrv\clusweb7.vbs
.Legen Sie den Namen des Clientzugriffspunkts (Client Access Point, CAP) auf den Websitenamen fest, den Clients zum Herstellen einer Verbindung mit der Hochverfügbarkeitswebsite verwenden. Geben Sie die statischen IP-Adressen an, die für die CAP der Website verwendet werden sollen. Wenn Sie DHCP (Dynamic Host Configuration Protocol) verwenden, wird diese Option nicht angezeigt.
Wählen Sie im Schritt Speicher auswählen den freigegebenen Clusterdatenträger aus, auf dem sich die Websiteinhaltsdateien befinden. Der Speicher sollte von jeder anderen Hochverfügbarkeitsanwendung im Cluster nicht verwendet werden.
Hinweis
Wenn die Dateifreigabe, die für die freigegebene IIS-Konfiguration verwendet wird, im selben Cluster gehostet wird, sollte hier eine andere Datenträgerressource verwendet werden.
Nachdem Sie die Einstellungen bestätigt haben, erstellt der Assistent die Clustergruppe, Clusterressourcen und die Abhängigkeiten zwischen den Ressourcen und bringt die Ressourcen dann online.
Hinweis
Führen Sie die gleichen Schritte wie oben aus, um mehrere Hochverfügbarkeitswebsites im gleichen Failovercluster zu hosten. Verwenden Sie jedoch eine andere Skriptdatei für jede Website und einen anderen gruppierten freigegebenen Speicher. Verwenden Sie in z.
%systemroot%\System32\Inetsrv
B.clusweb7.vbs für die erste Website, clweb7-2.vbs für die zweite website ,clweb7-3.vbs für die dritte usw. Jede Skriptdatei überwacht eine andere Website und einen anderen Anwendungspool.
Das folgende Skript dient nur zu Beispielzwecken und wird von Microsoft nicht explizit unterstützt. Die Verwendung dieses Skripts in einer Clusterumgebung mit IIS 7.0 oder höher erfolgt auf eigenes Risiko.
'<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>
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für