WINDOWS2016故障轉(zhuǎn)移群集(圖文教程)
WIN2016故障轉(zhuǎn)移群集
準(zhǔn)備工作:
主機(jī)名 | IP | 域名 |
WINA | 192.168.0.24 | WINA.NET |
WINB | 192.168.0.25 | WINB.NET |
WINC | 192.168.0.26 | WINC.NET |
所有主機(jī)配置主機(jī)信息 修改好主機(jī)名IP DNS為本機(jī)IP (以單臺主機(jī)A為例)


互相ping測試連通性 (以單臺主機(jī)A為例)

所有主機(jī)安裝角色功能 DNS和故障轉(zhuǎn)移群集 (以單臺主機(jī)A為例)




所有主機(jī)配置DNS解析記錄 并測試解析
新建正向查找區(qū)域NET









新建反向查找區(qū)域








新建正向查找區(qū)域記錄 默認(rèn)已生成本機(jī)記錄







新建反向查找記錄 (我們新建正向記錄勾選了PTR指針 默認(rèn)已經(jīng)新建了B/C主機(jī)的反向記錄) 現(xiàn)在只需新建一條本機(jī)的PTR記錄



測試解析


A主機(jī)配置故障轉(zhuǎn)移群集 B/C主機(jī)連接到群集 指定虛擬IP192.168.0.88
主機(jī)A創(chuàng)建群集TEST









主機(jī)B/C連接到群集TEST
主機(jī)B(192.168.0.25)


查看群集當(dāng)前在用主機(jī)為哪臺 (網(wǎng)卡應(yīng)有88IP)

所有主機(jī)安裝IIS 80端口為默認(rèn)網(wǎng)頁 訪問測試









關(guān)閉掉在用主機(jī)(網(wǎng)卡有88的主機(jī) 同時(shí)只會有一臺) 查看在用主機(jī)被選為了哪臺 192.168.0.88:80是否還可以打開 (使用網(wǎng)絡(luò)中其他主機(jī)來打開網(wǎng)頁)
關(guān)閉掉A主機(jī)后 B主機(jī)擁有了88IP 網(wǎng)頁依然可以打開


繼續(xù)關(guān)閉B主機(jī)


此時(shí)C主機(jī)擁有了88IP 網(wǎng)頁依然可以打開
參考:
https://blog.csdn.net/demonson/article/details/81708809
注:
經(jīng)后期測試 建議不要將群集所有主機(jī)全部宕機(jī) 否則會出現(xiàn)問題
進(jìn)階:
以上內(nèi)容為群集搭建及群集中某主機(jī)宕機(jī)后恢復(fù)業(yè)務(wù)的情況
下面記錄一種主機(jī)沒有宕機(jī) IIS站點(diǎn)掛掉無法提供服務(wù)的情況
新建文本文檔 修改為IIS.vbs 內(nèi)容如下(虛線內(nèi)內(nèi)容) 注意修改網(wǎng)站和應(yīng)用程序池名稱(默認(rèn)無需修改)
'<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" '網(wǎng)站名稱
APP_POOL_NAME = "DefaultAppPool" '應(yīng)用程序池名
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>將文件復(fù)制到所有群集主機(jī)的相同目錄下 如:C:\Windows\System32\inetsrv主機(jī)A打開故障轉(zhuǎn)移群集管理器 連接到群集TEST








配置IIS故障轉(zhuǎn)移




此時(shí)我們在群集下角色列表里可以看到IIS故障轉(zhuǎn)移群集角色

查看一下WINC(192.168.0.26)主機(jī)的網(wǎng)卡情況

測試訪問http://192.168.0.99 -------- 可以打開

現(xiàn)在我們模擬WINC主機(jī)IIS網(wǎng)頁服務(wù)掛掉/端口無法訪問 打開WINC主機(jī)IIS管理器 展開網(wǎng)頁 停止默認(rèn)網(wǎng)站

再次打開瀏覽器 打開http://192.168.0.99 ----- 依然可以打開

主機(jī)A上查看群集角色 已經(jīng)自動切換到WINB提供web服務(wù)

查看WINB主機(jī)網(wǎng)卡信息 99IP已自動切換到WINB 我們打開的是WINB的網(wǎng)頁

同理 我們關(guān)閉WINB的IIS網(wǎng)站 99又會切換到WINA 訪問依然不受影響

至此 我們實(shí)現(xiàn)了 主機(jī)在非宕機(jī)情況下 IIS站點(diǎn)掛掉后切換主機(jī)提供服務(wù)的情況
注:
1、本測試中99IP對應(yīng)的不是整個(gè)IIS服務(wù) 只是一個(gè)站點(diǎn)(默認(rèn)站點(diǎn))
2、用戶上傳的附件需要一個(gè)群集共用的存儲介質(zhì) 目前還未解決 待完善
參考:
https://www.cnblogs.com/alanlau/archive/2011/08/25/2153472.html
到此這篇關(guān)于WINDOWS2016故障轉(zhuǎn)移群集(圖文教程)的文章就介紹到這了,更多相關(guān)WINS2016故障轉(zhuǎn)移群集內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
win2003 iis 不支持請求(iis iso)的解決方法分析
今天有網(wǎng)友說,本站提供的文件無法下載,我看了一下,是iso文件,訪問時(shí)提示不支持請求,原來iis默認(rèn)不支持一些格式的下載,下面是通用的解決思路。2009-10-10
關(guān)閉網(wǎng)站的wscript.shell命令行執(zhí)行
最簡單的辦法是直接卸載后刪除相應(yīng)的程序文件。2009-08-08
你的服務(wù)器IIS最大并發(fā)數(shù)有多少?
做完假設(shè),現(xiàn)在做限制,設(shè)置站點(diǎn)保持HTTP連接,超時(shí)設(shè)置成0,就是不會超時(shí)。在站點(diǎn)請求的default.aspx頁面設(shè)置線程Thread.Sleep(int.MaxValue),接下來開發(fā)一個(gè)用來保持連接的小程序。2009-08-08
window環(huán)境下npm install node-sass報(bào)錯(cuò)的解決方法
這篇文章主要介紹了window環(huán)境下npm install node-sass報(bào)錯(cuò) ,需要的朋友可以參考下2017-11-11
Windows環(huán)境下安裝配置Mosquitto服務(wù)及入門操作介紹詳解
這篇文章主要為大家詳細(xì)介紹了Windows環(huán)境下安裝配置Mosquitto服務(wù)及入門操作介紹詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
青云服務(wù)器安全設(shè)置器2.3最新版版提供下載
青云服務(wù)器 安全設(shè)置文件,利用批處理,vbs服務(wù)器要求:所有盤符必須為NTFS磁盤格式,服務(wù)器以前沒有設(shè)置過權(quán)限類的設(shè)置,新裝好的服務(wù)器系統(tǒng)最佳!2008-02-02

