999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

云原生網(wǎng)絡的宏觀與微觀技術分析

2021-06-16 14:21:22湯聞達
電子技術與軟件工程 2021年5期

湯聞達

(中匯信息技術(上海)有限公司 上海市 201210)

1 背景

伴隨著容器技術的成熟與微服務理念的普及,業(yè)務彈性和敏捷交付的訴求催生了一系列云原生技術。云原生計算基金會(Cloud Native Computing Foundation, CNCF)對云原生做出了如下的定義:云原生技術有利于各組織在公有云、私有云和混合云等新型動態(tài)環(huán)境中,構(gòu)建和運行可彈性擴展的應用。云原生的代表技術包括容器、服務網(wǎng)格、微服務、不可變基礎設施和聲明式API。結(jié)合標準化自動化運維,云原生技術可幫助企業(yè)很方便地對容器化應用做出頻繁且可預測的變更。

事實上,數(shù)據(jù)中心資源無外乎計算、存儲和網(wǎng)絡。云原生與傳統(tǒng)架構(gòu)在承載業(yè)務應用的區(qū)別主要是在計算、存儲和網(wǎng)絡資源管理和編排調(diào)度方式上的差異,而針對這些差異的理解與消化直接影響了企業(yè)上云業(yè)務應用的運行質(zhì)量以及業(yè)務變更的靈活性。除此以外,對于那些采用本地部署(on-premises)云平臺的用戶,還涉及到數(shù)據(jù)中心基礎設施的建設與維護成本。

1.1 數(shù)據(jù)中心傳統(tǒng)網(wǎng)絡架構(gòu)與云原生的碰撞

宏觀上看,網(wǎng)絡資源作為數(shù)據(jù)傳輸?shù)母咚俟泛图~帶,可以數(shù)據(jù)中心網(wǎng)絡的構(gòu)建也無外乎由路由交換設備、服務器設備等實體硬件構(gòu)成,各類資源的可達性和能力優(yōu)勢完全依賴于數(shù)據(jù)中心的網(wǎng)絡拓撲結(jié)構(gòu)。

傳統(tǒng)數(shù)據(jù)中心主要承載的是南北向的網(wǎng)絡流量(即數(shù)據(jù)中心外到數(shù)據(jù)中心內(nèi)的流量,可以是外部流量到內(nèi)部服務器,也可以是內(nèi)部服務器到外部的流量)。相應的網(wǎng)絡架構(gòu)通常是三層結(jié)構(gòu)。思科(Cisco)稱之為:分級的互連網(wǎng)絡模型(Hierarchical Internetworking Model)。這個模型主要包含了以下三層:接入層(Access Layer)、匯聚層(Aggregation Layer)和核心層(Core Layer)[1]。接入層交換機通常位于數(shù)據(jù)中心機房內(nèi)的機架頂部,所以它們也被常常稱為ToR(Top of Rack)交換機,由于它們直接連接著實際的物理服務器,可以提供網(wǎng)絡接入的能力,所以叫做接入層交換機。匯聚交換機下連接入層交換機,用于提供防火墻策略執(zhí)行等能力。核心交換機一方面為流入整個數(shù)據(jù)中心的數(shù)據(jù)包提供高速轉(zhuǎn)發(fā)能力,另一方面下連多個匯聚層交換機并提供它們之間的連通性。

典型的數(shù)據(jù)中心三層網(wǎng)絡架構(gòu)如圖1 所示。

