WSFC雖然只是Window Server上面的一個(gè)功能,但其實(shí)這個(gè)產(chǎn)品內(nèi)部的組件協(xié)同性以及和微軟其它解決方案的協(xié)同性特別強(qiáng),對比微軟其它產(chǎn)品,老王認(rèn)為WSFC的MSDN blog做得非常好,寫過很多篇關(guān)于WSFC內(nèi)部組件運(yùn)作機(jī)理的博客,主要用心閱讀加以實(shí)踐就能很快的掌握,至于和其它產(chǎn)品的協(xié)同性,例如WSFC會和AD,SMB協(xié)同,以提供群集基本運(yùn)作,上層應(yīng)用又有exchange dag,sql ag基于WSFC實(shí)現(xiàn)應(yīng)用高可用,外層管理又有SCVMM,Honolulu,OMS,SCOM,SCO等管理套件,可以說WSFC即是數(shù)據(jù)中心運(yùn)作的邏輯高可用實(shí)現(xiàn),又是一個(gè)應(yīng)用持續(xù)運(yùn)作避免不了的中轉(zhuǎn)站
成都創(chuàng)新互聯(lián)主營濰城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件定制開發(fā),濰城h5小程序定制開發(fā)搭建,濰城網(wǎng)站營銷推廣歡迎濰城等地區(qū)企業(yè)咨詢
這篇文章中老王想和大家探討下WSFC基本運(yùn)作中所依賴的AD與SMB,究竟什么情況下會依賴,為什么要依賴它們,如果沒有它們會產(chǎn)生怎樣的效果。
首先先談AD,沒什么好說的,相信大家或多或少對微軟AD域都有一些了解,也是微軟為數(shù)不多可以拿出手的產(chǎn)品之一,AD最主要的用途就是集中身份驗(yàn)證,通過一套身份數(shù)據(jù)庫,就可以為環(huán)境里面的用戶,計(jì)算機(jī),應(yīng)用程序統(tǒng)一提供身份驗(yàn)證,進(jìn)一步還可以針對于工作環(huán)境做集中管理,策略分發(fā),資源分發(fā)。
和WSFC最直接相關(guān)聯(lián)的就是身份驗(yàn)證了,我們知道現(xiàn)在WSFC部署可以分為正常AD集成, RODC,無CNO,工作組,多域部署,其中無CNO,工作組模式,多域部署模式類似,都是不在群集中產(chǎn)生計(jì)算機(jī)對象,這樣導(dǎo)致的效果就是群集應(yīng)用不能執(zhí)行Kerberos身份驗(yàn)證,只能走NTLM驗(yàn)證,或單獨(dú)的驗(yàn)證機(jī)制,例如SQL SA驗(yàn)證,這三種部署模式部署出來的群集所能夠支持的應(yīng)用也受限,例如不支持MSMQ,對于文件服務(wù)器群集不能使用kerberos身份驗(yàn)證,hyper-v群集不支持實(shí)時(shí)遷移
其根本原因是因?yàn)槿杭锩鏇]有CNO對象,我們都知道高可用群集的一個(gè)主要實(shí)現(xiàn)是要做到對外就像是一臺計(jì)算機(jī)一樣,應(yīng)用不知道我是在和一個(gè)群集交互,只知道我在一個(gè)一個(gè)計(jì)算機(jī)交互,并且我應(yīng)該是可以一直和它進(jìn)行交互的,但實(shí)際上這個(gè)計(jì)算機(jī)是邏輯構(gòu)建的,背后會由群集組件協(xié)調(diào)不同節(jié)點(diǎn)提供服務(wù),正常來講這個(gè)對外計(jì)算機(jī)應(yīng)該要有自己的netbios名稱,DNS名稱,計(jì)算機(jī)對象,才算一個(gè)可以完整的可以進(jìn)行訪問和身份驗(yàn)證的計(jì)算機(jī),如果我們采用無CNO,工作組模式,多域部署,則這個(gè)群集邏輯計(jì)算機(jī)對外就只有一個(gè)DNS名稱,而不能提供身份驗(yàn)證服務(wù)。
在一個(gè)AD域環(huán)境中,當(dāng)用戶發(fā)送登陸域請求時(shí),本地Local Secutity Subsystem首先會向域控申請用戶的session ticket,如果用戶賬戶密碼正確,則頒發(fā),拿到用戶ticket后,LSS還會向域控申請計(jì)算機(jī)的session ticket,校驗(yàn)計(jì)算機(jī)密碼是否正確,如果和AD中符合則頒發(fā)session ticket,本地LSS拿到這兩個(gè)ticket后,才會為這次登陸構(gòu)建access token令牌,后續(xù)用戶才可以使用這個(gè)token去執(zhí)行程序,得知這個(gè)過程是非常關(guān)鍵的,這樣即是說每次身份驗(yàn)證登陸都需要和AD拿用戶的ticket和計(jì)算機(jī)ticket,一旦其中一個(gè)失效,則這次驗(yàn)證失敗,無法登陸。
在WSFC環(huán)境中這同樣很重要,舉個(gè)例子,正常情況下,如果我配置了一個(gè)DTC群集,外面的程序要想訪問,是可以直接通過DTC群集的CNO對外進(jìn)行身份驗(yàn)證,這樣做的目的是為了給用戶提供一個(gè)統(tǒng)一邏輯,當(dāng)后臺一個(gè)節(jié)點(diǎn)宕機(jī),用戶還是使用同樣的名稱訪問,只不過是另外一個(gè)節(jié)點(diǎn)提供服務(wù)。但是,如果DTC當(dāng)前所在的節(jié)點(diǎn),計(jì)算機(jī)對象出現(xiàn)了問題,例如計(jì)算機(jī)對象被誤刪除了,這時(shí)候通過cluster log可以看到日志,RHS會定期檢測機(jī)器網(wǎng)絡(luò)名稱,會一直檢測到這個(gè)機(jī)器網(wǎng)絡(luò)名稱無法訪問,當(dāng)前節(jié)點(diǎn)無法與AD聯(lián)系,無法登陸,這時(shí)候,群集并不會因此發(fā)生故障轉(zhuǎn)移。但用戶程序可以感知到,這時(shí)候訪問到群集無法執(zhí)行身份驗(yàn)證了,由此看來雖然我們有了邏輯的CNO,但仍需要關(guān)注各節(jié)點(diǎn)的AD計(jì)算機(jī)狀態(tài),因此具體身份驗(yàn)證還是會涉及到應(yīng)用所在節(jié)點(diǎn),這時(shí)產(chǎn)生的直接效果就是DTC這個(gè)群集應(yīng)用無法執(zhí)行身份驗(yàn)證,因?yàn)樗诠?jié)點(diǎn)無法正常登陸到AD拿到計(jì)算機(jī)ticket,處理方式就是最終排錯發(fā)現(xiàn)問題,先把DTC轉(zhuǎn)移至其它正??梢院虳C拿到ticket的的節(jié)點(diǎn)上,恢復(fù)正常身份驗(yàn)證,然后再從AD恢復(fù)被刪除的計(jì)算機(jī)對象。
節(jié)點(diǎn)域計(jì)算機(jī)對象的正常是否,可以直接影響到需要身份驗(yàn)證的群集應(yīng)用,因此群集應(yīng)用的服務(wù)賬戶,計(jì)算機(jī)對象,CNO對象同樣重要,都是群集在AD中需要重點(diǎn)關(guān)注的內(nèi)容
除了對于計(jì)算機(jī)ticket的依賴,WSFC還會依賴AD實(shí)現(xiàn)Kerberos驗(yàn)證,例如SQL群集,SQL Server使用Windows身份驗(yàn)證時(shí),SQL Server通過Windows安全支持提供程序接口(SSPI)間接支持Kerberos,默認(rèn)情況下SQL 會首先嘗試通過SSPI和AD協(xié)商,如果可以執(zhí)行Kerberos驗(yàn)證,則通過Kerberos驗(yàn)證,如果無法通過則回退為NTLM驗(yàn)證,因此很多SQL管理員很多時(shí)候遇到的驗(yàn)證問題往往都和SPN有關(guān),SQL群集配置的時(shí)候會寫入服務(wù)賬戶特有的SPN值,如果寫入失敗,或后期被誤刪除,無法校驗(yàn)SPN,則Kerberos驗(yàn)證將失敗,因此對于使用Kerberos驗(yàn)證的程序,也需要關(guān)注其服務(wù)賬戶以及CNO VCO對象的SPN值,可以在健康的時(shí)候進(jìn)行記錄下來,以便日后恢復(fù)時(shí)增補(bǔ)
CNO VCO會寫入AD計(jì)算機(jī)的三個(gè)屬性:
DnsHostName :FQDN值
ServicePrincipalName:SPN值
HOST / 虛擬服務(wù)器的NetBIOS名稱
HOST / FQDN的虛擬服務(wù)器
MSClusterVirtualServer / 虛擬服務(wù)器的NetBIOS名稱
MSClusterVirtualServer / FQDN的虛擬服務(wù)器
MSServerCluster / 虛擬服務(wù)器的NetBIOS名稱(此SPN僅為默認(rèn)群集名稱創(chuàng)建)
MSServerCluster / FQDN(此SPN僅為默認(rèn)群集名稱創(chuàng)建)
DisplayName :網(wǎng)絡(luò)名稱資源的NetBIOS名稱
上述SPN值為群集安裝后默認(rèn)注冊的SPN,如果基于群集上層跑了一些應(yīng)用,應(yīng)用如果需要進(jìn)行kerberos驗(yàn)證,也會注冊SPN到CNO或VCO,以前曾經(jīng)有一些第三方軟件會在注冊的時(shí)候僅針對單節(jié)點(diǎn)注冊SPN,導(dǎo)致故障轉(zhuǎn)移后用戶還需要訪問新的名稱進(jìn)行驗(yàn)證,后來開始大部分應(yīng)用都會直接注冊群集CNO名稱,當(dāng)一個(gè)節(jié)點(diǎn)宕機(jī),自動切換至另外一個(gè)節(jié)點(diǎn)驗(yàn)證
以上是老王認(rèn)為WSFC對于AD主要的兩點(diǎn)依賴,如果你的程序訪問賬戶密碼正確,但就是無法正常驗(yàn)證群集應(yīng)用,可以進(jìn)一步查看是否由于應(yīng)用所在節(jié)點(diǎn)計(jì)算機(jī)對象不正常,或未按照預(yù)期的kerberos驗(yàn)證,請查看服務(wù)賬戶和VCO對象的SPN值是否正確,如果使用沒有VCO則檢查CNO,這里需要注意的是,群集并不會因?yàn)槟愕墓?jié)點(diǎn)計(jì)算機(jī)對象丟失或SPN值丟失而進(jìn)行故障轉(zhuǎn)移,所以如果基于群集的應(yīng)用驗(yàn)證出現(xiàn)問題還需要去檢查程序和AD,群集只是能做到提供一個(gè)統(tǒng)一的對外名稱,一個(gè)節(jié)點(diǎn)宕機(jī),你可以繼續(xù)通過這個(gè)統(tǒng)一對外名稱來完成驗(yàn)證。
另外還有一點(diǎn),AD組策略的計(jì)算機(jī)密碼重置期限有時(shí)會影響到計(jì)算機(jī)對象或CNO對象無法正常聯(lián)機(jī),因此建議把群集計(jì)算機(jī)對象和節(jié)點(diǎn)對象統(tǒng)一放置到單獨(dú)OU,針對此OU單獨(dú)設(shè)置一個(gè)計(jì)算機(jī)嗎重置期限,可以長一些,在群集OU對象或CNO對象上面配置防刪。
上述簡單為大家介紹了下老王一時(shí)想起的WSFC對于AD的依賴,CNO,VCO,登陸憑證驗(yàn)證,計(jì)算機(jī)密碼重置策略,Kerberos驗(yàn)證,SPN,如有不全之處歡迎大家補(bǔ)充
對于SMB,相信大家都有所了解,它是一個(gè)網(wǎng)絡(luò)文件共享協(xié)議,允許應(yīng)用程序和終端用戶從遠(yuǎn)端的文件服務(wù)器訪問文件資源,區(qū)別于FTP,SMB是可以直接互相傳輸,而不需要有上傳下載的過程
在之前的版本2003 2000 2008中,大家對于SMB的理解大概就是一個(gè)共享傳輸協(xié)議,我兩個(gè)機(jī)器之間做共享互相拷貝文件走的是SMB協(xié)議,主要用作客戶端互傳,文件服務(wù)器共享,DFS等等,但是到了2012開始,SMB協(xié)議變的越來越重要,例如引入了SMB多通道,SMB Direct(RDMA),SOFS模型,性能開始有了很大提升,更多的加入到企業(yè)級場景中,2012R2開始,官方正式宣布,群集內(nèi)部CSV元數(shù)據(jù)傳輸與CSV重定向流量由走SMB協(xié)議,2016宣布存儲復(fù)制各節(jié)點(diǎn)走SMB協(xié)議。
我們首先來關(guān)注CSV部分對于SMB的依賴,2012R2開始,CSV使用SMB作為各節(jié)點(diǎn)間元數(shù)據(jù)交互與重定向IO的流量,這里簡單和大家介紹介紹下CSV,以2012R2架構(gòu)為例,CSV給管理員的感覺好像是它被掛載在所有節(jié)點(diǎn),所有節(jié)點(diǎn)都可以訪問CSV卷,但事實(shí)上,真正CSV同一時(shí)刻只實(shí)際被掛載到一個(gè)節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)稱為協(xié)調(diào)者節(jié)點(diǎn),只有協(xié)調(diào)節(jié)點(diǎn)得可以直接和下層的NTFS文件系統(tǒng)交互,其它節(jié)點(diǎn)如果希望執(zhí)行文件操作,創(chuàng)建文件,關(guān)閉文件,重命名文件,更改文件屬性,刪除文件,更改文件大小,任何文件系統(tǒng)控制等,都需要把要執(zhí)行的操作,以及目標(biāo)文件,這些元數(shù)據(jù)信息反饋給協(xié)調(diào)者節(jié)點(diǎn),最終由協(xié)調(diào)者節(jié)點(diǎn)完成真正的對文件系統(tǒng)操作,CSV并不是一個(gè)文件系統(tǒng),它只是一個(gè)編排層,編排各節(jié)點(diǎn)按照順序讀取寫入NTFS或REFS文件系統(tǒng),還有一種流量則是重定向流量,這種流量是比較可怕的,當(dāng)該節(jié)點(diǎn)失去到物理磁盤的資格,所有寫入讀取操作,都將被轉(zhuǎn)發(fā)到協(xié)調(diào)者節(jié)點(diǎn)執(zhí)行,這會給協(xié)調(diào)者節(jié)點(diǎn)帶來巨大流量,同時(shí)失去資格的節(jié)點(diǎn)上面應(yīng)用也將低效運(yùn)作,這種重定向流量也會使用SMB協(xié)議傳輸。
針對于元數(shù)據(jù)交互和重定向IO,2012開始SMB引入多通道機(jī)制,群集會挑選網(wǎng)絡(luò)度量值最低的作為CSV流量,兩個(gè)相近度量值得網(wǎng)絡(luò)會通過SMB多通道執(zhí)行,默認(rèn)情況下僅群集通信網(wǎng)絡(luò)度量值最低,度量值得數(shù)字評定2012開始也和網(wǎng)卡是否支持RDMA,RSS有關(guān),管理員也可以手動指定網(wǎng)絡(luò)度量值,CSV流量可以利用SMB多通道和SMB RDMA等技術(shù)。
以上為官方的說法,那么如果群集沒有CSV,沒有使用文件共享見證,也不提供文件共享服務(wù),是否就可以關(guān)閉SMB端口了呢,因?yàn)槿ツ瓴《爵[得好多公司安全部門提出關(guān)閉445端口的需求,那么群集這邊是否可以支持,老王做了個(gè)嘗試,當(dāng)前群集無CSV,沒有使用文件共享見證,也不提供文件共享服務(wù),老王直接禁用掉SMB服務(wù)
關(guān)閉方法
1、運(yùn)行regedit打開注冊表
2、依次依次點(diǎn)擊注冊表選項(xiàng)”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters
3、在右邊空白處右擊新建“QWORD(64位)值”,然后重命名為“SMBDeviceEnabled”,再把這個(gè)子鍵的值改為0
4、禁用系統(tǒng)Server服務(wù)
5、重啟電腦 SMB 445端口不再偵聽
配置完成后雖然群集可以正常啟動,但可以看到工作已經(jīng)很不正常,例如DTC應(yīng)用無法聯(lián)機(jī),查看日志提示DCOM無法連接到DTC VCO對象
事實(shí)上老王已經(jīng)猜到可能會是這樣的結(jié)果,因?yàn)镾MB協(xié)議運(yùn)作多年,依賴它的服務(wù)眾多,例如此外CIFS,SMB,RPC,DFS,Netlogon等等,這種徹底關(guān)掉的方式還需要停止Server服務(wù),很多依賴該服務(wù)的功能都將停止運(yùn)作
另外官網(wǎng)沒說的還有兩點(diǎn),其一,客戶端登陸到域的過程會從netlogon獲取開機(jī)登陸啟動腳本,如果由組策略下發(fā),用戶也會從SYSVOL目錄去獲取組策略GPT,而這兩個(gè)目錄都是在域控上面的共享目錄,用戶勢必要通過SMB協(xié)議去訪問,如果禁止SMB,則新的組策略下發(fā)將不正常
其二,老王發(fā)現(xiàn)過一個(gè)有意思的事情,群集節(jié)點(diǎn)net share除了可以看到默認(rèn)C盤會共享外,如果自身有見證磁盤,也會把見證磁盤進(jìn)行共享,群集不會無緣無故設(shè)計(jì)成這樣,雖然我們關(guān)閉SMB之后,群集可以正常啟動,但見證磁盤不再共享,老王猜想還是會對群集產(chǎn)生一些影響。
總結(jié)來看如果要關(guān)閉SMB端口,首先確保群集沒有應(yīng)用CSV,其二可能承擔(dān)無法應(yīng)用組策略風(fēng)險(xiǎn),其三上層應(yīng)用可能會不正常工作,具體還要根據(jù)不同的群集應(yīng)用進(jìn)行測試,只有確??隙ú灰蕾囉赟MB,Server服務(wù)的應(yīng)用才可以正常工作
還有一種途徑即更改群集的SMB端口,網(wǎng)上有已經(jīng)寫好的修改SMB端口教程,但是按照網(wǎng)上的方式修改后,所有要和群集節(jié)點(diǎn)通信的設(shè)備必須也將SMB端口改為和群集端口一致,我舉個(gè)例子,例如SQL群集把SMB端口改為555,那么需要和AD下載組策略把,但是DC默認(rèn)是445端口,所以也需要把DC的SMB端口修改為555,連SQL的應(yīng)用也要修改SMB端口為555,如果是后端SOFS群集改SMB端口,則前端HV也要修改,如此一來未免過于麻煩,如果在沒有域的單機(jī)環(huán)境下,修改SMB端口以維持SMB協(xié)議也許可行,但是在域環(huán)境下涉及到牽一發(fā)動全身的問題。
因此在老王看來,WSFC,AD,SMB這三個(gè)組件相結(jié)合的非常緊密,關(guān)閉端口或者修改SMB端口目前看來都不是最佳的方案,還是要從物理架構(gòu)和安全策略調(diào)整,例如為核心數(shù)據(jù)庫應(yīng)用構(gòu)建在DMZ區(qū)域,與其他服務(wù)器通過防火墻嚴(yán)格控制通信,更新病毒補(bǔ)丁等層面進(jìn)行處理。