本文主要介绍WINDOWS2016故障转移集群,通过示例代码进行了详细介绍,具有一定的参考价值。感兴趣的朋友可以参考一下。
WIN2016故障转移群集
准备工作:
主机名
互联网协议(Internet Protocol)
域名
WINA
192.168.0.24
WINA。网
WINB
192.168.0.25
WINB。网
WINC
192.168.0.26
WINC。网
所有主机都配置主机信息。修改后的主机名IPDNS为本地IP(以单台主机A为例)
互相Ping对方以测试连通性(以单台主机A为例)
所有主机都安装了角色功能DNS和故障转移集群(以单台主机A为例)
所有主机都配置DNS解析记录和测试解析。
新正向查找区域网
创建新的反向搜索区域
创建新的正向查找区域记录。默认情况下,会生成一条本地记录。
创建新的反向查找记录(我们在创建新的正向记录时已经检查了PTR指针,默认情况下已经创建了B/C主机的反向记录)。现在我们只需要为这台机器创建一个新的PTR记录。
测试分析
主机配置故障转移群集B/C主机连接到群集指定的虚拟IP192.168.0.88
主机创建集群测试
主机B/C连接到集群测试
主机B(192.168.0.25)
检查集群中当前使用的主机(网卡应该有88IP)
所有主机安装IIS 80端口作为默认的web访问测试。
关闭活动主机(同时88网卡的主机只会有一台),看活动主机选哪个192.168.0.88:80,是否还能打开(使用网络中其他主机打开网页)。
关闭主机A后,主机B仍然可以打开88IP网页。
继续关闭主机b。
此时,C主机仍然可以打开88IP的网页。
参考:
https://blog.csdn.net/demonson/article/details/81708809
注意:
后期测试后,建议不要关闭集群中的所有主机,否则会出现问题。
高级:
以上内容是集群中一台主机宕机后,集群建设和业务恢复的情况。
以下记录了主机未关闭,IIS站点挂起且无法提供服务的情况。
新的文本文档被修改为具有以下内容的IIS.vbs(虚线中的内容)。注意要修改网站和应用池的名称(默认不需要修改)
开始脚本示例
该脚本为IIS网站提供了高可用性
默认情况下,它会监视“默认网站”和“默认应用池”
若要监视其他网站,请更改下面的SITE_NAME
若要监视另一个应用程序池,请更改下面的APP_POOL_NAME
如果需要,可以在脚本中添加更全面的特定于应用程序的健康监控逻辑
选项显式
DIM站点名称
DIM应用程序池名称
Dim开始_网站_网站
暗淡开始_应用程序_池
Dim SITES_SECTION_NAME
Dim应用程序池部分名称
Dim配置_应用程序主机_根
Dim站点_网站
注意:
将此替换为您要为其配置高可用性的站点和应用程序池
确保脚本中的相同网站和应用程序池存在于所有群集节点上。请注意,名称区分大小写。
SITE_NAME='默认网站''网站名称
APP_POOL_NAME='DefaultAppPool ' '应用程序池名称
开始网站=0
启动应用池=0
停止网站=1
SITES _ SECTION _ NAME=' system . application host/SITES '
应用程序池部分名称='系统.应用程序主机/应用程序池'
CONFIG _ APPHOST _ ROOT=' MACHINE/WEBROOT/APPHOST '
助手脚本函数
在这个节点上找到网站的索引
函数FindSiteIndex(集合,站点名称)
Dim i
FindSiteIndex=-1
对于i=0到(CInt(集合。计数)- 1)
如果收藏。项目(一)。GetPropertyByName('name ')。那么Value=siteName
FindSiteIndex=i
为.退出
如果…就会结束
然后
结束功能
在此节点上查找应用程序池的索引
函数FindAppPoolIndex(集合,appPoolName)
Dim i
FindAppPoolIndex=-1
对于i=0到(CInt(集合。计数)- 1)
如果收藏。项目(一)。GetPropertyByName('name ')。那么Value=appPoolName
FindAppPoolIndex=i
为.退出
如果…就会结束
然后
结束功能
获取网站的状态
函数GetWebSiteState(adminManager,siteName)
Dim sitesSection,sitesSectionCollection,siteSection,index,siteMethods,startMethod,executeMethod
设置sitesSection=adminManager .GetAdminSection(站点部分名称,配置应用程序主机根)
set sitesectioncollection=sites section .收藏品
index=FindSiteIndex(sitesectioncollection,siteName)
如果索引=-1,则
GetWebSiteState=-1
如果…就会结束
set site section=sitesectioncollection(index)
GetWebSiteState=siteSection .getpropertybname(' state ').价值
结束功能
获取应用程序池的状态
函数GetAppPoolState(管理管理器,应用池)
暗淡的配置节,索引,appPoolState
设置configSection=adminManager .GetAdminSection(应用程序池部分名称,配置应用程序主机根)
index=FindAppPoolIndex(配置部分.集合,应用池)
如果索引=-1,则
GetAppPoolState=-1
如果…就会结束
GetAppPoolState=configSection .收藏。项目(索引)。getpropertybname(' state ').价值
结束功能
在此节点上启动w3svc服务
函数StartW3SVC()
Dim objWmiProvider
暗淡的对象服务
Dim strServiceState
模糊响应
检查服务是否正在运行
set obj wmi provider=GetObject(' winmgmt:/root/CIM v2 ')
set obj service=objwmi provider。get(' win32 _ service=' w3svc ' ')
strServiceState=obj服务。状态
如果ucase(strServiceState)='正在运行',则
StartW3SVC=True
其他
如果该服务没有运行,请尝试启动它
response=objService .StartService()
响应=0或10表示启动请求已被接受
如果(响应0)和(响应10)则
StartW3SVC=False
其他
StartW3SVC=True
如果…就会结束
如果…就会结束
结束功能
启动网站的应用程序池
函数StartAppPool()
Dim ahwriter,appPoolsSection,appPoolsCollection,index,appPool,appPoolMethods,startMethod,callStartMethod
set ah writer=CreateObject(' Microsoft .应用程序主机。可写管理管理器’)
设置appPoolsSection=ahwriter .GetAdminSection(应用程序池部分名称,配置应用程序主机根)
设置apppools collection=apppools section .收藏品
index=FindAppPoolIndex(appPoolsCollection,APP_POOL_NAME)
设置appPool=appPoolsCollection .项目(索引)
查看它是否已经启动
如果应用程序池.getpropertybname(' state ').那么值=1
StartAppPool=True
退出功能
如果…就会结束
尝试启动应用程序池
设置appPoolMethods=appPool .方法
Set startMethod=appPoolMethods .项目(启动应用程序池)
设置callStartMethod=startMethod .CreateInstance()
callStartMethod .执行()
如果开始返回真,否则返回假
如果应用程序池.getpropertybname(' state ').那么值=1
StartAppPool=True
其他
StartAppPool=False
如果…就会结束
结束功能
启动网站
函数StartWebSite()
Dim ahwriter,siteSection,sitesSectionCollection,网站部分,索引,siteMethods,startMethod,executeMethod
set ah writer=CreateObject(' Microsoft .应用程序主机。可写管理管理器’)
设置sitesSection=ahwriter .GetAdminSection(站点部分名称,配置应用程序主机根)
set sitesectioncollection=sites section .收藏品
index=FindSiteIndex(sitesectioncollection,SITE_NAME)
set site section=sitesectioncollection(index)
如果站点部分.getpropertybname(' state ').那么值=1
网站已经启动
StartWebSite=True
退出功能
如果…就会结束
尝试启动网站
Set siteMethods=siteSection .方法
Set startMethod=siteMethods .项目(开始网站)
Set executeMethod=startMethod .CreateInstance()
执行方法。执行()
检查站点是否启动,如果没有则返回错误的
如果站点部分.getpropertybname(' state ').那么值=1
StartWebSite=True
其他
StartWebSite=False
如果…就会结束
结束功能
停止网站
函数停止网站()
Dim ahwriter,siteSection,sitesSectionCollection,网站部分,索引,siteMethods,startMethod,executeMethod,autoStartProperty
set ah writer=CreateObject(' Microsoft .应用程序主机。可写管理管理器’)
设置sitesSection=ahwriter .GetAdminSection(站点部分名称,配置应用程序主机根)
set sitesectioncollection=sites section .收藏品
index=FindSiteIndex(sitesectioncollection,SITE_NAME)
set site section=sitesectioncollection(index)
停止该网站
Set siteMethods=siteSection .方法
Set startMethod=siteMethods .项目(停止网站)
Set executeMethod=startMethod .CreateInstance()
执行方法。执行()
结束功能
群集资源入口点。更多详情请点击此处:
http://msdn。微软。com/en-us/library/aa 372846(vs . 85).aspx
群集资源联机入口点
确保网站和应用程序池已启动
功能在线( )
昏暗的光线
确保w3svc已启动
bOnline=StartW3SVC()
如果bOnline为真,则
资源LogInformation”由于w3svc无法启动,资源无法联机。"
在线=假
退出功能
如果…就会结束
确保应用程序池已启动
bOnline=StartAppPool()
如果bOnline为真,则
资源LogInformation”由于无法启动应用程序池,资源无法联机。"
在线=假
退出功能
如果…就会结束
确保网站已启动
bOnline=StartWebSite()
如果bOnline为真,则
资源LogInformation”由于网站无法启动,资源无法联机。"
在线=假
退出功能
如果…就会结束
在线=真
结束功能
群集资源脱机入口点
停止网站
离线功能( )
停止网站()
离线=真
结束功能
群集资源外观活动入口点
检查网站和应用程序池的运行状况
函数LooksAlive()
Dim adminManager,appPoolState,configSection,I,appPoolName,appPool,index
i=0
set admin manager=CreateObject(' Microsoft .应用程序主机。行政经理’)
appPoolState=-1
获取网站的状态
如果GetWebSiteState(adminManager,SITE_NAME) 1,则
资源“逻辑信息”资源失败,因为"网站名称"网站未启动。
LooksAlive=false
退出功能
如果…就会结束
获取应用程序池的状态
如果GetAppPoolState(adminManager,APP_POOL_NAME) 1则
资源'逻辑信息'资源失败,因为应用程序池'应用程序池名称'未启动。
LooksAlive=false
退出功能
如果…就会结束
网站和应用程序池状态有效返回真实的
LooksAlive=true
结束功能
群集资源是一个活动入口点
做和LooksAlive一样的健康检查
如果需要比我们在LooksAlive中做的更彻底的,应该在这里执行
函数伊萨live()
IsAlive=LooksAlive
结束功能
群集资源开放入口点
函数打开()
Open=true
结束功能
群集资源关闭入口点
函数关闭()
关闭=真
结束功能
群集资源终止入口点
函数终止()
Terminate=true
结束功能
结束脚本示例
将文件复制到所有群集主机的相同目录下如:C:\Windows\System32\inetsrv主机A打开故障转移群集管理器连接到群集试验
配置(同移民检查员移民检查)故障转移
此时我们在群集下角色列表里可以看到(同移民检查员移民检查)故障转移群集角色
查看一下WINC主机的网卡情况
测试访问http://192.168.0.99 - 可以打开
现在,我们模拟WINC主机IIS web服务挂起/端口无法访问。打开WINC主机IIS管理器,展开网页并停止默认网站。
再次打开浏览器,打开http://192 . 168 . 0 . 99——还是可以打开的。
主机A上的查看群集角色已自动切换到WINB以提供web服务。
检查WINB主机的网卡信息。99IP已自动切换到WINB。我们正在打开WINB的网页。
同样,当我们关闭WINB的IIS网站99时,我们将切换到WINA的访问,这仍然不受影响。
到目前为止,我们已经实现了IIS站点挂机后主机切换主机提供服务而不停机的情况。
注意:
1.在这个测试中,99IP并不对应整个IIS服务,只是对应一个站点(默认站点)。
2.用户上传的附件需要一个集群共享的存储介质,目前还没有解决,需要改进。
参考:
https://www . cnblogs . com/Alan lau/archive/2011/08/25/2153472 . html
关于WINDOWS2016故障转移集群的这篇文章到此为止(图文教程)。有关WINS2016故障转移群集的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。