按OSI(Open System Interconnection)七層參考模型,通常情況下的匯聚交換機是數(shù)據(jù)鏈路層和網(wǎng)絡層的分界點,匯聚交換機以下的是數(shù)據(jù)鏈路層,以上是網(wǎng)絡層。匯聚交換機和接入交換機之間通常為了防止數(shù)據(jù)鏈路層環(huán)路或廣播風暴破壞網(wǎng)絡等問題,運行著生成樹協(xié)議(Spanning Tree Protocol,STP)。STP 使得對于一個VLAN 網(wǎng)絡只有一個匯聚層交換機可用,其他的匯聚層交換機僅在出現(xiàn)故障時才被使用(上圖中紅色虛線表示備份線路),也就是說匯聚層是一個“主備”的高可用模式[2],其余網(wǎng)絡設備的能力沒有被充分利用。通過應用TRILL(Transparent Interconnection of Lots of Links,多鏈路透明互聯(lián))技術,在數(shù)據(jù)鏈路層引入IS-IS(Intermediate System-to-Intermediate System,中間系統(tǒng)到中間系統(tǒng))這樣的可運行于鏈路層的路由協(xié)議,可將數(shù)據(jù)鏈路層的簡單靈活和網(wǎng)絡層的穩(wěn)定可靠相結(jié)合,實現(xiàn)針對已知單播數(shù)據(jù)包轉(zhuǎn)發(fā)的等價多路徑負載分擔,從而規(guī)避應用STP 所產(chǎn)生的帶寬利用率低等問題[3]。

目前已有大量數(shù)據(jù)中心中在使用這種三層網(wǎng)絡架構(gòu),這樣的架構(gòu)可以很方便地支持數(shù)據(jù)中心南北向流量。但是近年來伴隨著互聯(lián)網(wǎng)業(yè)務的迅猛增長和日趨完善的應用微服務改造,數(shù)據(jù)中心虛擬化要求著更高的東西向流量(數(shù)據(jù)中心內(nèi)的服務器之間的流量),甚至跨數(shù)據(jù)中心流量。據(jù)一份來自思科的網(wǎng)絡分析報告描述,預計到2021年末,東西向流量將占數(shù)據(jù)中心總流量72%,遠超南北向流量(15%),數(shù)據(jù)中心間流量(14%)[4]。

需要指出的是,盡管上述傳統(tǒng)三層網(wǎng)絡架構(gòu)也能夠支持東西向流量,但是效率并不高(即便采用TRILL 技術),這主要體現(xiàn)在一旦發(fā)生網(wǎng)絡層的東西向流量傳輸需求,都必須經(jīng)過核心交換機完成轉(zhuǎn)發(fā),這不僅浪費了寶貴的核心交換機資源,多層轉(zhuǎn)發(fā)也增加了傳輸延時。

1.2 云原生數(shù)據(jù)中心網(wǎng)絡架構(gòu)特征

云原生對于數(shù)據(jù)中心網(wǎng)絡的需求,可以分別從基礎設施平臺以及業(yè)務需求兩方面來進行分析。從基礎設施平臺方面來看,整個平臺正在向分布式彈性化的方向發(fā)展,其在承載上層應用有關性能、可擴展性與可靠性方面都有對應的保障要求,并且各個微服務間的通信流量均衡與故障應對(如服務降級、熔斷、限流)等均需交由平臺進行處理。從業(yè)務需求方面來看,傳統(tǒng)單體應用正在向微服務架構(gòu)進行演進,以充分利用平臺的彈性可擴展能力,這種將計算與存儲分離的方式對網(wǎng)絡資源的調(diào)配要求更高。

圖1:典型數(shù)據(jù)中心三層網(wǎng)絡架構(gòu)

圖2:Spine-Leaf 網(wǎng)絡拓撲

圖3:宿主機docker0 網(wǎng)橋網(wǎng)絡拓撲示意

圖4:兩個宿主機上容器基于Flannel UDP 模式的通信過程

從業(yè)界實踐上來看,一種基于Clos 網(wǎng)絡模型的扁平化網(wǎng)絡架構(gòu)Spine-Leaf 可以為數(shù)據(jù)中心提供高帶寬、低延遲、非阻塞的端到端連接。并且,它能夠在性能、高可用等方面為上述需求的滿足提供一定的支撐作用。圖2 是一個典型的兩級Spine-Leaf 網(wǎng)絡拓撲。

