溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WINDOWS2016故障轉移的示例分析

發布時間:2022-01-19 13:28:22 來源:億速云 閱讀:202 作者:柒染 欄目:開發技術

這篇文章跟大家分析一下“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_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

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站點掛掉后切換主機提供服務的情況

注:

1、本測試中99IP對應的不是整個IIS服務 只是一個站點(默認站點)

2、用戶上傳的附件需要一個群集共用的存儲介質 目前還未解決 待完善

關于WINDOWS2016故障轉移的示例分析就分享到這里啦,希望上述內容能夠讓大家有所提升。如果想要學習更多知識,請大家多多留意小編的更新。謝謝大家關注一下億速云網站!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女