複製(Replica)
一、 Hyper-V主機啓用複製配置
在以前的章節中我已經簡單的介紹了複製(Replica)功能,Hyper-V 複製功能是Hyper-V 3.0的新功能之一,它是一種異步虛擬機複製技術,主要用於商業連續性與災難的恢復,可用於任何服務器、網絡或者存儲,它並不須要任何共享存儲,能夠是單個或者多個虛擬機進行復制。它使用Hyper-V卷影複製服務(VSS)編輯器將主機上的虛擬機(VM)的快照數據轉移到輔助主機。就是將主的Hyper-V主機中的虛擬機複製到另外的Hyper-v主機上,並可進行增量的複製。當主的Hyper-v主機上的虛擬機出現問題,則複製過來的虛擬機就會接替工做,給數據損失下降到最小。複製服務器可接受來自1臺或者多臺主機服務器的傳入複製通訊。因此說,複製功能是Hyper-V 3.0增長了災難恢復功能。一個真正的多站點災難恢復解決方案,在相同的位置(本地備份)或者是不一樣的物理位置都是能夠實現的。它還容許常規備份能夠經過存儲介質運輸到異地,同時備份每5分鐘更新1次。
在實際生產環境中,若是使用複製功能,要配置相應的物理網絡,啓用複製後,首次同步開始複製數據時,副本須要傳輸虛擬機的當前狀態。而後進行快照(卷影複製服務(VSS)),以後進行虛擬機傳輸,須要大量的帶寬。但複製也能夠採用不一樣的複製方式,Hyper-V3.0支持3中複製方式;一種是使用網絡複製,就是經過網絡將所選VHD傳輸到服務器,能夠馬上進行或是在指定時間進行。第二種是在複製服務器上使用備份的副本,就是將虛擬機的備份副本傳輸到複製服務器上,第三種就是使用外部介質,將要複製的虛擬機VHD到外部介質,可將外部介質交送到複製站點。
在完成第一次複製後,Hyper-V 複製功能會按照計劃的頻率將虛擬機的變動發送出去。這些變動是經過日誌文件追蹤的,而且在將變動發往複製服務器以前會進行壓縮。在主服務器上,變動會被保存在一個 .hrl 文件中,該文件與被複制的 VHD 文件位於相同位置下。
使用Powershell命令來開啓複製功能+使用Kerberos驗證+容許任何通過身份驗證額服務器中進行復制。
[Hyper-v01.mbf.com]: PS C:\Users\administrator.MBF\Documents> Set-VMReplicationServer $true -AllowedAuthenticationType Kerberos -KerberosAuthenticationPort 80 -ReplicationAllowedFromAnyServer $true -DefaultStorageLocation 'C:\Hyper-V\Virtual Hand Disks'
從命令中能夠看到這麼幾個關鍵詞,只要設置這幾個就能夠了。
Set-VMReplicationServer 啓動此計算機做爲副本服務器
-AllowedAuthenticationType 選擇身份驗證方式
Kerberos -KerberosAuthenticationPort 指定驗證類型和端口
-ReplicationAllowedFromAnyServer 容許從任何通過身份驗證的服務器中進行復制
-DefaultStorageLocation 指定副本的默認存儲位置
在主服務器和副本服務器之間發送的複製數據採用加密技術,爲了提供加密複製數據傳輸,副本會使用基於證書的身份驗證,所以必須擁有或建立合適的安全證書。Kerberos 身份驗證只有在主服務器和副本服務器均爲同一域的成員或者位於相互信任的域內的時候纔可用。其它的則須要基於證書的身份驗證。若是將副本配置爲使用 Kerberos 身份驗證,則從主服務器傳輸到副本服務器的數據就沒有加密。對於須要加密的數據,你應該使用基於證書的身份驗證。你能夠提供現有的 X.509v3 證書或建立一個自簽名證書。
咱們可使用Makecert.exe 實用工具來建立自簽名證書,MakeCert.exe 能夠從 Microsoft .NET Framework 中得到。若是安裝了VS2008或VS2012後發現路徑\Tools\Bin\下有許多小工具。MakeCert.exe 也可從 Platform SDK 中得到。MakeCert.exe 用於建立 X.509 證書。它爲數字簽名建立公鑰和私鑰對,並將其存儲在證書文件中。此工具也將密鑰對與指定發佈服務器相關聯,建立將用戶指定的名稱綁定到密鑰對公共部分的 X.509 證書。
首先,將makecert拷貝到Hyper-V01主服務器上,命令來建立自簽名測試根頒發機構證書:
makecert -pe -n "CN=PrimaryTestRootCA" -ss root -sr LocalMachine -sky signature -r "PrimaryTestRootCA.cer"
而後使用命令提示符運行如下命令來建立測試根頒發機構證書籤名的一個證書,提供主服務器的 FQDN:
而後將將makecert拷貝到Hyper-V02副本服務器上,而後使用命令提示符運行如下命令來建立測試根頒發機構證書籤名的一個證書,提供副本服務器的 FQDN:
建立完成證書後,將文件 ReplicaTestRootCA.cer 從副本服務器複製到主服務器,而後使用如下命令將其導入:
certutil -addstore -f Root "ReplicaTestRootCA.cer"
將文件 PrimaryTestRootCA.cer 從主服務器複製到副本服務器,而後使用如下命令將其導入:
certutil -addstore -f Root "PrimaryTestRootCA.cer"
默認狀況下,須要進行證書吊銷檢查;不過自簽名證書不支持吊銷檢查。使用如下命令編輯主服務器和副本服務器上的註冊表便可禁用檢查:
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\FailoverReplication" /v DisableCertRevocationCheck /d 1 /t REG_DWORD /f
二、 Hyper-V主機防火牆開啓複製
不管是使用HTTPS仍是HTTP的驗證方式,在啓動複製前,必需要開啓相對應的防火牆規則,要不,服務器就沒法正常的複製到副本服務器。若是使用GUI界面的Hyper-v複製功能啓動後,則會提示你要開啓防火牆的的端口「80」的入站TCP例外。必須啓用Hyper-V副本HTTP偵聽器的入站規則。
若是是GUI界面下的防火牆,首先打開windows防火牆的輸入規則,按照本身的複製設置,點選打開相應的入站規則。建議將要複製的主服務器和副本服務器都同時打開相應的端口,由於不可避免會有反向複製的需求,就是主服務器和副本服務器的角色互換,若是沒開,則複製會失敗。
若是是使用Powershell的方式打開防火牆,這就很是方便,首先咱們先經過命令來查看Hyper-v01的複製設置。
以後經過Powershell命令查看複製設置的存放虛擬機的路徑地址。
在windows Hyper-v server 2012裏,經過Powershell命令打開防火牆,因爲是中文環境,因此必須輸入中文。打開HTTP和HTTPS的命令相同。
這裏要注意一下,若是是英文版本的windows Hyper-v server 2012,則經過下面的命令打開,若是是繁體版的,則和簡體版的也不一樣。
三、 虛擬機啓用複製配置
當設定好了Hyper-V的複製功能設置,而且打開了防火牆,接下來就能夠啓動複製了,若是啓用複製,那麼會對主服務器的虛擬機執行復制工做,因爲初始複製是將主服務器的虛擬機完整的複製到副本服務器上,因此很是消耗帶寬,因此建議指定在網絡壓力較低的時候進行復制,這樣就能夠下降複製的時間。不會影響到其餘的虛擬機。
首先咱們在主服務器上創建一臺虛擬機win7,而後保持他正常的運做,咱們先使用Powershell的方式來進行復制。
若是使用Powershell命令,在啓動虛擬機複製前,能夠經過命令來測試下2臺Hyper-V主機的複製通訊是否正常,這是在GUI見面下沒法進行測試的。在Hyper-v01上測試副本服務器Hyper-v01,驗證方式爲kerberos 80。
以後咱們使用命令來針對win7啓用複製功能,實際上在使用這個命令後,win7虛擬機並無正真開始複製,而是在副本服務器上建立了win7的副本,並無進行初始的複製,不會將虛擬機的資料複製過去。
當使用啓動複製命令後,此時win7纔開始初始的複製。
設置Hyper-v01上的虛擬機win7複製到Hyper-v02的副本服務器上,驗證方式爲Kerberos,端口爲80,複製點爲7個,增量VSS複製頻率爲7。
若是在GUI界面中,使用Hyper-V管理器鏈接到2臺Hyper-V主機,在要作複製的虛擬機上,右鍵選擇啓動複製,或者是在Hyper-V管理員右下角虛擬機點擊啓用複製。
指定副本副本服務器,能夠手動輸入或是使用瀏覽的方式選取,爲了不錯誤,經過瀏覽域控來查找,若是是跨越數據中心的複製,則在此輸入IP地址。若是這裏出現指定的副本服務器未設定爲從主服務器接收復制的錯誤,出現這樣的錯誤有3種,一種是副本服務器沒有指定主服務器或者是沒有設置接受任意服務器的複製,另外一種就是副本或是主服務器的防火牆沒有打開相應的端口,致使通訊不順暢通。還有一種就是經過證書來認證的複製沒有相互認證經過,要從新生成證書。
指定鏈接的參數驗證類型,因爲是統一域環境,則經過使用Kerberos驗證,跨越域的狀況則須要指定相應的證書。
在配置恢復歷史界面中,來指定在副本服務器上保留的復原點數目,若是選擇不存儲任何其它的恢復點,副本服務器就只會保留收到的最新複製資料,會在5-15分鐘更新一次,這取決於複製整個虛擬機所需的時間,若是是選擇保留1個或多個恢復點,這些恢復點則會每一個小時創建一次。此外,也能夠選擇在指定間隔時間儲存一致性快照,使用VSS增量複製。
前面也說過了,因爲第一次的複製是複製整個虛擬機,因此相對複製的內容比較多,文件較大,好比win7這臺虛擬機就須要6.91GB的虛擬硬盤的初始大小。在選擇初始複製方法的頁面中,除了能夠選擇經過網絡進行復制之外,還能夠經過外部介質發送外部副本,或是使用副本服務現有的虛擬機做爲初始副本,使用副本服務現有的虛擬機做爲初始副本的前提就是已已經經過外部介質把虛擬機的副本考到副本服務器了,而後能夠選擇副本服務器的現有虛擬機。
四、 虛擬機TCP/IP容錯轉移設置
若是啓用了虛擬機的複製功能,則在虛擬機的設置中,網絡設置裏就會出現一個容錯轉移TCP/IP的設置,主要用處就是當主服務器上的虛擬機出現故障,容錯轉移後,副本服務器上的虛擬機變成主虛擬機,容錯轉移TCP/IP就會將設置好的IP地址套用到虛擬機上面,這樣就節省了當出現容錯後,虛擬機裏服務沒法正常運做的問題。若是複製虛擬機採用的是動態IP分配,那麼就不須要填寫IP地址。當須要設置容錯轉移TCP/IP,必定要在主虛擬機和副本虛擬機要同時設置。
若是使用Powershell來設置容錯轉移TCP/IP,是很是簡單的。在主服務器或者副本服務器設定win7虛擬機網絡界適配器容錯轉移TCP/IP,IPv4地址爲192.168.1.222,掩碼爲255.255.255.0,網關192.168.1.1,DNS爲192.168.1.200
Get-VMNetworkAdapter win7 "網絡適配器" | Set-VMNetworkAdapterFailoverConfiguration -IPv4Address 192.168.1.222 -IPv4SubnetMask 255.255.255.0 -IPv4DefaultGateway 192.168.1.1 -IPv4AlternateDNSServer 192.168.1.200
使用Powershell來清除容錯轉移TCP/IPv4設置。
Get-VMNetworkAdapter win7 "網絡適配器" | Set-VMNetworkAdapterFailoverConfiguration –ClearFailoverIPv4Settings
在主服務器或者副本服務器設定win7虛擬機網絡界適配器容錯轉移TCP/IP,IPv6地址爲910a:2222:5498:8475:1111:3900:2020
Get-VMNetworkAdapter win7 "網絡適配器" | Set-VMNetworkAdapterFailoverConfiguration -IPv6Address CDCD:910A:2222:5498:8475:1111:3900:2020 -IPv6SubnetPrefixLength 12
使用Powershell來清除容錯轉移TCP/IPv6設置。
Get-VMNetworkAdapter win7 "網絡適配器" | Set-VMNetworkAdapterFailoverConfiguration –ClearFailoverIPv6Settings
設置完成後查看容錯轉移TCP/IP的設置。
五、 監控虛擬機複製
在GUI界面裏,經過Hyper-V管理器來查看複製的健康狀況,複製類型顯示爲主要,表明你目前開啓的複製健康情況是由主服務器開啓,若是是副本服務器則顯示副本。只要複製健康狀況顯示正常,基本上就沒有什麼大的問題,因爲我這裏是經過Powershell開啓啓動,可是尚未執行初始複製,因此在複製資料裏面並無統計信息,在啓動複製之後,過幾分鐘會就會顯示覆制的狀態,直到初始複製結束。
經過Powershell的方式也能進行查看主機的複製狀態。
暫停虛擬機的複製
繼續虛擬機的複製
檢查虛擬機WIN7的狀態
從新整理虛擬機的狀態