在以上的兩級Clos[5]拓撲中,每個低層級的交換機(Leaf)都會連接到每個高層級的交換機(Spine)。與三層網(wǎng)絡架構(gòu)類似,這里Leaf 層由接入交換機組成,用于連接服務器等設備。Spine 層負責將所有的Leaf 連接起來,這里每個Leaf 都會連接到每個Spine。任意一個Spine 發(fā)生故障,都不會影響到整個網(wǎng)絡的正常運轉(zhuǎn),且吞吐性能只會有輕微的下降。與三層網(wǎng)絡架構(gòu)不同的是,Leaf 交換機與Spine 交換機間的網(wǎng)絡流量都是網(wǎng)絡層以上的流量,因此可充分利用到網(wǎng)絡層等價多路徑路由特性,實現(xiàn)網(wǎng)絡鏈路的負載均衡。同時,在任意Leaf-Spine 鏈路發(fā)生故障時,實現(xiàn)快速切換。在上述基礎上,網(wǎng)絡擴容與接入資源的擴容只需對應增加一個Spine 交換機和Leaf 交換機即可,這樣可很方便解決鏈路擁塞問題,且實現(xiàn)了無阻塞的網(wǎng)絡架構(gòu)。

在Spine-Leaf 架構(gòu)中,任意一個服務器到另一個服務器的連接,都會經(jīng)過相同數(shù)量的設備(除非這兩個服務器在同一Leaf 下面)。因為一個數(shù)據(jù)包只需要經(jīng)過一個Spine 和另一個Leaf 就可以到達目的地,這就使得整個網(wǎng)絡中任意的端到端連接延遲是可預測的。因此,當數(shù)據(jù)中心的物理設備間通過Spine-Leaf 網(wǎng)絡架構(gòu)互聯(lián)后,即可較為高效地處理數(shù)據(jù)中心的東西向網(wǎng)絡流量,并同時保證低的、可預測的網(wǎng)絡間延遲,從而為部署于物理機器上的各個應用容器提供靈活、高性能的通信。

2 云原生容器網(wǎng)絡的需求與實現(xiàn)

云原生架構(gòu)以容器和Kubernetes 為核心調(diào)度組件構(gòu)建了一整套微服務生態(tài)系統(tǒng)。愛因斯坦曾經(jīng)說過:“如果沒有界定范疇和一般概念,思考就像在真空中呼吸,是不可能的。”容器技術的大規(guī)模靈活運用同樣離不開底層宿主機間網(wǎng)絡性能的支撐。云原生容器網(wǎng)絡立足于前文描述的數(shù)據(jù)中心網(wǎng)絡架構(gòu),聚焦于微觀的技術實現(xiàn),目的是為泛在的容器提供堅實的網(wǎng)絡通信基礎。

2.1 容器網(wǎng)絡的需求

盡管運行于宿主機上的容器可以直接使用宿主機網(wǎng)絡棧,從而為容器提供良好的網(wǎng)絡性能,但這樣做會不可避免地引入共享網(wǎng)絡資源的問題,比如端口沖突等。和虛擬機的使用類似,大多數(shù)情況下都希望容器能擁有獨占的網(wǎng)絡資源。但在擁有獨占網(wǎng)絡資源后,依然面臨兩個問題:一是各個容器間如何進行有效通信?二是容器和其他非容器應用(宿主機、非宿主機等)如何通信?

Pod 是Kubernetes 的原子,是構(gòu)建應用程序的最小可部署對象。單個Pod 代表集群中正在運行的工作負載,其一般封裝一個或多個容器(比如基于Docker 運行時的容器)。

Kubernetes 使用了一種“IP-per-Pod”網(wǎng)絡模型:它為每一個Pod 分配了一個IP 地址,Pod 內(nèi)部的容器共享同一個網(wǎng)絡空間(相同的網(wǎng)絡設備和IP),且一個Pod 的IP 地址并不會隨著Pod 中的一個容器的起停而改變。

Kubernetes 中的網(wǎng)絡要解決的核心問題就是為每臺容器宿主機的進行IP 地址網(wǎng)段的劃分,以及容器IP 地址的分配。主要概括為:

(1)每個Pod 擁有集群內(nèi)唯一的IP 地址

(2)不同宿主機節(jié)點的容器IP 地址劃分不會重復

(3)宿主機節(jié)點的不同Pod 可以互相通信

(4)不同宿主機節(jié)點的Pod 可以與跨節(jié)點的主機互相通信

Kubernetes 提出了針對Pod 的網(wǎng)絡模型,但是并沒有提供具體實現(xiàn)細節(jié)。因此,任何滿足Kubernetes 網(wǎng)絡模型接口的都可視作一種有效的容器網(wǎng)絡技術實現(xiàn)。容器網(wǎng)絡插件則是針對Pod 的網(wǎng)絡模型,通過不同的方法,實現(xiàn)不同宿主機上的容器通信目標。

2.2 主流網(wǎng)絡插件解決方案

2.2.1 虛擬化協(xié)議棧

虛擬化協(xié)議棧主要目的在于從一臺物理主機中分離出多個TCP/IP 協(xié)議棧進行資源隔離使用。Network Namespace 是實現(xiàn)網(wǎng)絡虛擬化的重要功能,網(wǎng)絡空間有獨自的網(wǎng)絡棧信息,路由表,防火墻策略等。采用Network Namespace 網(wǎng)絡虛擬化技術后,容器進程就能使用自己 Network Namespace 里的協(xié)議棧,即:擁有屬于自己的 IP 地址和端口。

2.2.2 虛擬化網(wǎng)橋

在采用NetworkNamespace+Veth 技術后,容器即擁有了自身獨立的IP 地址和端口。但當宿主機啟動多個容器時,一個顯而易見的問題就是:各個被Network Namespace 隔離的容器進程如何進行端到端交互?如若讓眾多容器采用基于Veth 技術的“網(wǎng)線”的Container-to-Container Mesh 全互聯(lián)實現(xiàn),這顯然是較為“臃腫”的。

可以把每一個容器看做一臺主機,那么它們的聯(lián)通需求即是實現(xiàn)多臺主機之間的通信,通過網(wǎng)橋即可實現(xiàn)這樣的虛擬交換功能。具體來說,通過將網(wǎng)橋的每個端口都用Veth 連接對應的容器NetworkNamespace,然后根據(jù) MAC 地址學習來將數(shù)據(jù)包轉(zhuǎn)發(fā)到網(wǎng)橋的不同端口上,從而可實現(xiàn)一個宿主機內(nèi)部的不同容器通信需求。

以Docker 為例,它會在宿主機上創(chuàng)建一個名為 docker0 的網(wǎng)橋,然后所有的容器都借助于這個網(wǎng)橋進行通信[6]。圖3 展示了在一臺宿主機上基于docker0 網(wǎng)橋的容器網(wǎng)絡拓撲。

2.2.3 虛擬化路由

事實上,Docker 通過Veth 虛擬網(wǎng)絡設備以及Linux bridge 實現(xiàn)了同一臺主機上的容器網(wǎng)絡通信,在容器向外部網(wǎng)絡通信的部分可通過宿主機的Netfilter/iptables 進行NAT 實現(xiàn),但跨主機間的容器互訪依然存在阻礙。跨主機容器通信所需要解決的問題即不同宿主機上網(wǎng)橋間的聯(lián)通性問題,目前主要有如下兩個方向?qū)ι鲜鰡栴}進行解決。

方向一:在底層網(wǎng)絡設備中默認加入容器IP 地址的管理,需要感知容器實體的存在,一般依靠結(jié)合SDN 設備進行實現(xiàn)。

方向二:不修改底層網(wǎng)絡設備配置,而是復用既有的Underlay平面網(wǎng)絡,以Overlay 或通過自動化生成主機路由的方式解決容器跨主機通信,主要表現(xiàn)形式如下:

2.3 兩組患者心理狀態(tài)對比 干預前,兩組患者SAS、SDS評分比較,差異無統(tǒng)計學意義(P>0.05)。干預后,觀察組患者評分低于對照組,(P<0.05)。見表3。

(1)Overlay,通過隧道機制把容器發(fā)出的數(shù)據(jù)包封裝在通過宿主機網(wǎng)絡的數(shù)據(jù)包中,并復用既有的Underlay 網(wǎng)絡傳輸?shù)侥繕酥鳈C,目標主機再拆包轉(zhuǎn)發(fā)給對應的容器中。Overlay 隧道如VXLAN、IPIP 等,目前使用Overlay 技術的主流容器網(wǎng)絡有Flannel、Weave 等。

