NIC teaming技術能夠避免資源搶占并提升虛擬機性能表現,但是配置時需要注意不要因為一些常見錯誤導致最終失敗。
NIC teaming的概念很久之前就已經出現了,但是一直都只能應用在特定硬件上。而在Windows Server 2012當中,微軟使得在通用硬件上使用NIC teaming技術變為可能。通過這種方式,你可以創建一塊邏輯網卡,將所有包含其中的硬件網卡帶寬聚合在一起。
服務器NIC teaming技術在虛擬服務器環境當中能夠發揮很大作用。畢竟,虛擬化環境當中的最大問題之一就是資源搶占。換句話說,多臺虛擬服務器必須共享有限的物理硬件資源。在一些情況當中,這種資源共享方式可能導致物理網卡成為虛擬機的性能瓶頸。
一種解決方案是創建一系列虛擬交換機,每個都關聯到一塊單獨的物理網卡上。這種方式的問題在于加大了虛擬服務器的管理難度,因為管理員必須確保網絡流量平均分配到所有虛擬交換機中。另外一種更為簡單的解決方案是使用NIC teaming技術,之后關聯到單個虛擬交換機。使用這種方式,一臺主機服務器當中的所有虛擬機可以共享一臺通用的虛擬交換機,但是網絡流量可以在多塊物理網卡當中實現負載均衡。
表面上,NIC teaming技術是一種應用在主機服務器上的理想解決方案。但是,如果主機服務器不能夠遵循一些基本的最佳實踐,那么服務器NIC teaming技術就可能為虛擬基礎架構帶來多種不同問題。
在開始介紹這些最佳實踐之前,我想要首先指出雖然這篇文章使用微軟技術舉例,但是最佳實踐幾乎可以應用在企業使用的任何種類的hypervisor當中。即便并非每種最佳實踐都能像文章中描述的那樣應用在所有非微軟環境當中,但是基本的概念是相通的。
第一步:構建冗余機制
就像上面所說的,第一種最佳實踐是在NIC team當中實現冗余。假設你的主機服務器擁有5塊10GB網卡,我們想要使用所有這5塊網卡,這樣我們就能夠獲得40GB的連接速度。這種方式的問題在于如果任何一塊網卡出現問題,那么可能導致整個NIC team不能正常工作——這取決于使用的是哪個廠商的產品。因此,最好在NIC team當中至少選擇一塊網卡作為熱備份,出現任何NIC問題時,這塊網卡將會自動啟用。
第二步:流量分類
第二個最佳實踐是盡量不要將服務器的所有網卡都分配到NIC team當中——即便已經將一些網卡作為熱備份。這樣做的原因在于虛擬主機必須能夠處理多種不同類型的流量。如果將所有服務器網卡都分配到NIC team當中,那么所有類型的流量都不得不通過那塊NIC team網卡。繼續發展下去,那么一些流量可能會占用其他類型流量的帶寬。虛擬化環境當中常見的流量類型包括:
客戶端流量(終端用戶訪問流量);
集群通信流量;
虛擬機復制流量;
實時遷移流量;
存儲流量;
帶外管理流量
平心而論,許多企業都會使用Fibre Channel來傳輸存儲流量,并且一些服務器使用專用端口來實現帶外管理。即便如此,企業也不會希望并發的實時遷移流量造成用戶流量像蝸牛一樣緩慢傳送。反過來,你也不希望用戶流量過多導致實時遷移功能受限。如果你配置所有流量都通過NIC team,那么應該使用服務質量模型(QoS)來管理流量的使用情況。
第三步:保持集群間一致性
你應該了解的最后一個問題是hypervisor集群當中的主機應該使用類似的配置。比如,如果你搭建了一個Hyper-V服務器集群,那么集群當中的每個節點都應該使用相同的虛擬交換機。類似地,如果集群使用共享存儲卷,那么所有節點必須使用相同方式連接到存儲卷。重點在于在集群環境當中,集群中的每個節點都應該配置相同的NIC team。
服務器NIC teaming技術能夠為虛擬化主機帶來極大好處。即便如此,還是應該遵循一些必要的準則,以避免將問題引入虛擬基礎架構環境當中。