編者按:對于Hyper-V 中的虛擬機來說,可以使用VLAN/PVLAN 等方法,來實現(xiàn)網(wǎng)絡隔離。但是,這必然存在兩個基本的限制,其一是其最大的VLAN/PVLAN的ID 只能是4096 個,即其支持的網(wǎng)絡類型和個數(shù)是有限的。其二是當在虛擬機中配置好了VLAN ID 后,想讓其和其他Hyper-V主機中具有相同VLAN ID的虛擬機通訊,還需要在物理的交換機上設置端口VLAN ID,才可以保證虛擬機之間網(wǎng)絡隔離的有效性。
基于以上缺點,決定了VLAN 這種網(wǎng)絡隔離方式,無法適用于大規(guī)模的網(wǎng)絡應用場景(例如對于公有云等)。對于企業(yè)的數(shù)據(jù)中心來說,當需要使用一個新的VLAN來實現(xiàn)新的隔離網(wǎng)絡時,管理員既要在Hyper-V的虛擬機中進行配置,也需要在物理交換機上進行配置。當虛擬機移動到其他的數(shù)據(jù)中心時,管理員也需要在其他數(shù)據(jù)中心的物理網(wǎng)絡進行重復的配置操作。
綜上所述,使用傳統(tǒng)的網(wǎng)絡隔離方式,大大增加了管理員的工作負擔。
利用Hyper-V的網(wǎng)絡虛擬化功能,可以很好的解決以上問題,該功能具有很好的靈活性,當對其配置完成后,管理員無需在物理網(wǎng)絡上進行變更操作,就可以實現(xiàn)虛擬機的靈活移動。
管理員能夠在Azure 等公有云平臺中創(chuàng)建一個網(wǎng)絡,并使其可以和本企業(yè)數(shù)據(jù)中心的網(wǎng)絡進行對接。這樣,管理員就可以根據(jù)需求,在公有云中部署相應的資源,將公有云公有云和數(shù)據(jù)中心進行打通,來實現(xiàn)混合云的應用。
即將重要數(shù)據(jù)和系統(tǒng)保存在數(shù)據(jù)中心,把其他的資源保存到公有云,并且讓管理員感覺是在管理一套數(shù)據(jù)中心。
對于Hyper-V 網(wǎng)絡虛擬化功能來說,其包含Windows Server,System Center(即SCVMM)和Azure Pack/Stack等組件。
對于Azure Pack/Stack來說,可以理解為Azure 公有云的用于企業(yè)部署的版本,便于管理員在企業(yè)中部署類似于Azure的私有云平臺。
注意:這是一個可選的組件。
在本例中,存在名為“dc.xxx.com”域控主機,在名 為“vmm1.xxx.xom”的主機上部署SCVMM,在“hvsrv1.xxx.com” 和“hvsrv2.xxx.com”主機上部署Hyper-V 服務,在“gw1.xxx.com”的主機上部署網(wǎng)絡虛擬化網(wǎng)關服務,在“db1.xxx.com”主機上部署SCVMM 所需的數(shù)據(jù)庫。
在“db1.xxx.com”主 機安裝SQL Server 2016 SP2,在安裝之前,在PowerShell中執(zhí)行“Install-WindowsFe ature NET-Framework-Core-Source F:sourcesxs”命令,來安裝.NETFrame 3.5 組件,其中的“F”盤為WinServer 2016 光盤。
SQL Server的安裝比較簡單,這里就不在贅述了。值得說明的是,需要事先準備好一個普通的域賬戶,作為SQL Server的服務賬戶。在SQL Server 安裝界面中打開“服務器配置”窗口,分別針對SQL Server 代理和SQL Server 數(shù)據(jù)庫引擎選擇該賬戶,并輸入其密碼。為了便于使用,將當前的域管理員指定了SQL Server的管理 員。在“vmm1.xxx.com”的主機上先安裝Windows 評估和部署工具包ADK,這里使用的是其1803 版本。
注意,在其安裝界面中只選擇“部署工具”和“Windows預安裝環(huán)境(Windows PE)”項即可。
之后安裝SCVMM2016-180 1 版本,其安裝過程非常簡單,在其中的數(shù)據(jù)庫配置窗口中的“數(shù)據(jù)庫名稱”欄中輸入“db1.xxx.com”,來連接上述數(shù)據(jù)庫服務器,并在其中創(chuàng)建名為“VirtualManagerDB”的數(shù)據(jù)庫。點擊“下一步”按鈕,選“域賬戶”項,輸入預先創(chuàng)建的域賬戶(例如“xxxvmmsvc”)和密碼。該賬戶是普通的域賬戶,但是其必須是本地管理員組的賬戶。
在CMD 窗口中執(zhí)行“net localgroup administrators xxxvmmsvc/add”命令,來完成添加操作。當安裝完成后,在PowerShell 中執(zhí)行“Enter-PSSession hvsrv1.xxx.com”命令,遠程登錄到“hvsrv1.xxx.com”主 機上,執(zhí) 行“Get-NetAdapter”命令,查看該機的網(wǎng)卡信息,這里顯示“vSwitch1”,“Vswitch2”和“Mamagement”等設備。
使用同樣的方法,可以查看“hvsrv2.xxx.com”的 網(wǎng)卡信息。
在SVCMM 管理界面左下角選擇“設置”項,在左側(cè)選擇“常規(guī)”項,在右側(cè)選擇“網(wǎng)絡設置”項,在打開窗口中取消“自動創(chuàng)建邏輯網(wǎng)絡”項的選擇狀態(tài)。在左下角選擇“構(gòu)造”項,在左側(cè)的“服務器”→“所有主機”項的右鍵菜單上點擊“創(chuàng)建主機組”項,創(chuàng)建新的主機組(例如“Hostgrp”)。
在該組的右鍵菜單上選擇“添加Hyper-V 主機和群集”項,在向?qū)Ы缑妫ㄈ鐖D1)中選擇“受信任的Active Directory 域中的Windows Server 計算機”項,點擊“下一步”按鈕,選擇“使用現(xiàn)有運行方式賬戶”項,點擊“瀏覽”按鈕,在打開窗口中點擊“創(chuàng)建運行方式賬戶”按鈕,在打開窗口中輸入賬戶名稱(例 如“Domain Admin”),在“用戶名”欄中輸入合適的域賬戶(例 如“xxx/admibistrator”)和密碼。

