文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

WINDOWS2016故障转移的示例分析

2023-06-26 07:56

关注

这篇文章跟大家分析一下“WINDOWS2016故障转移的示例分析”。内容详细易懂,对“WINDOWS2016故障转移的示例分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“WINDOWS2016故障转移的示例分析”的知识吧。

WIN2016故障转移群集

准备工作:

主机名

IP

域名

WINA

192.168.0.24

WINA.NET

WINB

192.168.0.25

WINB.NET

WINC

192.168.0.26

WINC.NET

所有主机配置主机信息 修改好主机名IP  DNS为本机IP   (以单台主机A为例)

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

互相ping测试连通性 (以单台主机A为例)

WINDOWS2016故障转移的示例分析

所有主机安装角色功能 DNS和故障转移群集 (以单台主机A为例)

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

所有主机配置DNS解析记录 并测试解析

新建正向查找区域NET

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

新建反向查找区域

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

新建正向查找区域记录 默认已生成本机记录

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

新建反向查找记录  (我们新建正向记录勾选了PTR指针 默认已经新建了B/C主机的反向记录) 现在只需新建一条本机的PTR记录

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

测试解析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

A主机配置故障转移群集 B/C主机连接到群集 指定虚拟IP192.168.0.88

主机A创建群集TEST

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

主机B/C连接到群集TEST

主机B(192.168.0.25)

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

查看群集当前在用主机为哪台  (网卡应有88IP)

WINDOWS2016故障转移的示例分析

所有主机安装IIS    80端口为默认网页 访问测试

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

关闭掉在用主机(网卡有88的主机 同时只会有一台)  查看在用主机被选为了哪台 192.168.0.88:80是否还可以打开 (使用网络中其他主机来打开网页)

关闭掉A主机后 B主机拥有了88IP 网页依然可以打开

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

继续关闭B主机

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

此时C主机拥有了88IP  网页依然可以打开

参考:

https://blog.csdn.net/demonson/article/details/81708809

注:

经后期测试 建议不要将群集所有主机全部宕机 否则会出现问题

进阶:

以上内容为群集搭建及群集中某主机宕机后恢复业务的情况

下面记录一种主机没有宕机 IIS站点挂掉无法提供服务的情况  

新建文本文档 修改为IIS.vbs  内容如下(虚线内内容)  注意修改网站和应用程序池名称(默认无需修改)

'<begin script sample>  'This script provides high availability 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 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_NAMEDIM APP_POOL_NAMEDim START_WEB_SITEDim START_APP_POOLDim SITES_SECTION_NAMEDim APPLICATION_POOLS_SECTION_NAMEDim CONFIG_APPHOST_ROOTDim STOP_WEB_SITE  'Note:'Replace this with the site and application pool you want to configure high availability for'Make sure that the same web site 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 = 0START_APP_POOL = 0STOP_WEB_SITE  = 1SITES_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 nodeFunction 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 nodeFunction 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 websiteFunction 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 ApplicationPoolFunction 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").ValueEnd Function  'Start the w3svc service on this nodeFunction 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 websiteFunction 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 websiteFunction 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 websiteFunction 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 startedFunction 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 websiteFunction Offline( )     StopWebSite()    Offline = true End Function  'Cluster resource LooksAlive entry point'Check for the health of the website and the application poolFunction 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 = trueEnd 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 hereFunction IsAlive()       IsAlive = LooksAlive End Function  'Cluster resource Open entry pointFunction Open()     Open = true End Function  'Cluster resource Close entry pointFunction Close()     Close = true End Function  'Cluster resource Terminate entry pointFunction Terminate()     Terminate = true End Function'<end script sample>

将文件复制到所有群集主机的相同目录下 如:C:\Windows\System32\inetsrv主机A打开故障转移群集管理器 连接到群集TEST

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

配置IIS故障转移

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

WINDOWS2016故障转移的示例分析

此时我们在群集下角色列表里可以看到IIS故障转移群集角色

WINDOWS2016故障转移的示例分析

查看一下WINC(192.168.0.26)主机的网卡情况

WINDOWS2016故障转移的示例分析

测试访问http://192.168.0.99  --------  可以打开

WINDOWS2016故障转移的示例分析

现在我们模拟WINC主机IIS网页服务挂掉/端口无法访问 打开WINC主机IIS管理器 展开网页 停止默认网站

WINDOWS2016故障转移的示例分析

再次打开浏览器 打开http://192.168.0.99  ----- 依然可以打开

WINDOWS2016故障转移的示例分析

主机A上查看群集角色 已经自动切换到WINB提供web服务

WINDOWS2016故障转移的示例分析

查看WINB主机网卡信息   99IP已自动切换到WINB 我们打开的是WINB的网页

WINDOWS2016故障转移的示例分析

同理 我们关闭WINB的IIS网站 99又会切换到WINA 访问依然不受影响

WINDOWS2016故障转移的示例分析

至此 我们实现了 主机在非宕机情况下 IIS站点挂掉后切换主机提供服务的情况

注:

本测试中99IP对应的不是整个IIS服务 只是一个站点(默认站点)

用户上传的附件需要一个群集共用的存储介质 目前还未解决 待完善

关于WINDOWS2016故障转移的示例分析就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下编程网网站!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