以下配置故障转移功能配置适应win2008r2企业版和数据中心版本,标准版和其它版不适应
Windows Server 2008故障转移群集类似,所说的故障转移群集的新特征并不是对所有的Windows Server 2008 R2版本都适用的。只适用于Windows Server 2008 R2企业版和Windows Server 2008 R2数据中心,不适用Windows Web Server 2008 R2和Windows Server 2008R2标准版。
1.安装准备:
1. 所有集群服务器都必须加入域。
2. 所有集群服务器都需要安装故障转移群集功能和IIS服务。
3. 所有集群服务器部署的网站名称、内容和应用程序池名必须一致。
4. 所有集群服务器都部署vbs脚本文件并配置相同的路径。
5. 只需要在主集群服务器上添加群集和服务应用程序即可。
6. 每个网站对应一个vbs脚本文件,每个网站需要配置一个服务应用程序。
2. 计算机加入域
1. 首先打开【计算机右键】,然后依次打开【属性】→【计算机名】→点击【更改】如下图加入域即可,之后【确定】再【确定】就可以了。
3. 故障转移群集功能安装
1. 首先打开【开始】菜单,然后依次打开【控制面板】→【管理工具】→【服务器管理器】,选择左边的【功能】,在右边页面点击【添加功能】。勾选【故障转移群集】,点击【下一步】按钮。
2. 点击【安装】按钮。
3. 安装中。
4. 安装成功,点击【关闭】按钮完成安装。
5. 在群集的每一台服务器上按照以上步骤安装故障服务功能。
3. IIS服务功能安装
以下地址有更详细的安装和配置过程如果有想知道更详细的配置可以直接打开网址进一步查看。
4. 添加群集
在主服务器上:
1. 首先打开【开始】菜单,然后依次打开【控制面板】→【管理工具】→【故障转移群集管理器】,点击【创建一个群集(C)…】
2. 点击【下一步】按钮。
3. 输入需要配置为群集的服务器的名称,点击【添加】按钮加入下方列表,也可以点击【浏览】按钮选择;输入完全后,点击【下一步】按钮。
4. 输入一个群集名称,设定一个未被使用的IP地址,点击【下一步】按钮。
5. 点击【下一步】按钮。
6. 添加群集成功,点击【完成】按钮退出。
7. 完成后,在左侧窗口会出现群集。节点就包含了之前选择的服务器,因此它们的故障转移群集管理器中也会出现这个群集。
5. 添加vbs脚本文件
'<begin script sample>
'This script provides highavailability for IIS websites
'By default, it monitors the"Default Web Site" and "DefaultAppPool"
'To monitor another web site,change the SITE_NAME below
'To monitor another applicationpool, change the APP_POOL_NAME below
'More thorough andapplication-specific health monitoring logic can be added to the script ifneeded
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 andapplication pool you want to configure high availability for
'Make sure that the same web siteand application pool in the script exist on all cluster nodes. Note that thenames 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 onthis node
Function FindSiteIndex(collection,siteName)
Dim i
FindSiteIndex= -1
For i = 0 To (CInt(collection.Count) - 1)
If collection.Item(i).GetPropertyByName("name").Value = siteNameThen
FindSiteIndex= i
Exit For
End If
Next
End Function
'Find the index of theapplication 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 = appPoolNameThen
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 theApplicationPool
Function GetAppPoolState(adminManager,appPool)
Dim configSection, index, appPoolState
setconfigSection = 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 thisnode
Function StartW3SVC()
Dim objWmiProvider
Dim objService
Dim strServiceState
Dim response
'Check tosee if the service is running
setobjWmiProvider = GetObject("winmgmts:/root/cimv2")
setobjService = objWmiProvider.get("win32_service='w3svc'")
strServiceState= objService.state
If ucase(strServiceState) = "RUNNING" Then
StartW3SVC= True
Else
'Ifthe 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 forthe 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 ifit is already started
If appPool.GetPropertyByName("state").Value = 1 Then
StartAppPool= True
Exit Function
End If
'Try Tostart the application pool
Set appPoolMethods = appPool.Methods
Set startMethod = appPoolMethods.Item(START_APP_POOL)
Set callStartMethod = startMethod.CreateInstance()
callStartMethod.Execute()
'Ifstarted 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)
ifsiteSection.GetPropertyByName("state").Value = 1 Then
'Siteis already started
StartWebSite= True
Exit Function
End If
'Try tostart site
Set siteMethods = siteSection.Methods
Set startMethod = siteMethods.Item(START_WEB_SITE)
Set executeMethod = startMethod.CreateInstance()
executeMethod.Execute()
'Check tosee 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 thesite
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 entrypoint
'Make sure the website and theapplication pool are started
Function Online( )
Dim bOnline
'Makesure w3svc is started
bOnline =StartW3SVC()
If bOnline <> True Then
Resource.LogInformation"The resource failed to come online because w3svc could not bestarted."
Online= False
Exit Function
End If
'Makesure the application pool is started
bOnline =StartAppPool()
If bOnline <> True Then
Resource.LogInformation"The resource failed to come online because the application pool could notbe started."
Online= False
Exit Function
End If
'Makesure the website is started
bOnline =StartWebSite()
If bOnline <> True Then
Resource.LogInformation"The resource failed to come online because the web site could not bestarted."
Online= False
Exit Function
End If
Online =true
End Function
'Cluster resource offline entrypoint
'Stop the website
Function Offline( )
StopWebSite()
Offline =true
End Function
'Cluster resource LooksAlive entrypoint
'Check for the health of thewebsite 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 thestate of the website
ifGetWebSiteState(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 thestate of the Application Pool
ifGetAppPoolState(adminManager, APP_POOL_NAME) <> 1 Then
Resource.LogInformation"The resource failed because Application Pool " & APP_POOL_NAME & " is not started."
LooksAlive= false
Exit Function
endif
' Web site and Application Pool state are valid return true
LooksAlive= true
End Function
'Cluster resource IsAlive entrypoint
'Do the same health checks asLooksAlive
'If a more thorough than what wedo in LooksAlive is required, this should be performed here
Function IsAlive()
IsAlive =LooksAlive
End Function
'Cluster resource Open entrypoint
Function Open()
Open =true
End Function
'Cluster resource Close entrypoint
Function Close()
Close =true
End Function
'Cluster resource Terminate entrypoint
Function Terminate()
Terminate= true
End Function
'<end script sample>
6. 添加服务应用程序
在主服务器上:
1. 右击【服务和应用程序】,选择【配置服务或应用程序(S)…】
2. 点击【下一步】按钮。
3. 选择【通用脚本】,点击【下一步】按钮。
4. 输入vbs文件的路径,每台服务器上都必须是同样的路径(比如文件名是clusweb7.vbs),点击【下一步】按钮。
5. 设置对外公开访问点的名称以及IP地址,点击【下一步】按钮。
6. 以后的步骤点击【下一步】按钮,直到配置完成,点击【完成】按钮完成添加服务应用程序。
7. 配置服务应用程序
. 默认出现故障是不能自动转移的,需要进行设置。在左侧窗口点击刚刚新建的服务和应用程序,在右侧窗口点击【属性】。
2. 选择【故障转移】选项卡,下图的配置是指6个小时之内出现故障的次数大于等于1次,不会执行自动转移,这里修改完之后点击【确定】按钮保存退出。
3. 选择vbs脚本文件,右击选择【属性】。
4. 选择【策略】选项卡,设定指定时段内重新启动的最多次数为0(这样设定后当前使用的服务器出现故障后不会自动尝试重启IIS服务,而是直接执行故障转移),点击【确定】按钮保存退出,至此全部安装设置完毕。