[Hyper-V]利用憑證讓在 workgroup 內 Hyper-V 主機進行 Replica

[Hyper-V]利用憑證讓在 workgroup 內 Hyper-V 主機進行 Replica

這幾天看到有關於 Windows 2012 R2 的新功能,而其中一項是關於 Replica 的時間,已經可以改成自行挑選幾種模式,而非固定的 5mins,看來 Hyper-V 上的 Replica 的功能是很被重視的。而前幾天又剛好看到一些網路上的前輩在討論如何在非 AD 網域內的 Hyper-V 主機,可以相互進行 Replica,覺得這個題目蠻好玩的,之前在內部測試的時候,多半都是在 AD 網域內進行,並沒有想到要在 Workgroup 下來進行,而透過前輩所介紹的文章,我把環境架設起來測試幾次,看起來有些地方是需要注意一下的。

 

測試環境

vSphere 下建立兩個 Windows 2012 的 Guest VM 來進行測試:

VM1 :

Name : Replica1

IP : 192.168.1.171

 

VM1 :

Name : Replica2

IP : 192.168.1.172

 

DNS 設定

在設定複寫的時候,必須指定電腦名稱,如果電腦有加入到網域內,那自然沒有問題,但如果是在 Workgroup 的方式,我個人是採用直接更改 %SystemRoot%\System32\Drivers\ets 內的 Hosts 的檔案。如果要修改的時候要注意一下,一定要先提高到系統管理者的權限,否則不能更改。

image

 

開啟防火牆

當安裝 Hyper-V 的時候,系統的防火牆設定就有兩組 Hyper-V 複本的 Rule,因為兩台電腦都不在網域內,因此我們後續會利用建立憑證走 SSL,因此要記得在防火牆的「Hyper-V 複本 HTTS」要記得開通。

image

 

建立憑證

在這個步驟算是關鍵的一環,因為我們要來建立憑證,我們利用 makecert 的方式建立自我發行的簽章,因此我先在第一台主機上利用以下指令建立簽章

makecert -pe -n "CN=PrimaryTestRootCA" -ss root -sr LocalMachine -sky signature -r "PrimaryTestRootCA.cer"
 
makecert -pe -n "CN=Replica1" -ss my -sr LocalMachine -sky exchange -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2 -in "PrimaryTestRootCA" -is root -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 PrimaryTestCert.cer

 

這樣的指令會建立兩個憑證,分別是 "PrimaryTestRootCA.cer" 和 "PrimaryTestCert.cer" ,這兩個名稱並沒有一定要是這樣,您可以按照您的喜好來設定也可以。

makecert -pe -n "CN=RecoveryTestRootCA" -ss root -sr LocalMachine -sky signature -r "RecoveryTestRootCA.cer"
 
makecert -pe -n "CN=Replica2" -ss my -sr LocalMachine -sky exchange -eku 1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2 -in "RecoveryTestRootCA" -is root -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 RecoveryTestCert.cer

接著到第二台電腦上,也是利用類似的指令,但要指定不同的電腦名稱和簽章名稱,這裡可別搞混了。

這裡會建立出兩個憑證,分別是 "RecoveryTestRootCA.cer" 和 "RecoveryTestCert.cer"

 

匯入憑證

接下來要把第一台的憑證 "PrimaryTestRootCA.cer" 檔案複製到第二台電腦上,並在第二台電腦上利用指令來做匯入

certutil -addstore -f  Root "PrimaryTestRootCA.cer"

 

然後把第二台的憑證 "RecoveryTestRootCA.cer" 檔案複製到第一台電腦上,並在第一台電腦上利用指令來做匯入

certutil -addstore -f  Root "RecoveryTestRootCA.cer"

 

更改機碼

在預設的狀況下,是不允許使用這種自我簽署的簽章,因此我們要透過以下的指令更改機碼

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication" /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f

 

Hyper-V 設定

在兩台 Hyper-V 主機上,都必須更改 Hyper-V 內的複寫設定,要勾選「啟用此電腦作為複本伺服器」,並且要設定「使用憑證式驗證 (HTTPS)」,這裡要記得利用選取憑證,將前個步驟所建立的該電腦的憑證給加入,且「允許來自任何以驗證之伺服器的複寫」。

image

 

主機設定好之後,接下來針對要複寫的 VM 進行設定,一樣要記得指定「使用憑證式驗證(HTTPS)」,並選取前面步驟所建立的該機憑證。

image

 

相互管理

前面的步驟大部分都沒有問題之後,接下來我們要讓兩台 Hyper-V 互相可以管理對方,因此我們利用控制台內的認證管理員內,在第一台主機上加入連到第二台主機的帳號和密碼;同樣的步驟也到第二台電腦內設定,指定連到第一台電腦的帳號和密碼;

image

image

這樣設定好之後,我們就可以在 Hyper-V 管理員內,把另外一台主機給加入。

 

進行測試

在前面步驟都設定正確之後,正常來說就會開始進行傳送建立複本的 VM 了,此時我們透過「檢視複寫健康狀況」來查看,果然有正常在初始化了。

image

過一陣子待初始化完成之後,我們重新啟動 Guest VM,並且在 VM 內啟動相關測試作業之後,接下來我們繼續透過「檢視複寫健康狀況」來查看:

image

此時也可以透過計畫容錯移轉來試試看,如果測試沒有問題的話,應該就都 OK 了,否則可能要從頭檢察一下相關步驟,看是否有哪裡遺漏了。

 

參考資料

1. Hyper-V Replica Certificate Based Authentication – makecert

2. Building Free Hyper-V 3 Replica Step by Step Guide in Workgroup Mode