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"
留言