Posted in Windows

Hyper-V Replica 複本伺服器

Hyper-V Replica 複本伺服器 Posted on 2019 年 11 月 11 日Leave a comment

Hyper-V Replica 複本伺服器,就是將這一台虛擬機器複製(clone)到另一台上面,不過目的端的虛擬機器是關機的,當主要的掛點時,備援的就可以起來。

(這裡不會提到容錯移轉)

環境

角色     Primary Server (Client 端) --------------> Replica Server (Server 端)
作業系統 Windows Server 2012                        Windows Server 2016
主機名稱 primary.cross.test                         replica.cross.test

Replica Server (Server 端)

先建立 RootCA (100年) (makecert 已是 deprecated 了,所以這裡用 powershell 內健的 New-SelfSignedCertificate )

New-SelfSignedCertificate -Type "Custom" -KeyExportPolicy "Exportable" -Subject "rpRootCA" -CertStoreLocation "Cert:\LocalMachine\My" -KeySpec "Signature" -KeyUsage "CertSign" -NotAfter (Get-Date).AddDays(36500)

會得到 Certificate Thumbprint (產生 EKU 憑證要用到)

   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My

Thumbprint                                Subject
----------                                -------
8B31216135CD8068F2EA3AB5F1C69C7E6D592D91  CN=rpRootCA

產生 EKU 憑證 (10年) (定義 CN 及給RootCA 的 thumbprint) (這是給 replica server 用的)

New-SelfSignedCertificate -type "Custom" -KeyExportPolicy "Exportable" -Subject "CN=replica.cross.test" -CertStoreLocation "Cert:\LocalMachine\My" -KeySpec "KeyExchange" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2") -Signer "Cert:LocalMachine\My\8B31216135CD8068F2EA3AB5F1C69C7E6D592D91" -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" -NotAfter (Get-Date).AddDays(3650)

查看已產生的 (但這個還不能用,要匯出再匯入到 Root)

Get-ChildItem Cert:\LocalMachine\My

   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My

Thumbprint                                Subject
----------                                -------
8B31216135CD8068F2EA3AB5F1C69C7E6D592D91  CN=rpRootCA
7E55CE57FFED1E4AE9D97BAA74FB8463FAE5CFFA  CN=replica.cross.test

匯出

Export-Certificate -Cert Cert:\LocalMachine\My\8B31216135CD8068F2EA3AB5F1C69C7E6D592D91 -FilePath E:\replicakey\rpRootCA.cer
Export-Certificate -Cert Cert:\LocalMachine\My\7E55CE57FFED1E4AE9D97BAA74FB8463FAE5CFFA -FilePath E:\replicakey\replica.cross.test.cer

匯入 Root

Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root\ -FilePath E:\replicakey\rpRootCA.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root\ -FilePath E:\replicakey\replica.cross.test.cer

在憑證-本機電腦裡 (用指令 certlm 可打開)
確認 “中繼憑證授權單位” 有 rpRootCA
確認 “受信任的根憑證授權單位” 有 rpRootCA
確認 “受信任的根憑證授權單位” 有 replica.cross.test

編輯 C:\Windows\System32\Drivers\etc\hosts (因為複本功能要找伺服器名稱,不能用 IP,所以要讓主機可以對映的到)

1.1.1.1		replica.cross.test
1.1.1.2		primary.cross.test

再來安裝新增 Hyper-V 角色 (要重開機)
重開後設定 Hyper-V Replica 功能

開啟 Hyper-V 管理工具 > 點選右邊 > Hyper-V 設定
                     > 複寫設定 > 啟用此電腦做為複本伺服器
                               > 使用憑證式驗證 (HTTPS) > 選擇憑證 (會跳出視窗) (rpRootCA 簽給 replica.cross.test 的憑證)
                               > 允許來自任何已驗證之伺服器複寫
                               > 指定位置
                               >> D:\replica\

                               或
                               > 允許來自指定的伺服器的複寫
                               >> 主要伺服器 *.cross.test
                               >> 存放位置 D:\replica\
                               >> 信任群組 replica group

開防火牆

netsh advfirewall firewall set rule group="Hyper-V 複本 HTTPS" new enable=yes

停用簽署憑證撤銷檢查

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

replica server 的好了,再來
給 Primary Server (Client 端) 產生憑證 (10年) (定義 CN 及給 RootCA 的 thumbprint)

New-SelfSignedCertificate -type "Custom" -KeyExportPolicy "Exportable" -Subject "CN=primary.cross.test" -CertStoreLocation "Cert:\LocalMachine\My" -KeySpec "KeyExchange" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2") -Signer "Cert:LocalMachine\Root\8B31216135CD8068F2EA3AB5F1C69C7E6D592D91" -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" -NotAfter (Get-Date).AddDays(3650)

匯出 PFX (123456) (把檔案複製到 Primary Server)

Export-PfxCertificate -Password (Read-Host -AsSecureString -Prompt 'Type Password') -Cert (Get-Item -Path Cert:\LocalMachine\My\9EC935DEC71ED58A6779264AF726F0BF730B257F) -FilePath E:\replicakey\primary.cross.test.pfx -Verbose

————- cut line ——————————————————

Primary Server (Client 端)

匯入從 Server 端給的 PFX (123456 是密碼)

certutil -p 123456 -importPFX F:\replicakey\primary.cross.test.pfx

一樣停用簽署憑證撤銷檢查

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

同樣編輯 C:\Windows\System32\Drivers\etc\hosts

1.1.1.1		replica.cross.test
1.1.1.2		primary.cross.test

對虛擬機器開啟複寫功能

子機 > 右鍵 > 啟用複寫
     > 複本伺服器 replica.cross.test
     > 成功的話就會出現複本伺服器、 使用憑證式驗證 (HTTPS)
     > 選取憑證 (成功會出現憑證)
     > 打勾壓縮傳輸資料
     > 打勾要複寫的 VHDX (會根據你有多少顆硬碟)
     > 僅最新的復原點
     > 透過網路傳送初始複本
     > 立即開始進行複寫

————- cut line ——————————————————

如果主機不是 windows server 2016 就需要用 makecert 指令 (不用再匯入匯出了)

產生 RootCA

makecert -pe -n "CN=RootCA" -ss root -sr LocalMachine -sky signature -r "E:\replicakey\RootCA.cer"

產生 EKU 憑證

makecert -pe -n "CN=primary.cross.test" -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 "RootCA" -is root -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 "E:\replicakey\primary.cross.test.cer"

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *