您好,登錄后才能下訂單哦!
上一篇文章已經(jīng)介紹過,在集中式網(wǎng)絡(luò)節(jié)點(diǎn)模式下,所有的計(jì)算節(jié)點(diǎn)只安裝二層代理,所有三層流量無論是南北或東西走向都必須經(jīng)過網(wǎng)絡(luò)節(jié)點(diǎn),盡管可以通過HA的方式保證網(wǎng)絡(luò)節(jié)點(diǎn)的高可用,但是基于vrrp的HA方式同一時(shí)間點(diǎn)只有一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)處于工作狀態(tài),這樣在大規(guī)模場(chǎng)景下網(wǎng)絡(luò)節(jié)點(diǎn)仍然會(huì)成為性能瓶頸,為此openstack社區(qū)從Juno版本開始推出的DVR模式來解決上述問題,需要說明的是:在Mitaka版本之前DVR與L3 HA功能不能同時(shí)啟用,從Mitaka版本之后才支持DVR與L3 HA功能同時(shí)開啟。
為了解決網(wǎng)絡(luò)節(jié)點(diǎn)的流量瓶頸問題,DVR通過在計(jì)算節(jié)點(diǎn)部署L3 Agent,讓不同subnet之間的東西流量和綁定floating ip的vm的南北流量直接通過計(jì)算節(jié)點(diǎn)訪問外網(wǎng),只有未綁定floating ip的vm的南北南北流量才需要通過網(wǎng)絡(luò)節(jié)點(diǎn)SNAT訪問外網(wǎng),此時(shí)的集群架構(gòu)如下圖所示:
不同于集中式網(wǎng)絡(luò)節(jié)點(diǎn)中所有計(jì)算節(jié)點(diǎn)只走二層流量,DVR模式下,每個(gè)計(jì)算節(jié)點(diǎn)都可以走3層流量,以此來分?jǐn)偩W(wǎng)絡(luò)節(jié)點(diǎn)的流量壓力。
DVR模式下,網(wǎng)絡(luò)節(jié)點(diǎn)內(nèi)部組件此時(shí)如下圖所示:
可以看到,啟用DVR模式后的網(wǎng)絡(luò)節(jié)點(diǎn)多了一個(gè)SNAT Namespace空間。在在所有計(jì)算節(jié)點(diǎn)都開啟DVR功能時(shí),Router Namespace中的Metadata Agent只負(fù)責(zé)處理Project網(wǎng)絡(luò)中的元數(shù)據(jù),SNAT Namespace空間負(fù)責(zé)對(duì)只有fix ip的vm通過源地址轉(zhuǎn)換的方式訪問外網(wǎng)。如果所有的計(jì)算節(jié)點(diǎn)將DVR模式關(guān)閉,此時(shí)vm的流量和集中式網(wǎng)絡(luò)節(jié)點(diǎn)一致,即所有的三層流量都需要經(jīng)過網(wǎng)絡(luò)節(jié)點(diǎn)的Router Namespace處理。
當(dāng)開啟DVR功能后,此時(shí)計(jì)算節(jié)點(diǎn)內(nèi)部組件如下圖所示:
啟用DVR功能的計(jì)算節(jié)點(diǎn)因?yàn)椴渴鹆薒3 Agent組建,所以擁有Distribute Router NameSpace,并且當(dāng)創(chuàng)建vm時(shí),還會(huì)自動(dòng)生成fip名稱空間,所有計(jì)算節(jié)點(diǎn)的Distribute Router NameSpace完全一致,名稱空間接口的ip和mac地址也一樣(初始化時(shí)所有計(jì)算節(jié)點(diǎn)的名稱空間都是源自網(wǎng)絡(luò)節(jié)點(diǎn)的副本),了解網(wǎng)絡(luò)的都知道,同一時(shí)間同一網(wǎng)絡(luò)中ip與mac地址要一致,否則交換通過反復(fù)mac地址學(xué)習(xí)到的arp表?xiàng)l目會(huì)有沖突,為了解決這一問題,DVR結(jié)構(gòu)為每個(gè)運(yùn)行L3 Agent的計(jì)算節(jié)點(diǎn)指定全局唯一的mac地址(dvr_host_mac)。
相同subnet下vm之間的流量走向與集中式網(wǎng)絡(luò)節(jié)點(diǎn)類似,此處不在贅述,下面以不同subnet之間vm的vxlan流量走向?yàn)槔M(jìn)行說明,此時(shí)vm間流量走向如下圖所示:
1.位于compute1中的vm1向compute2中的vm2發(fā)出請(qǐng)求。此時(shí)源/目的ip為vm1/2的ip地址,源/目的mac地址為vm1與網(wǎng)關(guān)qr-1的mac地址。
2.報(bào)文經(jīng)過linux bridge進(jìn)行iptables安全檢查,然后送往br-int。
3.進(jìn)入br-int上的報(bào)文被打上內(nèi)部vlan號(hào)并送往vm1的網(wǎng)關(guān)qr-1,qr-1接口上配置vm1的網(wǎng)關(guān)地址,經(jīng)查表報(bào)文從qr-2口流出,qr-2接口設(shè)置vm2的網(wǎng)關(guān)地址。
4.從qr-2口出來的報(bào)文,此時(shí)源/目的ip為vm2網(wǎng)關(guān)(qr-2)的ip和vm2的ip地址,源/目的mac為qr-2口mac和vm2的mac地址,并將報(bào)文進(jìn)入br-tun。
5.報(bào)文在br-tun交換機(jī)上將源mac地址(qr-2)換為全局唯一mac地址(dvr_host_mac),然后進(jìn)行vxlan封裝,離開compute1。
6.報(bào)文到達(dá)compute2后首先vxlan解封裝,然后再將源mac地址(dvr_host_mac)換為vm2網(wǎng)關(guān)(qr-2)mac地址,送往br-int并在br-int交換機(jī)打上內(nèi)部vlan號(hào)。
7.報(bào)文脫掉內(nèi)部vlan號(hào),進(jìn)入linux bridge,進(jìn)行安全策略檢查。
8.最終數(shù)據(jù)報(bào)文達(dá)到vm2。
vm2數(shù)據(jù)報(bào)文返回的過程與數(shù)據(jù)報(bào)文到達(dá)vm2的過程一致,不再贅述。
vm南北流量分為floating ip和fix ip兩種情況,對(duì)這兩種情況分別進(jìn)行說明:
沒有綁定floating ip的vm在訪問外網(wǎng)時(shí)需要通過網(wǎng)絡(luò)節(jié)點(diǎn)的SNAT Router NameSpace進(jìn)行地址轉(zhuǎn)換,其流量走向如下圖所示:
1.vm向外網(wǎng)發(fā)起請(qǐng)求,數(shù)據(jù)報(bào)文送往linux bridge。
2.進(jìn)入linux bridge的數(shù)據(jù)報(bào)文經(jīng)過iptables安全策略檢查后將報(bào)文送往br-int,此時(shí)打上內(nèi)部vlan號(hào)。
3.數(shù)據(jù)報(bào)文從br-int送往Router NameSpace的qr口,該接口配置了vm的網(wǎng)關(guān)地址,在Router NameSpace內(nèi)對(duì)Snet NameSpace的sg口的mac地址進(jìn)行解析,sg接口為vm所在子網(wǎng)的接口,該接口上的ip地址與vm在同一網(wǎng)段。然后將報(bào)文送往br-tun。
4.數(shù)據(jù)報(bào)文進(jìn)入br-tun后脫掉內(nèi)部vlan號(hào),進(jìn)行vxlan封裝,打上vni號(hào),離開conpute1.
5.數(shù)據(jù)報(bào)文進(jìn)入Network節(jié)點(diǎn),脫掉vni號(hào),進(jìn)行vxlan解封裝,送往br-int交換機(jī),進(jìn)入br-int交換機(jī)后打上內(nèi)部vlan號(hào)。
6.數(shù)據(jù)報(bào)文進(jìn)入sg后,進(jìn)行路由查表,將數(shù)據(jù)發(fā)往fg口,fg口上配置的是可被路由的公網(wǎng)ip。
7.數(shù)據(jù)報(bào)文在fg口上進(jìn)行SNAT地址轉(zhuǎn)換,轉(zhuǎn)換后的源ip地址為fg口上配置的公網(wǎng)ip訪問公網(wǎng)。
啟用DVR功能后每臺(tái)計(jì)算節(jié)點(diǎn)主機(jī)都安裝了L3 Agent,綁定了floating ip的vm不再需要繞行到網(wǎng)絡(luò)節(jié)點(diǎn),直接由計(jì)算節(jié)點(diǎn)主機(jī)訪問呢公網(wǎng),其流量走向如下圖所示:
1.vm向外網(wǎng)發(fā)起訪問,由于vm是provider類型的私網(wǎng)地址,所以首先要去找vm地址所在的網(wǎng)關(guān)。
2.數(shù)據(jù)報(bào)文經(jīng)過linux bridge和br-int后進(jìn)入Distribute NameSpace的qr口,該接口配置的ip地址為vm的網(wǎng)關(guān)地址。
3.數(shù)據(jù)報(bào)文從qr口流出,進(jìn)入rfp口,該接口上配置有2個(gè)ip地址,其中3為vm綁定的floating ip地址,在此處進(jìn)行SNAT地址轉(zhuǎn)換,外網(wǎng)流量訪問vm時(shí)在此名稱空間利用iptables做DNAT地址轉(zhuǎn)換。
4.通過qrouter與fip內(nèi)部通信的直連接口(4),接口地址由L3 Agent自行維護(hù),ip為169.254.x.x/31格式,將數(shù)據(jù)包發(fā)往fip名稱空間。
5.fip空間的直連接口fpr接收到數(shù)據(jù)包后,轉(zhuǎn)發(fā)給外網(wǎng)網(wǎng)關(guān)fg口。
6.fip名稱空間外網(wǎng)網(wǎng)關(guān)接口將數(shù)據(jù)包發(fā)到br-ex交換機(jī)最后通過物理網(wǎng)卡訪問internet,外網(wǎng)訪問vm的數(shù)據(jù)流向?yàn)樵撨^程的逆方向,此處不再贅述。
針對(duì)使用floating ip的數(shù)據(jù)包進(jìn)出時(shí)需要注意的地方是:
1.fg接口上會(huì)額外配置一個(gè)外網(wǎng)ip地址,這也是為什么公有云場(chǎng)景下不會(huì)將vm外網(wǎng)ip直接設(shè)置成公網(wǎng)ip地址的原因,因?yàn)槊總€(gè)計(jì)算主機(jī)都需要一個(gè)額外的地址作為fg網(wǎng)關(guān)地址。
2.當(dāng)外部網(wǎng)絡(luò)訪問vm時(shí),請(qǐng)求的ip地址是qrouter名稱空間中rfp接口上做SNAT的ip地址,但此時(shí)fg接口會(huì)響應(yīng)rfp接口上外網(wǎng)ip的arp地址解析請(qǐng)求,所以通常認(rèn)為fg接口是floating ip的arp代理接口。
通過前文得知,開啟DVR模式下的網(wǎng)絡(luò)節(jié)點(diǎn)只是針對(duì)沒有綁定floating ip的vm進(jìn)行SNAT地址轉(zhuǎn)換,并且qrouter名稱空間只處理元數(shù)據(jù),所以不同于傳統(tǒng)L3 HA對(duì)Router NameSpace的高可用,DVR下的L3 HA是對(duì)SNAT NameSpace進(jìn)行的高可用,仍采用vrrp實(shí)現(xiàn),如下圖所示:
從部署結(jié)構(gòu)來看,分別要對(duì)SNAT外網(wǎng)ip地址和子網(wǎng)接口ip地址做高可用,所以當(dāng)使用keepalive時(shí),此時(shí)架構(gòu)如下圖所示:
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。