2016年10月19日 星期三

Hyper-V 虛擬網路設定


公司最近開始導入虛擬化,需要做一些前置作業,網路是其中一個很重要的部份。
實作到後面有些心得,在此紀錄…

HyperV網路區分三種模式:外部、內部、私有,此部份紀錄VM與跨網段與外界連通的設定。


因公司將不同網域主機以VLAN切分,在轉換成VM後,虛擬網路勢必也要相對應的調整
根據微軟MVP顧問的著作指導與網路資料,有二種方法可實現不同網段能同時連線,並且不更動原有架構:

(一)HyperV主機具有足夠多張實體網路卡,但又需要連到不同的網段

此環境最簡單的作法就是一對一配對,也就是VM的一張虛擬網卡(需指定虛擬交換器)對應主機一張網卡

實際作法是在HyperV的虛擬交換器管理員建立vSwitch,名稱設定為external1,指定1號實體網路卡並且勾選共用(或者不勾選也行,如果你不需要設定vSwitch的IP)。然後將VM的網卡指定虛擬交換器為external1。

接著將HyperV Host主機的實體網卡的線路接在對應的子網路交換器上。實體網卡可以不用設定IP,VM設定需要使用的Subnet IP。這樣應該就能連通。
如果有其他VM需要連到不同網段,作法同上,

這樣的作法好處是架構簡單,不需要什麼複雜的設定,一般的L2交換器就能運作,若交換器壞掉隨便找一台接線就能使用。網線的數量等同於Host主機NIC網卡數量,只要新增網段就需要增加交換器與網卡

但缺點是有N個網段要使用,就至少要用N張網路卡,佔用的網路孔數也比較多,使用網線也多較難管理,硬體成本也較高。

(一)接法示意圖


(二)HyperV主機實體網路卡數量不足,但又需要連到不同的網段

這部份需要交換器配合,Cisco或HPE等品牌支援Link Aggregation和Trunk功能的交換器機種應該都能勝任。且搭配Windows Server 2012支援的NIC Teaming功能,將數張網路卡綁在一起,實現邏輯上合併頻寬的功能,增加頻寬與容錯性。(注意,這裡的容錯性指的是單張網路卡或單條網線壞掉仍可正常運作的情況,若交換器損毀則會完全斷線)
可以將不同網段VM放在同一台Hyper V Host主機上,只要透過2條或以上的網路線即可實現不同網段共用同條網線,共用倍增頻寬,也減少網路線佈置的複雜度。

實際作法是先設定Win Server 2012的Teaming功能,將2張相同規格的網路卡綁在一起。
(二)接法示意圖


Win Server 2012的Teaming模式分為:交換器獨立、LACP、靜態小組。

NIC網路卡小組的Teaming模式

而對應的負載平衡模式又分為:位址雜湊(Address Hash)、HyperV Port、動態(Dynamic)

NIC網路卡小組的Load Balacing模式


這些模式組合這裡先不去研究,在實務上,參考微軟MVP建議,若要增加頻寬就選擇LACP+位址雜湊;若要保有HA高可用性避免single failure情況發生就選擇交換器獨立+動態。
(但前者也能保有容錯性,只是交換器還要支持Stacking功能,詳細情形這裡暫且不提)

前者LACP設定需要交換器支援Link Aggregation功能(IEEE 802.1ax),每個廠牌功能設定大同小異,若設定正確,NIC小組設定應該會正常運行(設定好會出現一下子錯誤,之後就正常)
敝公司的交換器部份設定為例:



後者交換器獨立設定則不需要特殊交換器,一般的Switch就可以,但是要準備2個或以上的Switch分別接上綁定的網路卡上,方能實現HA可用性。

微軟MVP專家建議,若主機有數張1Gbit 的網路卡,建議使用NIC Teaming功能加上交換器獨立+動態設定,要注意的是此Teaming綁定的網路卡只能接受同網段的連線,若是不同區網,就要使用進階交換器+LACP模式,就能傳輸帶有tag的封包,讓不同網段的VM能連線。

如果上面寫的一大堆看不懂(我承認我文筆很差),最白話的說法就是
如果你Server網卡夠多,就讓一個Port跑一個VLAN(微軟專家的建議)
如果你夠有錢,就買10Gbit的網卡兩張以及有LAGG+Trunk功能的交換器做Teaming

Teaming不但可增加傳輸頻寬,也具有HA的安全性,避免單點失效(Single Failure)的危險發生,當然前提是架構與設備和系統各方面都要配合。