文/孫耀文 李剛 楊屹
隨著SDN-軟件自定義網(wǎng)絡(luò)技術(shù)的發(fā)展和日益成熟,其影響力已經(jīng)席卷了各大數(shù)據(jù)中心和云服務(wù)供應(yīng)商,而且正在迅速的在向院校、企業(yè)網(wǎng)中滲透,從某個(gè)角度來(lái)說(shuō),甚至可以稱之為SDN是云計(jì)算的“第二階段”,可以預(yù)見(jiàn)的是,就像當(dāng)前服務(wù)器虛擬化的迅猛發(fā)展一樣,在將來(lái)的數(shù)據(jù)中心內(nèi),設(shè)計(jì)、部署、實(shí)施以及運(yùn)維都將離不開(kāi)SDN技術(shù),這將在很大程度上改變IT從業(yè)人員的工作方式,而網(wǎng)絡(luò)虛擬化作為一個(gè)分支,已經(jīng)成為SDN發(fā)展到一定階段的必然產(chǎn)物,現(xiàn)在各個(gè)廠商也相繼推出了自己的相關(guān)產(chǎn)品,例如VMware NSX、Cisco ACI、Microsoft HNV等,但相比較而言,真正實(shí)現(xiàn)了“軟件自定義、多功能性、相對(duì)開(kāi)放性、與底層物理網(wǎng)絡(luò)解耦“的只有VMware NSX,在NSX中的Edge邊界網(wǎng)關(guān)集成了類似NFV的防火墻、負(fù)載均衡、DHCP、NAT、VPN等功能,本文就單臂負(fù)載均衡功能為基礎(chǔ)實(shí)現(xiàn)CentOS的主機(jī)高可用性以及CentOS的中的Crontab、Rsync命令實(shí)現(xiàn)靜態(tài)網(wǎng)站數(shù)據(jù)的自動(dòng)化同步展開(kāi)討論和研究。
VMware NSX(以下簡(jiǎn)稱NSX)作為當(dāng)前最先進(jìn)的網(wǎng)絡(luò)虛擬化產(chǎn)品之一,所能提供的功能中包含四到七層的邏輯負(fù)載均衡服務(wù),技術(shù)核心為將服務(wù)分?jǐn)偟蕉鄠€(gè)單元上執(zhí)行,主要是為了實(shí)現(xiàn)將應(yīng)用橫向擴(kuò)展,也就是將工作負(fù)載橫向分布到多臺(tái)服務(wù)器上以及提供高可用性。負(fù)載均衡可以由硬件來(lái)實(shí)現(xiàn)也可以由軟件來(lái)執(zhí)行,雖然硬件負(fù)載均衡在性能上優(yōu)于軟件方式,不過(guò)其往往成本高昂,部署復(fù)雜,而且現(xiàn)在的服務(wù)器CPU和內(nèi)存都非常強(qiáng)大,基本上杜絕了傳統(tǒng)軟件負(fù)載均衡方案效率低下的弊端,而NSX作為基于軟件的負(fù)載均衡技術(shù),建立在現(xiàn)有網(wǎng)絡(luò)之上,提供了一種配置簡(jiǎn)單、高效、廉價(jià)、透明的方式來(lái)擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬,能有效的增加吞吐量,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力,而且NSX中的很多技術(shù)細(xì)節(jié)是非常有利于其更高效率的進(jìn)行負(fù)載均衡服務(wù)的:
(1)NSX本身是基于overlay技術(shù)的,而VXLAN是overlay技術(shù)的基礎(chǔ),核心理念就是對(duì)現(xiàn)有的VLAN標(biāo)簽技術(shù)進(jìn)行徹底改變,通過(guò)將原始以太網(wǎng)報(bào)文進(jìn)行UDP二次封裝的手段,增加 VNI(VXLAN Network Identifier)標(biāo)識(shí)符并進(jìn)行VTEP隧道轉(zhuǎn)發(fā),在封裝時(shí),新的UDP包頭的頭部包含源、目的端口號(hào),而這個(gè)源端口號(hào),是根據(jù)原始以太網(wǎng)數(shù)據(jù)的頭部進(jìn)行哈希計(jì)算后得出的結(jié)果,這種做法可以更好的支持負(fù)載均衡和等價(jià)多路徑技術(shù)。
(2)NSX Controller作為控制平面,實(shí)現(xiàn)對(duì)轉(zhuǎn)發(fā)平面流量實(shí)現(xiàn)集中化策略控制,職責(zé)是控制運(yùn)行在Hypervisor之上的交換、路由以及Edge服務(wù),其引入了切片技術(shù),將負(fù)載切分成大量不同的片,主要目的之一就是能夠更有效的進(jìn)行負(fù)載均衡,而且切片的力度更細(xì)則負(fù)載均衡效果越好,按照官方的建議,一般規(guī)模是部署3、5、7臺(tái)Controller。
(3)NSX本身支持三種負(fù)載均衡服務(wù)模式:?jiǎn)伪圬?fù)載均衡模式、在線負(fù)載均衡模式、分布式負(fù)載均衡模式,在這里我們就常用的單臂負(fù)載均衡模式展開(kāi)研究,這種模式其實(shí)更可以理解為在現(xiàn)有服務(wù)器網(wǎng)絡(luò)中部署一臺(tái)“負(fù)載均衡器”,與傳統(tǒng)的Edge邊界網(wǎng)關(guān)不同,它只需要一個(gè)vNIC作為Internal-Interface來(lái)連接內(nèi)部網(wǎng)絡(luò),沒(méi)有Uplink-Interface,所有被負(fù)載均衡的虛擬服務(wù)器數(shù)據(jù)的流入、流出虛擬網(wǎng)絡(luò)都經(jīng)過(guò)它來(lái)處理和進(jìn)行負(fù)載均衡算法并進(jìn)行虛擬服務(wù)器資源調(diào)撥,整體工作流程概括為(Client IP既訪問(wèn)者IP)-(Edge Uplink-Interface IP邊界網(wǎng)關(guān)外網(wǎng)IP)-(Edge LB Internal-Interface IP負(fù)載均衡Edge進(jìn)行相關(guān)算法進(jìn)行調(diào)撥)-(Server IP被分配的最終服務(wù)器IP),反之步驟亦然。
實(shí)現(xiàn)單臂負(fù)載均衡的技術(shù)前提是VMware vSphere集群已經(jīng)正常運(yùn)作,VMware NSX的所有基礎(chǔ)組件已經(jīng)正確配置運(yùn)行而且已經(jīng)與vCenter進(jìn)行有效集成,主要組件包括:NSX Manager-NSX管理器、NSX Controller-NSX控制器、VXLAN-虛擬可擴(kuò)展局域網(wǎng)、TransportZone-傳輸區(qū)域、LSW-邏輯交換機(jī)、DLR-分布式邏輯路由器、Edge-邊界服務(wù)網(wǎng)關(guān);搭建的實(shí)驗(yàn)環(huán)境如下:
NSX Manager:192.168.3.114( 版本為6.4.3);NSX Controller:192.168.3.185~187(3個(gè)控制器節(jié)點(diǎn));VXLAN VTEP:192.168.3.188~189(MTU 1600);TransportZone:VXLAN Pool 5000~5999( 單播);LSW-Subnet-1(192.168.1.0/24實(shí)驗(yàn)網(wǎng)段);DLR:192.168.1.1(該網(wǎng)段網(wǎng)關(guān),連接ESG以及LSW-Subnet-1);ESG:IP 192.168.3.90~95(邊界網(wǎng)關(guān),執(zhí)行SNAT、DNAT)。
ESG-SNAT設(shè)置:邊界ESG的地址為192.168.3.91,SNAT應(yīng)用于ESG的Uplink Interface,協(xié)議為任意,原始源IP/范圍為實(shí)驗(yàn)網(wǎng)段LSW-Subnet-1承載的192.168.1.2~192.168.1.254地址范圍,目標(biāo)IP/范圍為any,轉(zhuǎn)換后的源IP/范圍我們?nèi)?92.168.3.92~192.168.3.95,最后啟用日志記錄功能。
ESG-DNAT設(shè)置:DNAT應(yīng)用于ESG的Uplink Interface,協(xié)議為任意,源IP/范圍為any,源端口/范圍為任意,原始目標(biāo)IP/范圍為192.168.3.90(這個(gè)IP是下面要部署的用于負(fù)載均衡的ESG-LB的外網(wǎng)轉(zhuǎn)換IP地址),轉(zhuǎn)換后的IP/范圍為192.168.1.254(這個(gè)IP是ESG-LB的內(nèi)網(wǎng)IP地址),轉(zhuǎn)換后的端口/范圍為任意,最后啟用日志記錄功能。
同時(shí)準(zhǔn)備兩臺(tái)Centos7的虛擬機(jī)作為web服務(wù)器,分別為CentOS01和CentOS02,地址為192.168.1.2和192.168.1.3,網(wǎng)關(guān)192.168.1.1(也就是分布式路由器的內(nèi)網(wǎng)IP),并編譯安裝Apache作為web服務(wù)
在以上步驟全部完成且正常運(yùn)行以后,此時(shí)CentOS的兩臺(tái)web服務(wù)器運(yùn)行在192.168.1.0也就是邏輯交換機(jī)在的內(nèi)部網(wǎng)段,如果SNAT配置正確的話,這兩臺(tái)虛擬機(jī)是可以訪問(wèn)外部網(wǎng)絡(luò)的,因?yàn)閷?shí)驗(yàn)環(huán)境中部署了VMware Log Insight并在ESG中進(jìn)行了將日志設(shè)置輸出到Log Insight,可以很詳細(xì)的觀測(cè)到SNAT的轉(zhuǎn)化結(jié)果,比如在CentOS01和CentOS02也就是192.168.1.2和192.168.1.3上前后相隔10分鐘分別進(jìn)行了一個(gè)ping 114.114.114.114的 操 作,Log Insight上可以看到ESG到SNAT的轉(zhuǎn)換日志,可以看到192.168.1.2通過(guò)SNAT被轉(zhuǎn)換為192.168.3.92,而192.168.1.3通過(guò)SNAT被轉(zhuǎn)化為了192.168.3.93與外網(wǎng)114.114.114.114這個(gè)地址進(jìn)行了通信;然后開(kāi)始部署用于負(fù)載均衡的ESG,首先需要借助vCenter左側(cè)菜單中的“網(wǎng)絡(luò)和安全”中的“NSX Edge”界面生成一臺(tái)新的設(shè)備,安裝類型選擇“Edge服務(wù)網(wǎng)關(guān)”,名稱ESG-LB-WEB,并勾選“部署NSX Edge”,接口選擇類型為“內(nèi)部”,連接到和兩臺(tái)CentOS服務(wù)器同一個(gè)邏輯交換機(jī)“LSW-Subnet-1”,ESG的主地址為和兩臺(tái)CentOS服務(wù)器同一網(wǎng)段的192.168.1.254/24,網(wǎng)關(guān)為192.168.1.1。
ESG-LB部署完畢以后,應(yīng)該可以看到NSX Edge界面已經(jīng)存在三臺(tái)edge設(shè)備分別為邊界網(wǎng)關(guān)ESG,分布式路由器DLR和用于單臂負(fù)載均衡的ESG-LB,雙擊進(jìn)入新生成的ESG-LB設(shè)備,從“設(shè)置”標(biāo)簽頁(yè)進(jìn)入后選擇“證書(shū)”子選項(xiàng),因?yàn)樨?fù)載均衡服務(wù)是通過(guò)SSL加密的,所以需要先點(diǎn)選“生成CSR”,然后點(diǎn)選生成的CSR-再選擇“操作”-“自簽名證書(shū)”,天數(shù)暫時(shí)選擇365天。然后點(diǎn)擊頁(yè)面上方的“負(fù)載均衡器”標(biāo)簽頁(yè),選擇“啟用負(fù)載局衡器”并點(diǎn)選“日志記錄”功能,然后點(diǎn)擊左側(cè)菜單中的“應(yīng)用程序配置文件”,新建一個(gè)配置文件,名稱為L(zhǎng)B-WEB,因?yàn)檫@里只是計(jì)劃測(cè)試Apache的80端口,所以選擇“HTTP”。點(diǎn)擊左側(cè)菜單中的“服務(wù)監(jiān)控”,新建一個(gè)服務(wù)器監(jiān)控策略,目的是選擇ESBLB通過(guò)何種策略來(lái)檢測(cè)被負(fù)載均衡的成員服務(wù)器是否在線,實(shí)驗(yàn)環(huán)境中我們新建一個(gè)名為“Monitor-ICMP”的監(jiān)控策略并將檢測(cè)類型選擇為“ICMP”。
然后繼續(xù)點(diǎn)擊左側(cè)菜單中的“池”,新建名稱為Pool-WEB,NSX負(fù)載均衡支持的算法有很多,包括 Rоund Rоbin,Trаffiс,Usеr,Appliаt ion,Session,Service,Auto Mode等,為了實(shí)驗(yàn)效果的明顯,先選擇“Round Robin”,監(jiān)控策略則選擇剛剛新建的Montor-ICMP,然后添加被負(fù)載均衡的成員,這里通過(guò)虛擬機(jī)名稱將兩臺(tái)CentOS服務(wù)器加入。繼續(xù)點(diǎn)擊左側(cè)菜單中的“虛擬服務(wù)器”,新建一個(gè)虛擬IP,用于DNAT中的映射地址來(lái)使用,至此關(guān)于單臂負(fù)載均衡器的主體設(shè)置完成。
但是此時(shí)負(fù)載均衡器還是和web服務(wù)器一樣處于內(nèi)網(wǎng),前面的SNAT只是完成了內(nèi)部服務(wù)器數(shù)據(jù)通往外網(wǎng)的設(shè)置,此時(shí)還需要在網(wǎng)關(guān)Edge上做針對(duì)內(nèi)網(wǎng)IP的DNAT映射,192.168.3.90這個(gè)地址是Edge的UplinkInterface的輔助地址之一,而且并沒(méi)有作為SNAT的地址來(lái)使用,我們回到網(wǎng)關(guān)Edge上面新建一個(gè)DNAT規(guī)則,應(yīng)用于“Uplink Interface”,協(xié)議選擇“TCP”,源IP/范圍填寫(xiě)“any”,原始目標(biāo)IP/范圍填寫(xiě)192.168.3.90,端口選擇80,轉(zhuǎn)換后的IP/范圍填寫(xiě)ESB-LB的內(nèi)網(wǎng)地址192.168.1.254,轉(zhuǎn)換后的端口/范圍選擇“任意”。
至此我們完成了所有SNAT、DNAT以及單臂負(fù)載均衡的設(shè)置工作,然后需要著手完善CentOS中的Apache配置,因?yàn)橹皇菍?shí)驗(yàn)環(huán)境所以并未將Apache服務(wù)器作進(jìn)一步的優(yōu)化和添加為系統(tǒng)服務(wù),它存在的目的只是讓我們能夠明確觀察到單臂負(fù)載均衡起到了作用,使用Apache自帶的index.html回顯不同的內(nèi)容來(lái)達(dá)到這個(gè)目的,我們將/soft/apache2/htdocs中的index.html修改為有標(biāo)示性的內(nèi)容以便分辨到底是哪臺(tái)服務(wù)器提供了web訪問(wèn)的服務(wù),然后我們?cè)?92.168.3.0/24網(wǎng)段的服務(wù)器上模擬外部訪問(wèn)請(qǐng)求,使用不同的Session并結(jié)合VMware Log Insight中的日志信息來(lái)進(jìn)一步確定結(jié)果.可以看到Log insight中明確記錄了NSX單臂負(fù)載均衡的相關(guān)日志,當(dāng)使用同一瀏覽器訪問(wèn)http://192.168.3.90的80端口時(shí),ESB-LB使用RoundRobin算法分別將兩次客戶端請(qǐng)求調(diào)撥分擔(dān)到了不同的CentOS服務(wù)器上,實(shí)現(xiàn)了我們的目的-單臂負(fù)載均衡。
雖然我們已經(jīng)實(shí)現(xiàn)了基于VMware NSX的單臂負(fù)載均衡實(shí)現(xiàn)CetnOS的高可用性以及負(fù)載均衡,但仍可以進(jìn)一步優(yōu)化整個(gè)結(jié)構(gòu),比如在vSphere的DRS中設(shè)置隔離規(guī)則,將這兩臺(tái)CentOS永遠(yuǎn)由不同的ESXi來(lái)承載,這樣部署的優(yōu)點(diǎn)在于,如果某臺(tái)CentOS系統(tǒng)本身甚至ESXi虛擬化主機(jī)出現(xiàn)故障離線,那么ESG-LB會(huì)在保持業(yè)務(wù)不中斷的情況下,通過(guò)適合我們業(yè)務(wù)系統(tǒng)需求的特定算法將所有客戶端訪問(wèn)請(qǐng)求發(fā)送給仍舊正常運(yùn)行的虛擬web服務(wù)器,如果正在運(yùn)行的服務(wù)器大于兩臺(tái)且ESG-LB正確配置的話,剩余的服務(wù)器依舊可以實(shí)現(xiàn)負(fù)載均衡功能,然后會(huì)通過(guò)NSX的日志系統(tǒng)或Log Insight日志系統(tǒng)給予告警,以便管理人員進(jìn)行進(jìn)一步的故障處理工作。