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为例)

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

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

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

新建正向查找区域NET

新建反向查找区域

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

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

测试解析

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

主机A创建群集TEST

主机B/C连接到群集TEST

主机B(192.168.0.25)

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

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

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

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

继续关闭B主机

此时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_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 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 = 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>

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

配置IIS故障转移

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

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

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

现在我们模拟WINC主机IIS网页服务挂掉/端口无法访问 打开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/alanlau/archive/2011/08/25/2153472.html

到此这篇关于WINDOWS2016故障转移群集(图文教程)的文章就介绍到这了,更多相关WINS2016故障转移群集内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • windows server 2016安装docker的方法步骤

    最近微软发布了windows server 2016,并原生支持docker,本文通过一系列的步骤,来学习怎么在windows server 2016安装docker. Windows支持两种不同类型的容器,即 Windows Server 容器和 Hyper V 容器. 这两种类型的容器的使用方式相同,也支持相同的容器映像. 但是它们的实现机制不同,提供了不同的安全隔离级别 Windows Server 容器 - 非常类似与Linux中的容器,使用通过命名空间.资源控制实现进程隔离.每个Win

  • Windows server 2016 安装oracle的教程图解

    1.安装oracle Oracle的安装网上太多了,我这就不重复了,主要是讲解一下连接. 本人使用的是虚拟机server 2016 ,主机重新装系统之后,重新安装并配置client花了大部分时间,所以在这里记录一下,希望以后配置的时候少走弯路. 2.安装oracle client. 3.配置oracle client network 如果重新安装虚拟机导致server地址变动,listerner.ora 和 tnsnames.ora 这部分资料要重新写入到oracle的文件中. SID,KEY,

  • Windows Server 2016 安装 Docker的过程及遇到问题

    必备条件 若要在 Windows Server 上运行容器,需要一台运行 Windows Server(半年频道).Windows Server 2019 或 Windows Server 2016 的物理服务器或虚拟机. 建议优先更新服务器 Windows Server 2016已经支持Docker技术,官方也给出了资料: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/quick-start/quick-st

  • Windows Server 2016 AD服务器搭建的步骤(图文)

    简介: AD是Active Directory的简写,中文称活动目录.活动目录(Active Directory)主要提供以下功能: 1)服务器及客户端计算机管理 2)用户服务 3)资源管理 4)桌面配置 5)应用系统支撑等 准备环境: 主机名 IP地址 配置 系统 dc1 172.16.200.171 2c_2u_4_80g Windows Server 2016 Standard 部署步骤 一.角色安装 1)打开服务器管理器,添加 角色和功能: 2) 点 下一步: 3)选 基于教授和基于功能

  • Windows Server 2008R2,2012,2016,2019各系统版本区别

    目录 常用版本简介 常用版本下载地址以及安装 下面重点介绍一下简单区别: 2019安装测评 其他网友的补充 网友推荐: 最近微软发布了2019 server系统,一般来说最老的2003微软已经不提供技术支持了,但毕竟适合服务器配置较低的系统使用,有没有发现很多人买了vps都是跑linux系统呢,linux对服务器硬件要求低,而且执行php速度很快,很多第三方lnmp控件,例如宝塔之类的工具,对于linux新手来说都比较容易上手. 常用版本简介 从当前较为常用的介绍,纵向的大版本有Windows

  • windows server 2012/2016 设置多用户远程桌面设置方法

    以下可以配置多用户,但是120天后还是会提示缺少远程桌面授权服务器,根本解决办法,请参考: //www.jb51.net/article/139543.htm 服务器设置多用户同时远程桌面,可以提高访问效率,避免人多抢登服务器. 1. 首先需要先安装远程桌面服务 配置组策略,运行框输入gpedit.msc,打开计算机配置–>管理模板->windows组件->然后在右边的菜单中选择远程桌面服务:双击打开.双击远程桌面会话主机->连接,点击限制连接的数量,设置如下. 这样设置就完成了.

  • 阿里云Win2016安装Apache和PHP环境图文教程

    一.说明:项目需要在阿里云的WindowsServer2016上部署web环境,已经安装了Mysql,所以就不用一键安装(如phpstudy或者wamp来安装web环境了),就独立安装了Apache和PHP 二.安装 1.按照链接下载好这3个东西,根据你的系统是32位还是64位来下载,我的环境是64位的 参考下载地址 VC2015(建议,因为VC2012可能会缺少某些dll) https://www.microsoft.com/en-US/download/details.aspx?id=481

  • 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为例) 互相ping测试连通性 (以单台主机A为例) 所有主机安装角色功能 DNS和故障转移群集 (以单台主机A为例) 所有主机配置DNS解析记录 并测试解析 新建正向查找区域NET 新建反向查找区域

  • SQLServer2014故障转移群集的部署的图文教程

    故障转移群集是Windows Server中的一个功能,自从在Windows NT 4.0 Enterprise Edition中首次引入群集以来,就可为服务器负载提供高可用性,是由一组独立的服务器组成, 并相互协作以提高服务和应用程序的可用性,群集中的某台计算机上发生故障时,资源会重定向到群集中的另一台计算机,工作量也会重新分发到群集中的另一台计算机.可以使用故障转移群集确保用户几乎一直具有访问基于服务器的重要资源的权限.故障转移群集是针对具有长期运行的内存中状态或具有大型的.频繁更新的数据状

  • Windows故障转移群集 和 SQLServer AlwaysOn 配置搭建详细教程

    目录 最详细的 SQLSERVER ALWAYSON配置教程 一.准备工作: 二.搭建故障转移群集 三.搭建数据库AlwaysOn 四.过程中可能遇到的问题 最详细的 SQLSERVER ALWAYSON配置教程 一.准备工作: 1.准备域控:服务器都在同一个域控(以下假设所在域控为 AAA.COM). 2.开启服务:域控要开启Remote Procedure Call (RPC)服务. 3.安装角色和服务:纳入群集节点的服务器必须先添加角色和功能 .NET3.5 和 故障转移群集,防火墙开启两

  • 如何创建SQL Server 2000故障转移群集

    在创建SQL Server 2000 故障转移群集之前,必须配置 Microsoft 群集服务 (MSCS) 并使用 Microsoft Windows NT4.0 或 Windows 2000 中的群集管理员创建至少一个群集磁盘资源.在运行 SQL Server 安装程序之前,在群集管理员中记下群集驱动器的位置,因为创建新的故障转移群集需要该信息.只有SQL Server 2000 企业版才支持群集. 1. 在"Microsoft SQL Server 安装向导的"欢迎"屏

  • Windows Server 2012 Hyper-V群集图文教程

    实验环境: 4台服务器都为Windows Server 2012 DataCenter操作系统 SRV2012服务器安装iSCSI目标服务器角色并配置2块虚拟磁盘给两台群集服务器共享使用. 群集服务器安装Hyper-V角色和群集功能. 操作步骤: 1. 系统群集配置 具体步骤请参考:http://bbs.winos.cn/thread-132599-1-1.html 本次测试是接着上次系统群集的环境进行的. 2. 配置Hyper-V高可用虚机 2.1 在群集管理器中创建的虚机 上次在配置系统群集

  • SQL Server 2016 无域群集配置 AlwaysON 可用性组图文教程

    windows server 2016 与 sql server 2016 都可用允许不许要加入AD ,管理方面省了挺多操作,也不用担心域控出现问题影响各服务器了. 本测试版本: window server 2016 datacenter + sql server 2016 ctp IP规划: 主机名 IP 说明 ad 192.168.2.2 域服务器(kk.com)windows xp Server131 192.168.2.131 节点 Server132 192.168.2.132 节点

  • Windows Server 2022 超融合部署(图文教程)

    目录 架构 思路 硬件 步骤大纲 详细部署 一.Active Directory域 二,故障转移群集 三,存储空间直通(S2D,Storage Spaces Direct) 四,Hyper-V虚拟机 最终效果 测试步骤 Windows Server 2022 超融合部署 超融合基础设施(HCI, Hyper-Converged Infrastructure)的概念简单说就是将<计算>和<存储>资源通过网络,以软件定义的形式打通,合二为一,从而能够实现关键应用的负载均衡.高可用.统一

  • SQLserver2014(ForAlwaysOn)安装图文教程

    SQLserver 2014 AlwaysOn在SQLserver 2012的基础之上,进行了很大程度的增加,如可以通过"添加 Azure 副本向导"简化了用于 AlwaysOn 可用性组的混合解决方案创建:辅助副本的最大数目从 4 增加到 8: 断开与主副本的连接时,或者在缺少群集仲裁期间,可读辅助副本现在保持可用于读取工作负荷: 故障转移群集实例 (FCI) 现在可使用群集共享卷 (CSV) 作为群集共享磁盘: 提供了一个新的系统函数 sys.fn_hadr_is_primary_

  • MySQL下高可用故障转移方案MHA的超级部署教程

    MHA介绍 MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10-30秒内),完成故障切换,部署MHA,可避免主从一致性问题,节约购买新服务器的费用,不影响服务器性能,易安装,不改变现有部署.      还支持在线切换,从当前运行master切换到一个新的master上面,只需要很短的时间(0.5-2秒内),此时仅仅阻塞写操作,并不影响读操作,便于主机硬件维护.   在有高可用,数据一致性要求的系统上,MHA 提供了有用的功能

  • 一键GHOST 硬盘版 安装图文教程

    一键GHOST 硬盘版 安装运行图文教程 一.安装: 1.确认你的第一硬盘是IDE或SATA硬盘. 注意:如果是SATA串口硬盘,一般不需要设置BIOS,如果不能运行GHOST,  请将BIOS设置成:Compatible(兼容模式)和IDE(ATA模式),如下图: 2.下载->解压->双击"一键GHOST硬盘版.exe" 3.一路"下一步",直到最后点击"完成". 二.设置选项:(可跳过) 开始->程序->一键GHOST

随机推荐