Windows Server yük devretme kümesinde IIS World Wide Web Yayımlama Hizmeti'ni yapılandırma
Bu makalede, Windows Server yük devretme kümesinde (WSFC) Microsoft Internet Information Services (IIS) World Wide Web Yayımlama Hizmeti'nin (W3SVC) nasıl yapılandırıldığı açıklanır.
Orijinal ürün sürümü: Windows Server 2008 ve sonraki sürümleri, Internet Information Services 8.0 ve sonraki sürümleri
Özgün KB numarası: 970759
Giriş
Bu makaledeki yordamlar yalnızca World Wide Web Yayımlama Hizmeti için geçerlidir. Yük devretme kümesinde FTP Yayımlama hizmetini yapılandırma yönergeleri için bkz. Windows Server yük devretme kümesinde IIS için FTP'yi yapılandırma.
Daha fazla bilgi
Internet Information Services'in önceki sürümlerinde Microsoft, Microsoft Kümeleme altyapısını kullanarak yüksek kullanılabilirlik Web sunucusu örneklerini desteklemek için genel kaynak izleyici bileşenleri sağlamıştı. Ancak, böyle bir çözümün potansiyelini tam olarak gerçekleştirmek için özel kod gerekiyordu. Ayrıca, Microsoft'un sağladığı genel betikler müşteri ihtiyaçlarını karşılamadı. Windows Server yük devretme kümelemesi kullanan kümelenmiş bir ortamda IIS 7.0 veya sonraki bir sürümü yapılandırmak için, bu kadar yüksek kullanılabilirlik senaryosunu etkinleştirmek için özel bir (betik oluşturma) kodu kullanmanız gerekir. Bunu yaptığınızda, kullanıcılar kendi gereksinimlerini karşılamak için kurulumu özelleştirebilir. web uygulamalarının yüksek kullanılabilirlik tümleştirmesi üzerinde tam denetim sağlar. Ayrıca, IIS 7.0'da kullanıma sunulan yönetim ve izleme için betik arabirimleri, daha önce sağlanan betiklerden daha zengin bir ortam sağlar.
Not
IIS 7.0 yükleme dosyaları, IIS küme yönetim görevleri için IIS 6.0'da kullanılan Clusweb.vbs ve Clusftp.vbs betik dosyalarını yanlış şekilde içerir. Bu betikleri IIS 7.0 veya sonraki bir sürümle kullanmayın.
Yöneticilerin yük devretme kümelemesi yerine IIS 7.0 veya sonraki bir sürümü çalıştıran birden çok sunucuya sahip Web uygulamalarının ölçeklenebilirliğini ve kullanılabilirliğini geliştirmek için birincil ve tercih edilen yöntem olarak Ağ Yükü Dengeleme (NLB) kullanımını dikkatle değerlendirmelerini öneririz. NLB'nin avantajlarından biri, tüm sunucuların gelen Köprü Metni Aktarım Protokolü (HTTP) isteklerinin eşzamanlı işlenmesine etkin bir şekilde katılabilmesidir. Bir diğer avantajı da NLB IIS ortamında, web uygulamalarının yüksek kullanılabilirliğini sağlarken sıralı güncelleştirmeleri ve geri almaları desteklemenin çok daha kolay olmasıdır. NLB ortamında IIS 7.0 veya sonraki bir sürümü kullanma hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
IIS hizmetlerini kümeleme yoluyla IIS'yi kümelemenin Web uygulamaları için her zaman yüksek kullanılabilirlik çözümü garanti etmediğini göz önünde bulundurmak önemlidir. IIS hizmetleri (özellikle WWW hizmeti) çalışır durumda olsa da, belirli bir uygulama havuzunun barındırma işlemi sonlandırılabilir veya uygulama iç sunucu HTTP hataları atıyor olabilir. Web uygulamalarını kümeleme ve özel bir betik kullanarak sistem durumunu izleme, yük devretme kümelemesi kullanarak yüksek kullanılabilirliğe sahip bir IIS kümesi elde etmenin doğru ve önerilen yoludur. Aşağıda, bir uygulama havuzunun başlatılıp başlatılmadığını belirlemek için durumunu izleyen örnek bir betik verilmiştir.
Yük devretme kümelemesi kullanarak IIS 7.0 veya sonraki bir Sürüm Web sunucusu için yüksek kullanılabilirlik yapılandırmak için aşağıdaki adımları izleyin. 3 ile 7. adımlar aşağıda daha ayrıntılı olarak açıklanmıştır. Bu makalenin devamında yer alan örnek betik, IIS 7.0 veya sonraki bir sürüm için örnek olarak kullanılabilir.
- Tüm küme düğümlerine Web Sunucusu rolünü yükleyin. Ayrıntılar için bkz. IIS 7 Dağıtım Kılavuzu.
- Yük devretme kümelemesi özelliğini tüm küme düğümlerine yükleyin ve kümeyi oluşturun. Ayrıntılar için bkz . Yük Devretme Kümesi Dağıtım Kılavuzu.
- IIS paylaşılan yapılandırması için kullanılacak bir dosya paylaşımı ayarlayın.
- Tüm küme düğümlerinde IIS paylaşılan yapılandırmasını yapılandırın.
- Tüm küme düğümlerinde paylaşılan yapılandırma için IIS Çevrimdışı Dosyalarını yapılandırın.
- Web sitesini (ilişkili uygulama havuzu dahil) yapılandırın ve içeriğinin konumunu bir küme düğümünde belirtin.
- Yük devretme kümelemesinde genel bir betik oluşturarak web siteniz için yüksek kullanılabilirliği yapılandırın.
IIS paylaşılan yapılandırması için kullanılacak bir dosya paylaşımı ayarlama
- IIS paylaşılan yapılandırması için kullanılacak paylaşıma erişecek bir kullanıcı oluşturun.
- Dosya paylaşımını oluşturun. Bu paylaşım, tüm küme düğümlerinde IIS arasında paylaşılacak IIS paylaşılan yapılandırmasını depolamak için kullanılır. Birden çok seçenek vardır:
- Herhangi bir yük devretme kümesinin parçası olmayan tek başına bir sunucuda bir dosya paylaşımı oluşturun.
- Başka bir Windows Server yük devretme kümesinde yüksek kullanılabilirlik dosya paylaşımı oluşturun. Ayrıntılar için Yük Devretme Kümesi Adım Adım Kılavuz: Two-Node Dosya Sunucusu Yük Devretme Kümesini Yapılandırma sayfasını ziyaret edin.
- Yüksek kullanılabilirlik web sitesini barındıracak aynı yük devretme kümesinde, yüksek kullanılabilirlik dosya paylaşımı oluşturun. Ayrıntılar için bkz . Yük Devretme Kümesi Adım Adım Kılavuz: Two-Node Dosya Sunucusu Yük Devretme Kümesini Yapılandırma.
- 2. adımda oluşturduğunuz paylaşım üzerindeki izinleri ayarlayın. 1. adımda oluşturduğunuz kullanıcıya dosya paylaşımı ve NTFS izinleri verin.
- Tüm küme düğümlerinin dosya paylaşımına göz atabildiğini onaylayın. Dosya paylaşımının yolu şeklindedir
\\<fileserver>\<share>
.
Tüm küme düğümlerinde IIS paylaşılan yapılandırmasını yapılandırma
Not
için eksik ayrıcalıklar nedeniyle Windows 2008 Server'da IIS paylaşılan yapılandırmasıyla Application Host Helper Service
ilgili bir sorun var. Paylaşılan yapılandırmanın çalışması için Windows 2008 Server'da IIS paylaşılan yapılandırmasını ayarlarken bu adımları izlemeniz gerekir.
Bir yönetim komut istemi açın.
Aşağıdaki komutu çalıştırın:
net stop apphostsvc
Aşağıdaki komutu çalıştırın:
sc privs apphostsvc SeChangeNotifyPrivilege/SeTcbPrivilege/SeImpersonatePrivilege
Aşağıdaki komutu çalıştırın:
net start apphostsvc
Kümedeki her Windows 2008 Sunucusunda bu adımları tamamladıktan sonra, bu bölümde açıklandığı gibi IIS paylaşılan yapılandırmasını ayarlamaya devam edin.
Küme düğümlerinden birinde, paylaşılan yapılandırmayı dosya paylaşımına aktarın:
- Yönetim Araçları'na gidin ve Internet Information Services (IIS) Yöneticisi'ne tıklayın.
- Sol bölmede sunucu adı düğümünü seçin.
- Paylaşılan Yapılandırma simgesine çift tıklayın.
- Yapılandırma dosyalarını yerel bilgisayardan başka bir konuma aktarmak için Paylaşılan Yapılandırma sayfasında, Eylemler bölmesinde (sağ bölme) Yapılandırmayı Dışarı Aktar'ı seçin.
- Yapılandırmayı Dışarı Aktar iletişim kutusunda, Fiziksel yol kutusuna dosya paylaşımının (
\\<fileserver>\<share>
) yolunu yazın. - Farklı Bağlan'ı seçin ve paylaşılan yapılandırmanın depolandığı paylaşıma erişimi olan kullanıcı hesabının kullanıcı adını ve parolasını yazın ve ardından Tamam'ı seçin. Bu hesap paylaşıma erişmek için kullanılır. Etki alanı yöneticisi olmayan kısıtlı bir Active Directory hesabı kullanmalısınız.
- Yapılandırmayı Dışarı Aktar iletişim kutusunda, şifreleme anahtarlarını korumak için kullanılacak bir parola yazın ve ardından Tamam'ı seçin.
- Paylaşılan Yapılandırma sayfasında Paylaşılan yapılandırmayı etkinleştir onay kutusunu seçin.
- Daha önce girdiğiniz fiziksel yolu, kullanıcı hesabını ve parolayı yazın ve eylemler bölmesinde Uygula'yı seçin.
- Şifreleme Anahtarları Parolası iletişim kutusunda, daha önce ayarladığınız şifreleme anahtarı parolasını yazın ve tamam'ı seçin.
- Paylaşılan Yapılandırma iletişim kutusunda Tamam'ı seçin.
- Tamam'ı seçin.
Diğer küme düğümlerinin her birinde, dosya paylaşımına yeni dışarı aktardığınız paylaşılan yapılandırmayı kullanın:
- Yönetim Araçları'na gidin ve Internet Information Services (IIS) Yöneticisi'ne tıklayın.
- Sunucu adı düğümünü seçin.
- Paylaşılan Yapılandırma simgesine çift tıklayın.
- Paylaşılan Yapılandırma sayfasında Paylaşılan yapılandırmayı etkinleştir onay kutusunu seçin.
- Dosya paylaşımının (
\\<fileserver>\<share>
), kullanıcı hesabının ve daha önce girdiğiniz parolanın fiziksel yolunu yazın ve eylemler bölmesinde Uygula'yı seçin. - Şifreleme Anahtarları Parolası iletişim kutusunda, daha önce ayarladığınız şifreleme anahtarı parolasını yazın ve tamam'ı seçin.
- Paylaşılan Yapılandırma iletişim kutusunda Tamam'ı seçin.
- Tamam'ı seçin.
Not
IIS'de paylaşılan yapılandırmaları ayarlama hakkında daha fazla bilgi için Paylaşılan Yapılandırma'yı ziyaret edin.
Tüm küme düğümlerinde paylaşılan yapılandırma için IIS Çevrimdışı Dosyalarını yapılandırma
Her küme düğümünde Çevrimdışı Dosyalar'ı etkinleştirin:
Masaüstü Deneyimini Yükleme
- Yönetim Araçları'na gidin ve Sunucu Yöneticisi'ı seçin.
- Sol bölmede Özellikler'i seçin.
- Sağ bölmede Özellik Ekle'yi seçin.
- Windows sürümünüz için uygun olan aşağıdakilerden birini yapın:
- Windows Server 2016 için Masaüstü Deneyimi ile Sunucu Yükleme sayfasını ziyaret edin.
- Windows Server 2102 ve 2012 R2 için özellikler listesindeki Kullanıcı Arabirimleri ve Altyapılar'ın altında Masaüstü Deneyimi'ni seçin.
- Windows Server 2008 ve 2008 R2 için Masaüstü Deneyimi'ni seçin.
- Masaüstü Deneyimi'ni yüklemek için Yükle'yi seçin.
- Bilgisayarınızı yeniden başlatın.
Şunlardan birini yapın:
- Windows Server 2012, 2012 R2 ve 2016 için, Denetim Masası Eşitleme Merkezi'ni ve ardından Çevrimdışı dosyaları yönet'i seçin.
- Windows Server 2008 ve 2008 R2 için Denetim Masası'da Çevrimdışı Dosyalar'ı seçin.
Çevrimdışı Dosyaları Etkinleştir'i seçin. Bilgisayarı şu anda yeniden başlatmayın.
Önbelleğin salt okunur olarak ayarlandığından emin olun. Bunu yapmak için, yükseltilmiş bir cmd isteminde aşağıdaki komutu çalıştırın:
REG ADD "HKLM\System\CurrentControlSet\Services\CSC\Parameters" /v ReadOnlyCache /t REG_DWORD /d 1 /f
Bilgisayarınızı yeniden başlatın.
Bilgisayardan dosya sunucusuna gidin. IIS paylaşılan yapılandırmasını içeren paylaşıma sağ tıklayın ve ardından Her Zaman Çevrimdışı Kullanılabilir'i seçin.
Not
Dosya paylaşımını IIS düğümlerini barındıran aynı yük devretme kümesinde yüksek oranda kullanılabilir olacak şekilde ayarlarsanız, üzerinde olduğunuz küme düğümü yüksek oranda kullanılabilir dosya sunucusunu barındırıyorsa paylaşıma sağ tıkladığınızda Her Zaman Kullanılabilir Çevrimdışı seçeneği görünmez. Yüksek kullanılabilir dosya sunucusu uygulamasını başka bir düğüme taşımanız gerekir.
Denetim Masası'da Çevrimdışı Dosyalar'ı açın. Eşitleme Merkezi'ni Aç'ı ve ardından Zamanla'yı seçin.
Her gün için veya gereksinimlerinize göre çevrimdışı dosya eşitlemesi zamanlayın. Çevrimdışı eşitlemeyi birkaç dakikada bir çalışacak şekilde de yapılandırabilirsiniz. Zamanlayıcı ayarlamasanız bile, Applicationhost.config dosyasındaki bir şeyi değiştirdiğinizde, değişiklik Web sunucusuna yansıtılır.
Not
IIS'de paylaşılan bir yapılandırma için çevrimdışı dosyaları yapılandırma hakkında daha fazla bilgi için bkz. Paylaşılan Yapılandırma için Çevrimdışı Dosyalar.
Web sitesini yapılandırın ve içeriğinin konumunu bir küme düğümünde belirtin
Web sitesi içerik dosyalarının kalacağı küme disk kaynağının sahibi olan küme düğümünü bulun:
- Yönetim Araçları'na gidin ve Yük Devretme Kümesi Yöneticisi'ne tıklayın.
- Kümeye bağlanın. Küme düğümlerinden birindeyseniz, küme otomatik olarak listede görünür.
- Depolama altında, Web sayfası içeriğinin bulunacağı disk kaynağını bulun. Bunu yapmak için disk kaynağının depolama ağacını genişletin. Depolama alanının kümedeki diğer yüksek kullanılabilirlik uygulamaları tarafından kullanılmadığından emin olun. Depolama alanını Kullanılabilir Depolama altında bulabilirsiniz.
- Bu kaynağın çevrimiçi olduğu küme düğümü. Bu küme düğümünde IIS'yi yapılandıracaksınız.
- Küme disk kaynağı adı.
Bunu içerik dosyaları için kullanacaksınız. Kaynağın çevrimiçi olduğu küme düğümünde Web sunucusunu web sitesi içeriği için paylaşılan diski kullanacak şekilde yapılandırın:
- Yönetim Araçları'na gidin ve Internet Information Services (IIS) Yöneticisi'ne tıklayın.
- Sol bölmede sunucu adı düğümünü genişletin.
- Siteler'i genişletin ve Siteler'in altında yapılandırdığınız siteyi seçin.
- Sağ bölmede, Web Sitesini Yönet'in altında Gelişmiş Ayarlar'ı seçin.
- Genel ayarlar'ın altında Fiziksel Yol özelliğini bulun ve web sitesi içerik dosyalarının bulunduğu konumu yazın. Önceki yordamın 5. adımında not ettiğiniz küme disk kaynağının konumudur.
- Tamam'ı seçin.
Yük Devretme Kümesi Yöneticisi'nde genel bir betik oluşturarak web siteniz için yüksek kullanılabilirliği yapılandırma
IIS Web sunucuları için yüksek kullanılabilirliği yapılandırmaya yönelik son adım için, web sitesinin web sitesini ve uygulama havuzunu izlemek için kullanılacak genel betik kaynağını ayarlayın:
Her küme düğümünde, bu makalenin sonunda sağlanan betiği öğesine
Windows\System32\inetsrv\Clusweb7.vbs
kopyalayın.Varsayılan olarak, betik Varsayılan Web Sitesi adlı bir web sitesini ve DefaultAppPool adlı bir uygulama havuzunu izler. Bunlar doğru web sitesi ve uygulama havuzu değilse değişkenleri değiştirin
SITE_NAME and APP_POOL_NAME
. Betikteki aynı web sitesinin ve uygulama havuzunun tüm küme düğümlerinde mevcut olduğundan emin olun.Not
Adlar büyük/küçük harfe duyarlıdır.
Yönetim Araçları'na gidin ve Yük Devretme Kümesi Yöneticisi'ne tıklayın.
Kümeye bağlanın. Küme düğümlerinden birindeyseniz, küme otomatik olarak listede görünür.
Şunlardan birini yapın:
- Windows Server 2012, 2012 R2 ve 2016 için Roller'e sağ tıklayın ve ardından Rolü Yapılandır'ı seçerek oluşturun.
- Windows Server 2008 ve 2008 R2 için kümeye sağ tıklayın ve ardından Hizmet veya Uygulama Yapılandır'ı seçin. Sihirbaz yüksek kullanılabilirlik iş yükünü oluşturur.
Genel Betik'i seçin.
dosyasından betik dosyasını
%systemroot%\System32\Inetsrv\clusweb7.vbs
seçin.İstemci Erişim Noktası (CAP) adını istemcilerin yüksek kullanılabilirlik web sitesine bağlanmak için kullanacağı web sitesi adı olarak ayarlayın. Web sitesi CAP için kullanılacak statik IP'leri belirtin. Dinamik Ana Bilgisayar Yapılandırma Protokolü (DHCP) kullanıyorsanız bu seçenek görüntülenmez.
DepolamaYı Seç adımında, web sitesi içerik dosyalarının bulunduğu küme paylaşılan diskini seçin. Depolama, kümedeki diğer yüksek kullanılabilirlik uygulamaları tarafından kullanılmamalıdır.
Not
IIS paylaşılan yapılandırması için kullanılan dosya paylaşımı aynı kümede barındırılıyorsa, burada farklı bir disk kaynağı kullanılmalıdır.
Ayarları onayladıktan sonra sihirbaz küme grubunu, küme kaynaklarını ve kaynaklar arasındaki bağımlılıkları oluşturur ve ardından kaynakları çevrimiçi duruma getirir.
Not
Aynı yük devretme kümesinde birden çok yüksek kullanılabilirlik web sitesi barındırmak için yukarıdaki adımları izleyin. Ancak, her web sitesi ve farklı kümelenmiş paylaşılan depolama alanı için farklı bir betik dosyası kullanın. Örneğin, içinde
%systemroot%\System32\Inetsrv
ilk web sitesi için clusweb7.vbs , ikinci web sitesi için clweb7-2.vbs , üçüncü web sitesi için clweb7-3.vbs vb. kullanın. Her betik dosyası farklı bir web sitesini ve uygulama havuzunu izler.
Aşağıdaki betik yalnızca örnek amaçlıdır ve Microsoft tarafından açıkça desteklenmez. Bu betiğin IIS 7.0 veya sonraki bir sürüm kümelenmiş ortamda kullanılması kendi risk altındadır.
'<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>
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin