SDN 網(wǎng)絡(luò)直通服務(wù),讓你的容器性能提升百倍

青云QingCloud 為基于 VM 部署的容器應(yīng)用提供了一套簡(jiǎn)便易行的網(wǎng)絡(luò)配置方案——SDN 網(wǎng)絡(luò)直通服務(wù) (SDN Passthrough)。相比于傳統(tǒng)方案,SDN網(wǎng)絡(luò)直通服務(wù)將大幅提升容器應(yīng)用的網(wǎng)絡(luò)性能,并降低配置與維護(hù)的操作難度。

傳統(tǒng)網(wǎng)絡(luò)方案的挑戰(zhàn)

眾所周知,網(wǎng)絡(luò)對(duì)于容器來(lái)說(shuō)至關(guān)重要。但容器并沒(méi)有解決好自身的網(wǎng)絡(luò)問(wèn)題。早期,容器只有單機(jī)的網(wǎng)絡(luò)解決方案,在 1.19 版本之后才引入原生的 Overlay 網(wǎng)絡(luò)解決方案。

下面,我們以基于虛擬主機(jī)部署Docker為例,看看傳統(tǒng)網(wǎng)絡(luò)方案中的問(wèn)題所在。

首先,在虛擬主機(jī)的網(wǎng)絡(luò)之上,Docker 系統(tǒng)還需要自己實(shí)現(xiàn)如下兩點(diǎn):

在虛擬主機(jī)內(nèi)部實(shí)現(xiàn)虛擬網(wǎng)絡(luò),以聯(lián)通各 Docker 實(shí)例。

常用的實(shí)現(xiàn)方式是通過(guò)使用 Docker 提供的 Bridge 和 Overlay 網(wǎng)絡(luò)插件,前者通過(guò)地址轉(zhuǎn)換和路由連通私有網(wǎng)絡(luò),后者通過(guò) Vxlan 隧道方式,構(gòu)建一層 Overlay network。

實(shí)現(xiàn)一些復(fù)雜的網(wǎng)絡(luò)功能。

除了聯(lián)通 Docker 實(shí)例,還需要向 Docker 實(shí)例提供公網(wǎng) IP,負(fù)載均衡器和防火墻等功能,這些都需要自主實(shí)現(xiàn),而無(wú)法復(fù)用云平臺(tái)提供的相應(yīng)功能。

其次,通過(guò)以上這種方式部署 Docker,雖然可以實(shí)現(xiàn)基本的功能,但是存在兩個(gè)重要挑戰(zhàn):

性能差。

這種使用 Docker Overlay 的方案會(huì)帶來(lái)近 3/4 的性能損耗,如果算上對(duì)外提供服務(wù)所需要的地址轉(zhuǎn)換帶來(lái)的性能損失,整體性能損失將更為巨大。

PS:測(cè)試環(huán)境中,虛擬主機(jī)之間: 帶寬 9Gbps,而虛擬主機(jī)內(nèi)使用 Docker overlay 插件的 Docker 實(shí)例之間,帶寬下降為 2.3Gbps 。

部署復(fù)雜。

目前主流的 Docker 管理平臺(tái),比如 K8S,使用者如果想構(gòu)建一套網(wǎng)絡(luò)方案,需要精通Linux提供的各種高級(jí)網(wǎng)絡(luò)功能,這也為用戶(hù)設(shè)置了較高的技術(shù)門(mén)檻。特別是對(duì)專(zhuān)注于業(yè)務(wù)開(kāi)發(fā)的 Docker 用戶(hù)而言,這類(lèi)操作往往顯得過(guò)于復(fù)雜。

所以,雖然容器技術(shù)正在逐步被大家認(rèn)可與應(yīng)用,但其網(wǎng)絡(luò)性能以及配置的復(fù)雜程度一直都在被大家所詬病。

其實(shí),上述問(wèn)題的根源在于云平臺(tái)和 Docker 平臺(tái)都有自己的虛擬化網(wǎng)絡(luò)實(shí)現(xiàn)方案,二者功能重疊,使用時(shí)會(huì)相互嵌套。

SDN 網(wǎng)絡(luò)直通服務(wù)

那么,『SDN 網(wǎng)絡(luò)直通服務(wù)』是如何解決性能以及部署復(fù)雜性的問(wèn)題呢?

簡(jiǎn)單來(lái)說(shuō),SDN 網(wǎng)絡(luò)直通就是讓用戶(hù)的 Docker 直接使用云平臺(tái)的 SDN 能力,避免兩層網(wǎng)絡(luò)嵌套,從而達(dá)到提高性能,和簡(jiǎn)化配置的效果。

其包含兩大組件:「網(wǎng)卡」管理和「Hostnic」插件。

網(wǎng)卡管理。

通過(guò)提供網(wǎng)卡接口,讓虛擬主機(jī)能夠掛載多個(gè)網(wǎng)卡。這些網(wǎng)卡可以屬于相同或者不同的網(wǎng)絡(luò),同時(shí)每個(gè)網(wǎng)卡能夠管理自己的私網(wǎng) IP,公網(wǎng) IP,負(fù)載均衡器和防火墻等功能。

Hostnic 插件。

這是青云QingCloud 自主開(kāi)發(fā)的一款 Docker 網(wǎng)絡(luò)插件。在啟動(dòng) Docker 實(shí)例的時(shí)候,通過(guò)該插件,可以將虛擬主機(jī)上的綁定的多個(gè)網(wǎng)卡一一掛載到 Docker 實(shí)例上, 并可以配置 IP 地址和路由。啟動(dòng)之后,Docker 實(shí)例就加入了云平臺(tái) SDN 提供的網(wǎng)絡(luò),能夠使用云平臺(tái)所有的網(wǎng)絡(luò)功能。

PS:希云cSphere 也開(kāi)源了一款基于 QingCloud SDN 網(wǎng)絡(luò)直通方案的插件,qingcloud-docker-network,相比 Hostnic,這款插件整合了 QingCloud API,可以在啟動(dòng) Docker 的時(shí)候,自動(dòng)創(chuàng)建并掛載網(wǎng)卡,使用起來(lái)更方便。 地址:http://github.com/nicescale/qingcloud-docker-network

當(dāng)用戶(hù)選擇使用 SDN 網(wǎng)絡(luò)直通服務(wù)時(shí),能夠?qū)崿F(xiàn) Docker 直接使用云平臺(tái)的 SDN,避免兩層網(wǎng)絡(luò)的重疊,從而達(dá)到提高性能和簡(jiǎn)化配置的效果,并支持獨(dú)立掛載 EIP、獨(dú)立配置防火墻策略(SG)、及掛載為負(fù)載均衡 (LB)后端,提升對(duì)復(fù)雜網(wǎng)絡(luò)架構(gòu)的支持能力。

本文轉(zhuǎn)載自:https://zhuanlan.zhihu.com/p/24902370?refer=qingcloud

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容