圖1 添加Hyper-V 主機
因為SCVMM 需要使用該賬戶的身份,來目標Hyper-V主機中安裝相應的Azure 程序。之后點擊“下一步”按鈕,輸入“hvsrv1.xxx.com”和“hvsrv2.xxx.com”兩 臺Hyper-V 主機名,點擊下一步按鈕,在“主機組”列表中選擇上述新建的主機組,在“添加以下路徑”欄中輸入新的存儲路徑,點擊“添加”按鈕,添加該路徑。點擊“完成”,完成Hyper-V 主機添加操作。
為了提高效率,可以使用戶模板來創(chuàng)建虛擬機。在左下角選擇“庫”項,在左側(cè)選擇“庫服務器”→“vmm1.xxx.com” →“MSSCVMMLIbra ry”→“VHDs”項,在右側(cè)顯示可用的VHD/VHDX 模板。
當然,也可以將更多的模板復制進來。在左下角選擇“VM 和服務”項,點擊工具欄上的“創(chuàng)建虛擬機”按鈕,在向?qū)Ы缑嬷羞x擇已經(jīng)存在的模板,點擊“下一步”按鈕,輸入虛擬機名稱和描述信息,在“代”列表中選擇“第二代”項。在下一步窗口中配置虛擬機的CPU 和內(nèi)存信息,點擊“下一步”按鈕,將其存儲到上述“Hostgrp”主機組中。點擊“下一步”按鈕,選擇目標Hyper-V 主機。

