文/冉靜學(xué)
在各高校逐步實施“智慧校園”和響應(yīng)國家節(jié)能減排號召的同時,高校云數(shù)據(jù)中心逐步在各高校建成或升級。在云數(shù)據(jù)中心建設(shè)過程中,KVM(Kernel-based Virtual Machine)使用中遇到虛擬網(wǎng)絡(luò)如何配置并進行優(yōu)化的問題。針對此問題并結(jié)合實際建設(shè)經(jīng)驗,本文給出了三套KVM云平臺vRoute虛擬網(wǎng)絡(luò)配置方案,并針對方案給出詳細的部署配置細則,為其他數(shù)據(jù)中心建設(shè)過程中提供選擇。
隨著計算機網(wǎng)絡(luò)和通信行業(yè)的發(fā)展,“智慧校園”和“綠色節(jié)能”雙目標對高校數(shù)據(jù)中心的建設(shè)或升級改造提出了更高的要求。傳統(tǒng)高校數(shù)據(jù)中心已經(jīng)無法滿足“智慧校園”的需求,主要存在資源利用率低、運維成本高、應(yīng)用部署緩慢和管理策略分散等方面不足。
為了解決傳統(tǒng)數(shù)據(jù)中心的缺陷,虛擬化和云計算作為一種新的共享基礎(chǔ)架構(gòu)方法,將各項資源進行整合,利用數(shù)據(jù)中心網(wǎng)絡(luò)連接在一起,形成一個巨大資源池。根據(jù)業(yè)務(wù)系統(tǒng)的實際需求,統(tǒng)一分配各項硬件資源,并按照業(yè)務(wù)系統(tǒng)的實際運行需求進行調(diào)整。
云數(shù)據(jù)中心可以根據(jù)實際,提供可用、便捷、按需的系統(tǒng)資源。KVM作為開源的系統(tǒng)虛擬化模塊,在服務(wù)器虛擬化過程中得到了廣泛的應(yīng)用;vRoute虛擬路由是基于網(wǎng)絡(luò)的純軟件操作系統(tǒng),運行于主流的虛擬平臺上。本文根據(jù)高校云數(shù)據(jù)中心的實際建設(shè)過程中發(fā)現(xiàn)的問題,結(jié)合KVM和軟件化的虛擬路由器,搭建安全穩(wěn)定的虛擬網(wǎng)絡(luò)構(gòu)架,給出了三種KVM平臺與vRoute網(wǎng)絡(luò)互連配置方法。
KVM(Kernel-based Virtual Machine)是一個開源的系統(tǒng)虛擬化模塊,自Linux 2.6.20版本發(fā)行之后,該功能模塊都集成于Linux的各個主要發(fā)行版本中。它使用Linux自身的調(diào)度器進行管理,相對于Xen,其核心源碼很少,因此KVM已成為學(xué)術(shù)界主流的VMM之一。
KVM虛擬化需要硬件支持,它是基于硬件的完全虛擬化。而Xen早期是基于軟件模擬的Para-Virtualization,新版本則是基于硬件支持的完全虛擬化。但是,由于Xen有自己的進程調(diào)度器、存儲管理模塊等,所以代碼較為龐大,在兼容、擴展等方面表現(xiàn)稍遜。
圖1 Linux Bridge內(nèi)部轉(zhuǎn)發(fā)流程
Linux Bridge
Linux系統(tǒng)的網(wǎng)絡(luò)功能是通過直接或間接配置系統(tǒng)文件來實現(xiàn)的。Bridge是Linux系統(tǒng)用來實現(xiàn)TCP/IP 二層協(xié)議交換的虛擬設(shè)備,功能類似于交換機。Bridge設(shè)備實例可以與Linux內(nèi)其它虛擬網(wǎng)絡(luò)設(shè)備實例互連。當(dāng)數(shù)據(jù)傳輸至Bridge時,Bridge會根據(jù)報文中的MAC信息進行廣播、轉(zhuǎn)發(fā)、丟棄處理等操作處理。
Linux Bridge內(nèi)部轉(zhuǎn)發(fā)流程如圖1所示。Bridge 的功能主要在內(nèi)核里實現(xiàn)。當(dāng)一臺邏輯設(shè)備與Bridge相互連接后,內(nèi)核程序里netdev_rx_handler_register()函數(shù)被調(diào)用,一個用于接受數(shù)據(jù)的回調(diào)函數(shù)被注冊。之后邏輯設(shè)備接收到數(shù)據(jù),通過調(diào)用該函數(shù),將數(shù)據(jù)轉(zhuǎn)發(fā)至Bridge。Bridge接收到此數(shù)據(jù)時,br_handle_frame()函數(shù)被調(diào)用,進行類似交換機功能處理過程:判斷包的類別(廣播/單點),查找內(nèi)部MAC 端口映射表,定位目標端口號,將數(shù)據(jù)轉(zhuǎn)發(fā)到目標端口或丟棄,自動更新內(nèi)部 MAC 端口映射表以自我學(xué)習(xí)。
Bridge與實體二層交換機存在一個區(qū)別,圖1中左側(cè)說明了這種區(qū)別情況:數(shù)據(jù)流是被直接發(fā)到 Bridge內(nèi),而不是從其中一個邏輯端口接受。該情況可以認為Bridge 自身擁有一個 MAC地址可以主動發(fā)送報文,或者認為Bridge自帶了一個隱藏端口和寄主Linux系統(tǒng)自動連接,Linux系統(tǒng)內(nèi)的程序可以直接從該邏輯端口向Bridge內(nèi)的其它端口發(fā)數(shù)據(jù)。因此,當(dāng)一個Bridge與一臺邏輯網(wǎng)絡(luò)設(shè)備互連后,兩者擁有兩個有效 MAC 地址,兩者之間就可以進行數(shù)據(jù)流傳輸。
在實際項目實施過程中,通過分析問題,關(guān)于Bridge有兩點需要注意:
(1)當(dāng)前Bridge 的實現(xiàn)存在一個限制:當(dāng)一個邏輯設(shè)備互連至Bridge時,該設(shè)備的 IP地址會失效,Linux系統(tǒng)不再使用該IP在邏輯三層接受數(shù)據(jù)。
(2)需要注意的是數(shù)據(jù)流的方向。對于一個互連到Bridge上的邏輯網(wǎng)絡(luò)設(shè)備來說,只有它收到數(shù)據(jù)時,此包數(shù)據(jù)才會被轉(zhuǎn)發(fā)到Bridge上,進而完成查表廣播等后續(xù)操作。當(dāng)請求是發(fā)送類型時,數(shù)據(jù)是不會被轉(zhuǎn)發(fā)到Bridge上的,它會尋找下一個發(fā)送出口。這一現(xiàn)象同實體交換機是不同的。
虛擬路由器(vRoute)
vRoute虛擬路由器是基于網(wǎng)絡(luò)的純軟件操作系統(tǒng),運行在主流的虛擬平臺上,主要用于虛擬私有云,充當(dāng)虛擬私有云網(wǎng)關(guān),提供和物理路由器相同的功能和體驗,功能主要包括路由、防火墻、VPN、QOS、及配置管理等,建立安全、統(tǒng)一、可擴展的混合云,或用于虛擬分支,以精簡分支基礎(chǔ)設(shè)施。云計算平臺虛擬化邏輯架構(gòu)如圖2所示。
圖2 云計算平臺虛擬化邏輯架構(gòu)
vRoute是部署在數(shù)據(jù)中心或容災(zāi)機房服務(wù)器虛擬機上的網(wǎng)絡(luò)連接,通過創(chuàng)建一個或多個虛擬WAN口,并通過vSwitch連接到物理廣域網(wǎng)。同時也可以創(chuàng)建一個或多個虛擬LAN口,通過vSwitch連接其它應(yīng)用系統(tǒng)虛擬機或物理局域網(wǎng)絡(luò)。
如圖3所示,VM的Bridge為一個虛擬的邏輯二層交換機,其綁定的物理網(wǎng)卡作為上行口連接物理網(wǎng)絡(luò),而圖中的A、B、C和D便是虛擬交換機的下行邏輯端口,用于連接VM虛擬網(wǎng)口,Bridge主要實現(xiàn)VM與物理網(wǎng)絡(luò)之間的數(shù)據(jù)交換,vRoute的數(shù)據(jù)報文通過Bridge的上行口轉(zhuǎn)發(fā)到實際的物理網(wǎng)絡(luò)中。
圖3 KVM平臺虛擬網(wǎng)絡(luò)部署邏輯
通過研究及相關(guān)經(jīng)驗可知,vRoute配合KVM的Bridge進行網(wǎng)絡(luò)連接時一般情況可以使用以下三種組網(wǎng)方式:
(1)vRoute接口和主機網(wǎng)絡(luò)接口直接綁定;
(2)vRoute多個接口共用一個主機網(wǎng)絡(luò)接口(通過虛擬交換機vlan隔離);
(3)vRoute使用子接口,接收/發(fā)送帶vlan報文;
針對以上三種組網(wǎng)方案,本文給出相關(guān)應(yīng)用及配置思路。
方案1
vRoute接口和主機網(wǎng)絡(luò)接口直接綁定,主機網(wǎng)絡(luò)接口接收到的數(shù)據(jù)報文會上送到vRoute對應(yīng)的接口。典型配置組網(wǎng)如圖4所示。
圖4 VSR接口直接綁定主機網(wǎng)絡(luò)接口
vRoute的G1/0口連接到局域網(wǎng);G2/0口連接廣域網(wǎng)。
(1) vRoute虛擬網(wǎng)卡可以使用Linux Bridge方式。使用Bridge方式典型組網(wǎng)配置思路:創(chuàng)建兩個橋口br0和br1,分別橋接到物理服務(wù)器的eno3和eno4口;VSR添加兩塊虛擬網(wǎng)卡,網(wǎng)卡1綁定在橋接口br0上,網(wǎng)卡2綁定在橋接口br1上。
(2) VSR使用G1/0口通過橋口br0連接到模擬局域網(wǎng);使用G2/0口通過橋口br1連接模擬廣域網(wǎng)。
方案2
vRoute多個接口共用一個主機網(wǎng)絡(luò)接口(通過虛擬交換機vlan隔離)。
Linux KVM使用vlan接口進行vlan隔離,處理流程如下:
綁定vlan接口的虛擬網(wǎng)卡發(fā)送報文,KVM將報文在同一個vlan中轉(zhuǎn)發(fā),并添加對應(yīng)的vlan tag后從綁定的物理接口發(fā)出;物理接口收到帶vlan tag的報文后,根據(jù)vlan tag在對應(yīng)的vlan中轉(zhuǎn)發(fā),發(fā)送時會去掉對應(yīng)的vlan tag(虛擬機連接的接口為Access口)。典型配置組網(wǎng)如圖5所示。
Vlan11為物理廣域網(wǎng)絡(luò),Vlan10為內(nèi)部局域網(wǎng)絡(luò),VSR的G2/0口連接到物理廣域網(wǎng); G1/0口連接其它虛擬機或物理局域網(wǎng)絡(luò)。
圖5 VSR多個接口共用一個主機網(wǎng)絡(luò)接口
(1)vRoute虛擬網(wǎng)卡用Bridge方式。使用Bridge方式典型配置組網(wǎng)說明:
eno3口添加兩個vlan接口eno3.10和eno3.11,分別對應(yīng)vlan10和vlan11;創(chuàng)建兩個橋口br0.10和br0.11,分別橋接到eno3.10和eno3.11上;VSR添加兩塊虛擬網(wǎng)卡,網(wǎng)卡1綁定在橋接口br3.10上,網(wǎng)卡2綁定在橋接口br3.11上;物理交換機連接虛擬服務(wù)器的網(wǎng)口配置為trunk口,允許vlan10和vlan11通過。交換機上建立兩個vlan interface vlan-10和vlan interface vlan-11,模擬局域網(wǎng)和廣域網(wǎng)。
(2)vRoute使用G1/0口通過橋口br0.10連接到物理局域網(wǎng);使用G2/0口通過橋口br0.11連接物理廣域網(wǎng)。
方案3
vRoute使用子接口,接收/發(fā)送帶vlan報文。vRoute使用子接口時需要配置vlan終結(jié),vRoute收到帶vlan tag的報文后,根據(jù)vlan tag匹配到不同的子接口,vRoute子接口發(fā)出的報文也會攜帶相應(yīng)的vlan tag。
vRoute使用子接口時,虛擬網(wǎng)卡只能使用Bridge方式,并且主機上對應(yīng)的接口不能創(chuàng)建vlan接口。這樣從物理接口接收的帶vlan tag的報文可以直接轉(zhuǎn)發(fā)到vRoute的虛擬網(wǎng)卡上,vRoute虛擬網(wǎng)卡發(fā)送的帶vlan tag的報文也可以直接通過物理接口發(fā)出。典型配置組網(wǎng)如圖6所示。
vRoute的G1/0口連接到物理局域網(wǎng),Loopback 1模擬物理廣域網(wǎng)絡(luò)。
(1)典型組網(wǎng)配置思路:創(chuàng)建一個橋口br0,橋接到eth3;VSR添加一塊虛擬網(wǎng)卡,網(wǎng)卡1綁定在橋接口br0上;物理交換機連接虛擬服務(wù)器eth1/0/11的網(wǎng)口配置為trunk口,允許vlan10和vlan11通過。
圖6 VSR使用子接口組網(wǎng)
(2)vRoute使用Gig1/0口通過橋口br0連接到局域網(wǎng);使用Loopback 1模擬廣域網(wǎng)服務(wù)器,地址配置為12.0.0.,物理局域網(wǎng)絡(luò)通過vlan劃分不同的子網(wǎng),連接Gig1/0不同的子接口。
目前,根據(jù)本文提出的第二套方案,北京幾所高校已經(jīng)通過虛擬化形成統(tǒng)一的資源池,分別應(yīng)用于學(xué)校教務(wù)系統(tǒng)、選課系統(tǒng)以及招生就業(yè)系統(tǒng)。
通過數(shù)據(jù)中心網(wǎng)管軟件監(jiān)控系統(tǒng)信息顯示,服務(wù)器CPU、內(nèi)存使用效率方面都有很大地提升,并且解決了之前該校選課期間系統(tǒng)由于高并發(fā)導(dǎo)致系統(tǒng)崩潰的現(xiàn)象,師生反映良好,現(xiàn)在選課期間系統(tǒng)運轉(zhuǎn)順暢,不需要學(xué)生錯峰選課。學(xué)校招生期間,無任何由于招生就業(yè)系統(tǒng)產(chǎn)生的問題,招生工作順暢。
所以,云數(shù)據(jù)中心不僅降低了學(xué)校信息化方面的各項投入,簡化了網(wǎng)絡(luò)運維管理工作,提升了數(shù)據(jù)中心資源利用率,也實現(xiàn)了節(jié)能減排目標。實踐證明,依據(jù)上述方法并根據(jù)設(shè)備情況采取最優(yōu)的配置方式,實現(xiàn)KVM云計算平臺的網(wǎng)絡(luò)最優(yōu),能提升云計算平臺的效能和穩(wěn)定性。