深入淺出Hyper-V網絡虛擬化技術
年后綜合癥剛剛消失殆盡,轉眼就要迎接各種新的工作任務了;之前寫過一篇有關hyper-v網絡虛擬化內容的博文,主要是從操作系統(tǒng)層面入手,概要性的總結了一下,基本也都是參考了大部分官方內容再加以個人修飾;最近幾天利用system center 2012 R2做了個demo,其中也涉及到了網絡虛擬化這塊,于是乎打算把遇到的經驗和問題和大家做個分享,因為“SDN(軟件定義網絡)”包含的信息量挺大的,所以我會按三個章節(jié)來寫,循序漸進。
接下來的內容與之前最大的區(qū)別在于把操作轉向system center并通過SCVMM來實現(xiàn)網絡虛擬化,凸顯出這套產品在私有云管理方面的強大之處。
那么說道網絡虛擬化,就不得不提及SCVMM的幾個關鍵概念:
1.物理網絡 2.邏輯網絡 3.VM網絡 4.VM子網
下圖是我本人理解的一個面向租戶的場景,用戶A通過自助服務的途徑來申請并獲取他想要的網絡資源,對應到SCVMM里面就是VM network,然后VM子網就不難理解了,它實際上是用戶自行在獨享的VM network所做的分配,也就是說VM subnet中的IP資源才是最終呈現(xiàn)出來的可見網絡,或者你也可以把它視為整個網絡延伸的終點,但是從大的角度來說,VM network就可以說是直接交付給用戶的最終產物了。
我們接著往后看,VM network是構建在邏輯網絡之上的,邏輯網絡對用戶來講是不可見的,當然它是面向后臺管理者的,邏輯網絡存在的最大意義在于,它是用來修飾最底層物理網絡的;舉個簡單的例子,比如你一臺服務器單網卡想做個虛擬化環(huán)境這沒問題,但是由于資源有限,帶寬有限,你所有的流量負載都要經由一個網卡和一條鏈路,但是你可以通過多個邏輯網絡命名來區(qū)別不同的業(yè)務,例如:研發(fā)組網絡、測試組、運維。。等等,他們雖然在本質上共享同樣的資源,但是你可以通過邏輯網絡來進行區(qū)分,并且針對邏輯網絡做限制和管理,例如QOS等等。
有的朋友一直存在一個誤區(qū),認為說邏輯網絡就是物理網卡映射到了SCVMM里,其實根本不是,對于第一次添加主機時,邏輯網絡只是默認把你本機的NIC名稱抓過來當作邏輯網絡名稱罷了。
接下來demo環(huán)境中將要實現(xiàn)的就是圖中門戶申請背后的所有內容,我們只有將底層搭建好了才可以把“軟件定義網絡”這樣的服務打包給用戶;至于門戶的選擇可以是微軟官方的AzurePack,也可以是定制化開發(fā)的門戶產品。
再正式進行之前再稍微看一下拓撲圖,在我的上一篇博客里對CA、PA、VSID、RDID已經做過比較詳細的介紹,可以先回顧一下。
VM彼此之間通信會以CA地址進行,也就是用戶自己的VM subnet地址;如果VM是分布在不同主機上,那么這種跨主機的通信會經過NVGRE重封包來解決,發(fā)起端經由NVGRE打包并貼上PA地址標記,也就是一個專用的邏輯網絡地址池,然后提交給接受主機,接收端同樣使用PA地址收取然后拆包拿出CA地址標簽轉發(fā)給最終VM,其實是很簡單的原理,NVGRE與cisco等廠商提倡的VXLAN都是差不多的初衷。
DEMO中會需要一臺獨立的物理主機做網關主機,并且要支持虛擬化并在其上創(chuàng)建一臺VM網關;VM網關內口接SCVMM的邏輯交換機(下一篇重點),外口直接走外網段;其實也是非?;镜木W關拓撲。
剛才上面說了一大嘟嚕話其實是怕有的筒子們越往后看越鬧心,我也是想盡量把概念類的東西先鋪墊一下,現(xiàn)在馬上開始正題:演示平臺WS2012R2+SC2012R2。
下圖中的gateway是專門用來做網關物理主機的,它上面還有一臺NVGRE網關虛機:
在主機組Lenovo中,host01主要用來放置管理服務器用,例如一些SC角色;host02主要是專門申請?zhí)摍C用的,winserver10就是一臺測試虛機。
點擊Virtual Switch這個邏輯網絡就可以看到啟用“網絡虛擬化”的選項,不起用的話那么一個邏輯網絡就只能創(chuàng)建一個VM network,這個Virtual Switch是流向外網的邏輯網絡。
在Virtual Switch邏輯網絡上創(chuàng)建了一個站點,叫shangdi,不是上帝而是上地(歡迎志同道合者約飯),站點的作用就是來分配邏輯網絡的使用權的,這個邏輯網絡下的站點包含了哪些主機資源,那么這些主機的物理網絡就可以與這個邏輯網絡相綁定,今后通過對邏輯網絡加以控制就起到了直接管理物理網絡的效果。
在邏輯網絡下面創(chuàng)建一個地址池,如果平時我們不需要網絡虛擬化的功能,那么這個地址池是可以直接分配給虛機來使用的,此時地址池通常是與物理網絡相匹配的;這個test IP pool就是直接可以訪問外網的IP,在后面NVGRE網關會通過NAT從這個池里面拿IP來給CA做轉換。
IP地址范圍我給了40-50,顯然這個IP范圍并不是我們實際的公網IP資源,但是沒關系,軟件定義網絡就是這么靈活自如。
之后的網關、DNS等設置都以我辦公環(huán)境的接入設備為參考:
在看另外一個邏輯網絡Tenant,這個網絡是專門給用戶申請?zhí)摍C使用的,并且勾選了啟用“網絡虛擬化”,特別注明一點:我這個主機也只是接了一根網線,正如我上面提到的,邏輯網絡的作用不是1:1的來映射你的物理網卡。
這個邏輯網絡也同樣創(chuàng)建一個站點,并且允許所有主機關聯(lián),網絡地址為192.168.0.0/24,區(qū)別于我的外網地址192.168.10.0/24。
接下來創(chuàng)建一個IP地址池,這些IP就是PA,也就是專門給主機間通信用的;因此無需DNS、網關等配置。
接下來再瞅一眼VM network,virtual switch是構建在“virtual switch”這個邏輯網絡上的;它也是這個邏輯網絡上僅有且唯一的VM network;上面那個tenant VM network將在第三篇提起。
端口配置文件
端口配置文件有兩種,一個是給虛擬網卡用的,一個是給上行鏈路用的,分別是什么意思呢?看下面圖中默認選擇“虛擬網卡端口配置文件”。
然后下一步可以看到針對虛擬網卡我們可以啟用的一些硬件支持功能,比如IPsec卸載和單根虛擬化;記住前提是硬件環(huán)境支持,而且有的功能并不是僅僅要求網卡支持,例如SR-IOV:
然后針對虛擬網卡可以啟用的一些功能,mac欺騙,自定義IP地址等等;大家可能會發(fā)現(xiàn)其實這里的設置和hyper-v管理器中的設置是一一對應的。
最后還可以針對該端口配置文件進行QOS設置,帶寬大小及權重。
剛才是“虛擬網卡端口配置文件”,再來看看“上行端口配置文件”當選擇到上行端口配置文件之后,會發(fā)現(xiàn)左側列表少了很多內容:
上行端口配置文件可以支持NIC Teaming,可以選擇負載平衡算法,比如地址哈?;蛘遠yper-v端口方式:
在teaming模式下可以選擇是否依賴交換機,例如端口聚合LACP;我直接創(chuàng)建一個“上行端口配置文件”,保持默認選擇(反正我的設備只有一個NIC啟用):
在下一步中可以選擇已有的站點及對應的邏輯網絡,這里是什么意思呢?我們通過SCVMM創(chuàng)建出這兩種端口配置文件(虛擬網卡和上行),然后可以再創(chuàng)建“邏輯交換機(下一篇介紹)”把這些端口配置文件關聯(lián)在一起;這樣只要把物理主機的某一個網卡指向“邏輯交換機”,那么這個網卡(物理網絡)就會自動關聯(lián)到所包含的所有“邏輯網絡”,如果你的主機運行windows2012而且想使用網絡虛擬化,那么就需要把下面的勾選上,R2可忽略。
下面是我依據(jù)DEMO環(huán)境所創(chuàng)鍵的幾個上行端口配置文件,“uplinke port profile”這個是給host02主機用的,也就是跑用戶虛機的那臺宿主機用的。
讓這臺虛機可以使用tenant與virtual switch兩個邏輯網絡(因為host02既要有PA地址又要上外網)。
inbound這個配置文件是給gateway那臺物理網關主機的內口網卡用的,因為它只需要PA地址,所以不給它選virtual switch這個可以訪問外網的邏輯網絡了(我覺得看到這里大家應該對邏輯網絡已經有很深刻的理解了吧?)
同樣outbound顧名思義,是gateway物理主機的外口網卡專用配置文件,無需PA地址所以就不選Tenant。
接著我再創(chuàng)建一個名為“Tenant”的虛擬網卡配置文件,這個文件專門用來給用戶VM的網卡做標記,offload設置保持默認(當然如果你的硬件足夠橫,那么你可以啟用SR-IOV等功能),帶寬設置這里給個1,應該是最小值了,這個權重值的意義是當不同業(yè)務流量共享同一物理網絡時,會根據(jù)這個權重來平衡帶寬占用優(yōu)先級;可能有的童鞋會說“我的VM專門綁定一個網卡或者一組teaming,管理網絡用另外一個網卡或者一組teaming”是吧?那么通常我們這做的時候還要單獨的去規(guī)劃網段,配置每一個網卡等等,運維工作會比較繁瑣;下一篇中會結合邏輯交換機來介紹如何解放運維工作。
在安全設置里,注意要啟用“允許來賓定義IP地址”:
為了給下一篇提前做個預習,咱們先來看看邏輯交換機的設置;下圖中我已經提前創(chuàng)建好了幾個邏輯交換機,打開“test logical switch”這個屬性可以看到下方有“啟用SR-IOV”功能。
下圖是關于SR-IOV功能在hyper-v管理器中配置的地方,虛機網卡中可以設置(對應虛擬網卡端口配置文件設置)。
hyper-v虛擬交換機設置中的SR-IOV(對應剛才邏輯交換機中的設置)話說如果條件允許的話,建議使用單根虛擬化功能,即SR-IOV,可以讓虛機直接與物理資源交互而無需經過中間的虛擬化層;當然正如下圖中標記的“SR-IOV只有在創(chuàng)建之前配置才行,之后無法更改”。
邏輯交換機的擴展選項2選1,保持默認就行。
上行端口模式是否要用teaming功能,并且選擇我們剛才創(chuàng)建的“上行端口配置文件”。
點擊“添加”可以選擇相應的配置文件:
這樣一個邏輯交換機就創(chuàng)建完成了,它包含兩種端口配置文件:
在接下來的一篇中,我會展示如何把物理服務器的網卡接入邏輯交換機,以及接入后的效果并且如何簡化部署實施工作,為我們最終的網絡虛擬化演示做好鋪墊。