(2)Routing,通過動態(tài)修改宿主機的路由表信息,把宿主機當作容器的網(wǎng)關,調(diào)整路由規(guī)則轉(zhuǎn)發(fā)到指定的主機,達到容器間的網(wǎng)絡層互通。目前通過路由技術實現(xiàn)容器跨主機通信的網(wǎng)絡有Flannel host-gw、Calico BGP 等。

本文接下來以同時兼顧Overlay 與Routing 的Flannel 解決方案描述容器的跨主機通信機制。

Flannel 的設計分為兩個方面,一個是容器IP 的分配機制,另一個是容器間的通訊機制。Flannel 提供了一種全局的網(wǎng)絡地址分配機制,并使用外置的etcd 數(shù)據(jù)庫來存儲網(wǎng)段和節(jié)點之間的映射關系,F(xiàn)lannel 通過配置各個節(jié)點上的容器只能在分配到當前節(jié)點的網(wǎng)段里選擇IP 地址,從而實現(xiàn)IP 地址分配的全局唯一性。

在容器間通訊的具體實現(xiàn)上,F(xiàn)lannel 利用各種backend 例如UDP,VXLAN,host-gw 等等,通過不同手段實現(xiàn)跨主機轉(zhuǎn)發(fā)容器間的網(wǎng)絡流量,完成容器間的跨主機路由通信。

Flannel 的UDP backend 方案里會在每臺宿主機上生成flannel0設備,它是一個TUN 設備。TUN 設備可以在操作系統(tǒng)內(nèi)核態(tài)和用戶態(tài)應用程序之間數(shù)據(jù)。當內(nèi)核將一個數(shù)據(jù)包發(fā)送給flannel0 設備之后,flannel0 就會把這個數(shù)據(jù)包交給創(chuàng)建這個設備的應用程序進行處理,這里就是flannel 的守護進程——flanneld。而如果 flanneld 進程向 flannel0 設備發(fā)送了一個數(shù)據(jù)包,那么這個數(shù)據(jù)包就會根據(jù)宿主機的路由表進行處理。

圖4 展示了兩個宿主機上容器的通信過程。

所以,事實上Flannel UDP 模式即是在不同宿主機上的兩個容器之間打通了一條Overlay“隧道”,它使得任意兩個容器可直接透明地進行IP 通信,且無需考慮容器和宿主機在網(wǎng)絡中的位置。考慮到該模式采用了flannel0 這個TUN 設備,它在數(shù)據(jù)包傳輸過程中頻繁存在用戶態(tài)與內(nèi)核態(tài)的數(shù)據(jù)拷貝,性能較差,因此基于VXLAN(Virtual Extensible LAN)的模式應運而生,它可以完全在內(nèi)核態(tài)實現(xiàn)上述封裝和解封裝的工作。

Routing 的形式主要體現(xiàn)在flannel 的host-gw 模式。在實際運作中,host-gw 工作模式就是將每個宿主機承載的flannel 子網(wǎng)的“下一跳”設置成了該子網(wǎng)對應的宿主機的 IP 地址。具體來說,hostgw 模式通過在宿主機上添加一個路由規(guī)則:<目的容器IP 地址段> via <網(wǎng)關的IP 地址> dev eth0。而這個路由規(guī)則的更新則是通過在各個宿主機上部署代理進程動態(tài)地將容器網(wǎng)絡的變化信息“翻譯”為到主機的路由表信息,從而實現(xiàn)在所有的宿主機上都擁有整個容器網(wǎng)絡的路由信息。

由于host-gw 模式完全是依靠宿主機的路由機制,因此它的效率與虛擬機直接的通信相差無幾。但這種網(wǎng)絡方案得以正常工作的核心,是為每個容器的IP 地址,找到它所對應的,“下一跳”的網(wǎng)關。所以說,F(xiàn)lannel host-gw 模式必須要求集群宿主機之間在數(shù)據(jù)鏈路層之間是連通的,這也限制了集群的規(guī)模。不僅如此,大規(guī)模的路由表查詢也會進一步影響容器網(wǎng)絡的性能。因此,host-gw 模式在宿主機本身存在跨網(wǎng)段情況下的實現(xiàn)有一定的局限性。