再選擇操作系統(tǒng)版本信息,其余設置保持默認,點擊創(chuàng)建按鈕,創(chuàng)建該虛擬機。同理,可以創(chuàng)建更多的虛擬機。例如,在“hvsrv1.xxx.com” 主機上創(chuàng)建“vcomputer1”的虛擬機,在“hvsrv2.xxx.com”主機上創(chuàng)建“vcomputer2”的虛擬機。
對于Hyper-V的網(wǎng)絡虛擬化來說,其主要包括VSID(Virtual Subnet ID)、CA(C ustomer Address)、PA(Pro vider Address) 和Packet Encapsulation Format NVGRE/VXLAN 等部件。網(wǎng)絡虛擬化使用VSID 來實現(xiàn)網(wǎng)絡隔離,其范圍從4096到224-2。這意味著可以在Hyper-V的虛擬網(wǎng)絡中擴展出幾千萬個不同的網(wǎng)絡。當對某個隔離的網(wǎng)絡指定了VSID 之后,就需要為其中的所有虛擬機配置IP,便于其進行通訊。
利用CA 可以為指定了VSID的隔離網(wǎng)絡分配IP,不同的VSID 中可以使用相同的IP,彼此之間不會造成影響,這很適用于公有云的環(huán)境。為了保證在不同Hyper-V 主機之間的具有相同SVID的虛擬機之間進行通訊,就需要得到PA的支持。PA 是在Hyper-V 主機上的虛擬交換機上進行配置的,因為不同Hyper-V 主機中的虛擬機,必須依靠Hyper-V 主機的虛擬交換機進行連接。正因為如此,虛擬機進行通訊時,其地址也必須進行相應的轉(zhuǎn)換,即將其封裝到PA的數(shù)據(jù)包中。
在Windows Server 2016中,支 持NVGRE 和VXLAN 兩種封裝格式。對于CA 和PA來說,其地址可以任意定義的。在不同Hyper-V 主機中虛擬機進行通訊時,會先數(shù)據(jù)包發(fā)送給其所屬的默認網(wǎng)關,默認網(wǎng)關會將其投遞給PA,PA 會將虛擬機的數(shù)據(jù)包進行封裝,之后通過PA的網(wǎng)絡,將其發(fā)送給目標Hyper-V主機,之后該主機會對其進行解封裝操作,并將數(shù)據(jù)包發(fā)送給目標虛擬機。整個通訊過程完全和物理網(wǎng)絡沒有任何關系,僅僅是PA 利用了物理的鏈路而已。
在SCVMM 左下角選擇“構(gòu)造”項,在左側(cè)選擇“網(wǎng)絡”→“邏輯網(wǎng)絡”項,在其右鍵菜單上點擊“創(chuàng)建邏輯網(wǎng)絡”項,在向?qū)Ы缑嬷休斎肫涿Q(例如“PAwz”),該邏輯網(wǎng)絡就是PA的網(wǎng)絡,其需要承載虛擬機的數(shù)據(jù)封裝和投遞。所以,需要在下一步窗口中選擇“一個鏈接的網(wǎng)絡”和“允許在此邏輯網(wǎng)絡上創(chuàng)建新的VM 網(wǎng)絡以使用網(wǎng)絡虛擬化”項。
點擊“下一步”按鈕,選擇所有的主機組。在“關聯(lián)的IP 和子網(wǎng)”欄中輸入所需的IP 子網(wǎng)(例如“192.168.2.0/24”),在“網(wǎng)絡站點名稱”欄中可以修改其名稱,點擊“完成”按鈕,創(chuàng)建該邏輯網(wǎng)絡。
當定義了所需的PA 網(wǎng)絡后,Hyper-V 服務器是需要通過其獲取IP的。在該邏輯網(wǎng)絡的右鍵菜單上點擊“創(chuàng)建IP 池”項,在向?qū)Ы缑嬷休斎氲刂烦孛Q(例如“pool1”)。
點擊“下一步”按鈕,選擇“使用現(xiàn)有網(wǎng)絡站點”項,在下一步窗口中設置IP的起始和結(jié)束的范圍。
點擊“下一步”按鈕,在“默認網(wǎng)關”欄中點擊“插入”按鈕,輸入具體的地址(例如“192.168.2.1”)。
在下一步窗口中的“要附加的DNS 搜索后綴”欄中點擊“插入”按鈕,輸入合適的后綴,例如“xxx.com”。
點擊“完成”按鈕,創(chuàng)建該地址池。
在左側(cè)選擇“網(wǎng)絡”→“端口配置文件”向,在其右鍵菜單上點擊“創(chuàng)建Hyper-V端口配置文件”項,在打開窗口中輸入其名稱(例如“UPLink”),選擇“上行端口配置文件”項,點擊“下一步”按鈕。選擇上述名為“PAWz”的站點名稱,選擇“啟用Hyper-V 網(wǎng)絡虛擬化”項,點擊完成按鈕,創(chuàng)建該配置文件。在左側(cè)選擇“網(wǎng)絡”→“邏輯交換機”項,在其右鍵菜單上選擇“創(chuàng)建邏輯交換機”項,在向?qū)Т翱谥休斎肫涿Q(例如“vswitch”),在“上行模式”列表中選擇“團隊”項,啟用NIC 聚合模式。
點擊“下一步”按鈕,在虛擬端口窗口中點擊“添加”按鈕,在打開窗口中點擊“瀏覽”按鈕,在列表中選擇“高帶寬”類別。選擇“包括此虛擬端口中的Hyper-V 虛擬網(wǎng)絡適配器端口配置文件”項,點擊瀏覽按鈕,在列表中選擇“高帶寬適配器”項。在虛擬端口窗口中選擇該端口分類項目,點擊“設置默認值”項,將其設置為默認狀態(tài)。點擊“下一步”按鈕,點擊“添加”→“現(xiàn)有上行端口配置文件”項,選擇上述名為“UPLink”的配置文件。其余設置保持默認,點擊“完成”按鈕,創(chuàng)建該虛擬交換機。