為了同時兼顧性能和支持宿主機跨網(wǎng)段,可為flannel 的VXLAN 指定DirectRouting 參數(shù),當兩個容器所在宿主機節(jié)點在同一個網(wǎng)段中時,可直接通過物理網(wǎng)卡的網(wǎng)關路由轉(zhuǎn)發(fā),而不用額外對數(shù)據(jù)包進行隧道封裝。當且僅當所在宿主機跨網(wǎng)段時,才使用VXLAN 模式。

3 總結(jié)與展望

數(shù)據(jù)中心網(wǎng)絡在云計算基礎設施中具有關鍵地位,其性能的高低一定程度上影響著企業(yè)云計算的服務質(zhì)量。以容器、微服務、Kubernetes為主要核心的云原生架構(gòu),是當下設計具有彈性、可擴展、高可用業(yè)務系統(tǒng)架構(gòu)的主要聚焦點。由于該架構(gòu)中的實施往往伴隨著數(shù)據(jù)中心東西向網(wǎng)絡帶寬的高要求,因此,其涉及的有關網(wǎng)絡拓撲、資源規(guī)劃和分配方式等需要配合以云原生的方式演進與適應,從而為“應用系統(tǒng)上云”的工作打下堅實基礎。

主站蜘蛛池模板: 国产噜噜噜| 永久天堂网Av| 国产一区二区三区精品欧美日韩| 波多野结衣中文字幕久久| 国产黄色免费看| 91麻豆国产视频| 国产va在线| 国产高清无码第一十页在线观看| 色成人亚洲| 四虎国产在线观看| 免费观看精品视频999| 国产一区二区三区在线观看视频| 亚洲一级无毛片无码在线免费视频| 日韩精品无码免费一区二区三区| 天天色天天操综合网| 无码福利日韩神码福利片| 国产96在线 | 91最新精品视频发布页| 综合天天色| 动漫精品啪啪一区二区三区| 福利在线不卡| 91精品专区| 毛片网站在线看| 亚洲欧美综合精品久久成人网| 激情影院内射美女| 有专无码视频| 国产成人精品一区二区免费看京| 日本免费一区视频| 国产综合网站| 九九九国产| 找国产毛片看| 伊人蕉久影院| 欧美在线综合视频| 亚洲欧洲美色一区二区三区| 国产欧美日韩免费| 久久国产免费观看| 欧美日韩在线成人| 青草免费在线观看| 无码人中文字幕| 香蕉久久国产超碰青草| aaa国产一级毛片| 亚洲青涩在线| 精品国产91爱| 欧美一级特黄aaaaaa在线看片| 噜噜噜综合亚洲| 国产乱人免费视频| 亚洲综合九九| 特级毛片免费视频| 国产主播一区二区三区| 又粗又硬又大又爽免费视频播放| 在线一级毛片| 国产麻豆va精品视频| 欧美精品高清| 亚洲国内精品自在自线官| 亚洲人成影院在线观看| 999精品色在线观看| 一本综合久久| a级毛片免费看| 日本午夜在线视频| 综合久久五月天| 免费一看一级毛片| 婷婷中文在线| 亚洲无码精品在线播放| 亚洲午夜天堂| 日韩亚洲综合在线| 国产粉嫩粉嫩的18在线播放91| 亚洲 欧美 偷自乱 图片| 欧美日韩动态图| 亚洲视频一区| 91久久偷偷做嫩草影院电| 欧洲精品视频在线观看| 亚洲午夜久久久精品电影院| 538国产在线| 热久久综合这里只有精品电影| 国产欧美日韩另类精彩视频| 91毛片网| 欧美视频免费一区二区三区| 婷婷五月在线视频| 日本福利视频网站| 国产一区二区三区免费观看| 国产精品护士| 精品91在线|