在SCVMM 左側(cè)依次選 擇“構(gòu) 造”→“所有主機”→“Hostgrp”項,在右側(cè)分別選擇名為“hvsrv1.xxx.com”和“hvsrv1.xxx.com”的Hyper-V 主機,點擊工具欄上的“通過RDP 連接”項,遠程登錄到該主機上,確?!皏Switch1”和“Vswitch2”等網(wǎng)卡處于啟用狀態(tài)。在上述兩臺主機的右鍵菜單上點擊“刷新”項,使其處于最新的狀態(tài)。
分別選擇上述Hyper-V主機,在工具欄上單擊“屬性”,打開窗口左側(cè)選擇“虛擬交換機”項,點擊“新建虛擬交換機”→“新建邏輯交換機”項,在“適配器”列表中依次點擊“添加”,選擇上述“vSwitch1”和“Vswitch2”網(wǎng)卡,在“邏輯交換機”列表中選擇“vswitch”項,為其分配上述邏輯交換機。點擊“確定”,保存配置信息。
當虛擬機連接到上述虛擬交換機時,需要獲得CA的地址。在SCVMM 左側(cè)依次選擇“VM 和服務”→“VM 網(wǎng)絡”項,在工具欄上點擊“創(chuàng)建VM網(wǎng)絡”按鈕,在向?qū)Ы缑嬷休斎肫涿Q(例如“VM01”),在“邏輯網(wǎng)絡”列表中選擇上述“PAWz”網(wǎng)絡,使其和該邏輯網(wǎng)絡綁定。點擊“下一步”按鈕,在VM 子網(wǎng)窗口中點擊“添加”按鈕,輸入子網(wǎng)名稱(例如“vnet1”)和子網(wǎng)地址(例如“172.16.0.0/24”),這些網(wǎng)段是可以隨意定義的。
點擊“完成”按鈕,創(chuàng)建該VM 網(wǎng)絡。在該VM 網(wǎng)絡項目的右鍵菜單上點擊“創(chuàng)建IP 池”項,在向?qū)Ы缑嬷休斎肫涿Q(例如“vmpool”),設置可以分配的IP 范圍,輸入合適的網(wǎng)關(例如172.16.0.1),以及DNS服務器(這里為DC的地址)和DNS 后綴名(例 如“xxx.com”)。點擊完成按鈕,創(chuàng)建該地址池。
在SCVMM 中分別選擇上述名為“vcomputer1”和“vcomputer2”的虛擬機,在工具欄上點擊“屬性”按鈕,在打開窗口左側(cè)選擇“硬件配置”→“網(wǎng)絡適配器1”項,在右側(cè)選擇“連接到VM 網(wǎng)絡”項,可以看到,其可以通過上述邏輯交換機連接到“VM01”的虛擬網(wǎng)絡中。在“分類”列表中選擇“高帶寬”項目。點擊確定按鈕,保存配置信息。
如果出現(xiàn)更新失敗的情況,可以在SCVMM 中選擇目標虛擬機機,點擊工具欄上的“連接或查看”按鈕,可以登錄到該主機上,先將其關閉,之后重新啟動,再次進行配置即可。
這樣,兩臺虛擬機之間是可以正常通訊的。如果使用WireShark 等專業(yè)的抓包工具,就可以發(fā)現(xiàn)在兩者進行通訊時,實際上是借助了PA的網(wǎng)絡來實現(xiàn)的。經(jīng)過以上操作,就實現(xiàn)虛擬機之間的網(wǎng)絡隔離功能。
但是,如果在虛擬機中試圖訪問Internet的話,是無法進行的。因為虛擬機是借助于PA(即虛擬交換機)進行數(shù)據(jù)包的封裝和發(fā)送的,而虛擬交換機此時的狀態(tài)狀態(tài)是只能和其他的虛擬交換機交換機進行通訊,并不能和外部的Internet 網(wǎng)絡進行通訊。為了解決以上問題,就必須在虛擬化環(huán)境中配置網(wǎng)關的角色,將虛擬機和Internet 之間的通訊需求進行重新封裝和解封到物理的網(wǎng)絡中,實現(xiàn)虛擬機和Internet 之間的正常聯(lián)系。
對于網(wǎng)絡虛擬化網(wǎng)關來說,其最主要的作用是幫助虛擬機連接到物理網(wǎng)絡中。如果物理的交換機支持Hyper-V的虛擬網(wǎng)關功能,就可以直接在其中進行配置。也可以準備一臺新的Hyper-V 主機,在其中安裝一臺虛擬機,并安裝和配置其路由和遠程訪問角色,來實現(xiàn)虛擬網(wǎng)絡和物理網(wǎng)絡之間的地址轉(zhuǎn)換功能。在該Hyper-V 主機上一般需要安裝三塊物理網(wǎng)卡,一塊網(wǎng)卡連接到物理網(wǎng)絡,來形成前端網(wǎng)絡。一塊網(wǎng)卡用于連接網(wǎng)絡虛擬化網(wǎng)絡,來形成后端網(wǎng)絡。另外的一塊網(wǎng)卡用于網(wǎng)絡管理,用來接受SCVMM的遠程管理。
在名為“gw1.xxx.com”的主機上配置三塊網(wǎng)卡,名稱分別為“Management”,“Production”和“Virtual”。在該機上安裝好Hyper-V角色。在SCVMM 中按照上述方法,將該機加入到名為“Hostgrp”的主機組中。按照上述方法,創(chuàng)建名為“wlwl”的邏輯網(wǎng)絡,用來連接到物理網(wǎng)絡。
注意,僅僅選擇“一個連接的網(wǎng)絡”項即可。
并輸入物理網(wǎng)絡中的相應的IP 網(wǎng)段,例如172.16.10.0/24。針對該邏輯網(wǎng)絡,為其配置IP 地址池。將其默認網(wǎng)關設置為物理網(wǎng)絡中的網(wǎng)關地址,例如172.16.1.254。將DNS 服務器地址設置為物理網(wǎng)絡中的DNS 服務器地址,例如172.16.10.179。
選擇“網(wǎng)絡”→“端口配置文件”項,在右側(cè)雙擊“UPLink”項,在打開窗口左側(cè)選擇“網(wǎng)絡配置”項,在右側(cè)選擇“Production Network”項。按照上述方法,創(chuàng)建名為“wlswitch”的虛擬交換機,用來連接到物理網(wǎng)絡,添加現(xiàn)有的名為“UPLink”的上行端口。按照上述方法,創(chuàng)建名為“wlvm”的VM 網(wǎng)絡。雙擊“gw1.xxx.com”主機,在其屬性窗口作則選擇“主機訪問”項,在右側(cè)選擇“此主機是專用網(wǎng)絡虛擬化網(wǎng)關,因此不可用于放置需要網(wǎng)絡虛擬化的虛擬機”項。
在左側(cè)選擇“虛擬交換機”項,在右側(cè)點擊“新建虛擬交換機”→“新建邏輯交換機”項,在“邏輯交換機”列表中選擇上述“wlswitch”邏輯交換機,在“物理適配器”列表中選擇名為“Production”的網(wǎng)卡,用來連接物理網(wǎng)絡。點擊確定按鈕保存配置信息。點擊“新建虛擬交換機”→“新建邏輯交換機”項,在“邏輯交換機”列表中選擇上述“vswuitch”的邏輯交換機,在“物理適配器”列表中選擇名為“Virtual”的網(wǎng)卡,用來連接虛擬化網(wǎng)絡。點擊確定按鈕,保存配置信息。按照上述方法,在“gw1.xxx.com”主機中創(chuàng)建名為“rcomputer”的虛擬機。
注意,需要在其向?qū)Ы缑嬷羞x擇“配置硬件”項,依次點擊“新建”→“網(wǎng)絡適配器”項,分別創(chuàng)建兩塊虛擬網(wǎng)卡。
遠程登錄到該虛擬機中,將其名稱修改為“rcomputer”,即使其和SCVMM 中的名稱保持一致。在該虛擬機中打開服務管理器,選擇“添加角色和功能”項,在向?qū)Ы缑嬷羞x擇“遠程訪問”項,點擊“下一步”按鈕,選 擇“DirectAccess 和VPN”和“路由”項,點擊“安裝”按鈕,安裝該角色。安裝完畢后,關閉該虛擬機。
在SCVMM 中雙擊該虛擬機,在其屬性窗口左側(cè)選擇“硬件配置”→“網(wǎng)絡適配器1”項,在右側(cè)選擇“連接到VM 網(wǎng)絡”項,點擊“瀏覽”按鈕,選擇上述“wlvm”的VM網(wǎng)絡,用來連接道物理網(wǎng)絡。在其窗口左側(cè)選擇“硬件配置”→“網(wǎng)絡適配器2”項,在右側(cè)選擇“連接到VM網(wǎng)絡”項,點擊“瀏覽”按鈕,選擇上述“VM01”的VM 網(wǎng)絡,用來連接到虛擬網(wǎng)絡。
注意,需要點擊“清除選定內(nèi)容”按鈕,清除選定的內(nèi)容。
之后選擇“標準交換機”項,在列表中選擇名為“vswitch”的虛擬交換機。之后重啟該虛擬交換機,在SCVMM 左側(cè)依次選擇“構(gòu)造”→“網(wǎng)絡”→“網(wǎng)絡服務”項,在其右鍵菜單上選擇“添加網(wǎng)絡服務”項,在向?qū)Ы缑嬷休斎肫涿Q(例如“ycfw”),點擊“下一步”按鈕,在“型號”列表中選擇“Microsoft Windows Serevr Gataway”項。點擊“下一步”按鈕,點擊“瀏覽”按鈕,選擇合適的運行賬戶,其實際上是該虛擬機中本地管理員的賬戶,例如“rcomputer/administrator”??梢灶A先創(chuàng)建的普通的域賬戶,該賬戶可以在虛擬機中配置路由和遠程訪問功能。
點擊下一步按鈕,輸入連接字符串,例如“VMHOST=gw1.xxx.com;GatewayVM=rcomputer”。在下一步窗口中點擊“掃描提供程序”按鈕,來檢測當前的配置是否正確。點擊“下一步”按鈕,選擇合適的主機組,表示該網(wǎng)關應用于該組中的所有虛擬機。點擊“下一步”按鈕,選擇“啟用前端連接”和“啟用后端連接”項,分別選擇對應的網(wǎng)卡,來連接物理網(wǎng)絡和虛擬網(wǎng)絡。點擊“完成”按鈕,創(chuàng)建該網(wǎng)絡服務。

在SCVMM 左側(cè)依次選擇“VM 和服務”→“VM 網(wǎng)絡”項,在右側(cè)選擇上述“VM01”的虛擬網(wǎng)絡,在其屬性窗口左側(cè)選擇“連接性”項,在右側(cè)選擇“直接連接到其他邏輯網(wǎng)絡”和“網(wǎng)絡地址轉(zhuǎn)換”項,在“網(wǎng)關設備”列表中選擇“rcomputer”虛擬機,來利用虛擬化網(wǎng)關實現(xiàn)地址轉(zhuǎn)換操作。點擊“確定”,就完成后了虛擬化網(wǎng)關角色的配置。
進入上述虛擬機(例如“vcomputer1”),就可以順利訪問Internet 了。經(jīng)過以上操作,不僅實現(xiàn)網(wǎng)絡隔離功能,讓每一臺虛擬機或者租戶擁有自己可以定義的網(wǎng)絡,還可以讓其正常訪問到物理網(wǎng)絡。