天天看點

玩轉ECS第4講 | 基于彈性計算網絡能力提升容器密度最佳實踐一、彈性網卡直通二、彈性網卡多IP建構容器三、彈性網卡中繼建構容器四、建立容器網絡方案總結

本次分享由阿裡雲進階技術專家姜文鋒(令吾)為大家介紹三種基于阿裡雲彈性計算網絡能力提升容器密度的主要方法和最佳實踐。

關鍵詞:彈性網卡、彈性網卡多IP、 彈性網卡中繼、容器密度

演講嘉賓簡介:姜文鋒(令吾),阿裡雲進階技術專家。來自阿裡雲彈性計算控制&體驗團隊,主要負責彈性計算(ECS)網絡、安全組相關元件和産品的研發工作。

以下内容根據演講視訊以及PPT整理而成。

>>>觀看回放 更多課程請進入“ 玩轉ECS詳情頁

”了解

本次分享主要圍繞以下四個方面:

一、彈性網卡直通

二、彈性網卡多IP

三、彈性網卡中繼

四、建立容器網絡方案總結

雲原生和容器化是主流的趨勢,實作容器化時推薦大家使用雲廠商的容器服務,如阿裡雲ACK。但由于部分使用者因為一些原因需要自建容器,此時不得不面臨一個問題,就是如何能夠在一台主控端上提升容器數量,降低容器成本。

借此機會,本次分享由阿裡雲進階技術專家姜文鋒(令吾)為大家介紹基于阿裡雲彈性計算網絡能力,具體講解三種建構容器的網絡架構方案,同時橫向對比各種方案在提升容器密度方面的優缺點。下面主要介紹三種建構容器的網絡架構方案,分别是彈性網卡直通方案、彈性網卡多IP方案、彈性網卡中繼方案。

所謂彈性網卡直通就是将一個ECS上的彈性網卡直接加入到容器命名空間内。這種架構非常簡單,無技術風險,同時缺點也非常明顯:ECS容器數量受限于ECS可挂載彈性網卡數量。而目前阿裡雲最高規格執行個體大約支援20塊網卡左右,對容器密度敏感的使用者,這不是合适的選項。

玩轉ECS第4講 | 基于彈性計算網絡能力提升容器密度最佳實踐一、彈性網卡直通二、彈性網卡多IP建構容器三、彈性網卡中繼建構容器四、建立容器網絡方案總結

二、彈性網卡多IP建構容器

1、彈性網卡+網卡多IP+政策路由

網卡多IP是阿裡雲為了提升IP數量而提供的方案,可以讓一個彈性網卡支援多個IP,這樣就具備了在ECS上建立更多容器的基礎。下圖展示了結合彈性網卡+網卡多IP+政策路由建構容器的架構。與彈性網卡直通對比下,引入的複雜度是路由設定問題。

玩轉ECS第4講 | 基于彈性計算網絡能力提升容器密度最佳實踐一、彈性網卡直通二、彈性網卡多IP建構容器三、彈性網卡中繼建構容器四、建立容器網絡方案總結

由于彈性網卡直通方案中容器與網卡的比例為1:1,路由極其簡單,無需管理。而引入了網卡多IP之後,容器與網卡的比例關系是n:1,需要正确的管理路由,實作入方向和出方向上容器與網卡正确的對應。

具體做法:首先使用veth pair打通容器與ECS網絡命名空間,使得容器IP與ECS彈性網卡IP可見;之後進行政策路由的設定,實作容器與彈性網卡的正确對應。如下圖所示,入方向政策路由表表明當通路192.168.10.1-3時需要查找main路由表進行包轉發,main路由表把不同的ip指向不同的veth pair裝置,這樣就可以路由到正确的容器内。出方向上如果源位址是192.16.10.1-3的話,則需要去1006路由表。路由表1006表示要将所有包路由到eni1上,進而找到正确的網卡。

整個方案的優點是可以有效提高單ECS容器密度,建立可觀的容器數量。目前單網卡最大支援20個ip,單ECS最大支援15個彈性網卡。

但彈性網卡多IP缺點主要有三點:首先,安全組是實作雲安全的基本能力,而安全組隻支援eni粒度,無法針對容器粒度配置安全組,這意味着下圖中關聯到同一個網卡的三個容器的安全配置完全相同,無法對每一個單獨的容器做安全配置。另外,相對而言架構更加複雜。最後由于引入了veth-pair,轉發性能會比彈性網卡直通方案稍差。

2、彈性網卡+網卡多IP+IPvlan

基于彈性網卡多IP的方案還有更加簡單的做法:IPvlan。

IPvlan是linux核心提供的網卡虛拟化技術,能夠從實體網卡虛拟出多個虛拟網卡。多個虛拟網卡有相同mac位址,但是有獨立的IP。

使用IPvlan之後,從容器往下看,ECS便有了更多的網卡,如下圖中ECS有三個彈性網卡,每個網卡3個IP,每個IP對應一個IPvlan裝置。将IPvlan裝置直接放到容器的命名空間内,打通整個鍊路。

玩轉ECS第4講 | 基于彈性計算網絡能力提升容器密度最佳實踐一、彈性網卡直通二、彈性網卡多IP建構容器三、彈性網卡中繼建構容器四、建立容器網絡方案總結

相對于彈性網卡+網卡多IP+政策路由方案,IPvlan方案架構更加簡單,性能更好,同時可以起到提升容器密度的效果。但缺點同樣有三點:首先對linux kernal版本有要求,隻有大于等于4.2版本才建議使用IPvlan。其次如果自建k8s,需要解決kube-proxy依賴流量走host namespace,而IPvlan預設無法和host namespace互動。還有依然無法支援容器粒度設定安全組。

三、彈性網卡中繼建構容器

如果即要提升容器密度,又要求安全組支援容器粒度,那麼阿裡雲推薦彈性網卡中繼(EniTrunking)建構容器的方案。EniTrunking是阿裡雲提供的一種提升單ECS挂載彈性網卡數量的技術。

下面介紹EniTrunking中的幾個主要概念:

1) 首先是TrunkEni(如下面圖中的te_1,te_2),它是正常的彈性網卡,方案中充當通信通道的角色。

2) 另外就是MemberEni(如下圖中的me_i),是與TrunkEni連接配接的彈性網卡,流量通過MemberEni“中繼”到對應的TrunkEni,擁有彈性網卡的絕大部分特性,但是不支援彈性網卡多IP。

3) 最後是DeviceIndex,一個TrunkEni對應多個MemberEni,DeviceIndex是給MemberEni配置設定一個Index,表示TrunkEni中的位置,在此範圍内保持唯一。

基于EniTrunking的方案主要操作步驟如下:

1) 首先申請開通EniTrunking功能白名單。

2) 然後通過ECS API建立幾個TrunkEni并挂載。

3) ECS API建立MemberEni(具體數量參考官方文檔),再将MemberEni中繼到TrunkEni上。

4) 把MemberEni加入到容器網絡namespace中,并配置路由,進而實作整個鍊路的打通。

MemberEni包含大部分的彈性網卡特性,這就使得彈性網卡中繼建構容器方案可以有效提高單ECS容器密度以及容器數量,并可以為每個MemberEni設定獨立的安全組,安全控制更靈活。對于某些安全網絡産品使用彈性網卡中繼建構容器方案是非常适合的。但同時由于中間多了一個環節,是以彈性網卡中繼建構容器方案轉發性能會比網卡直通方案差。

目前彈性網卡中繼建構容器方案在灰階階段,後續會提供相關設定的最佳實踐和幫助文檔,有興趣的同學可以關注一下。

玩轉ECS第4講 | 基于彈性計算網絡能力提升容器密度最佳實踐一、彈性網卡直通二、彈性網卡多IP建構容器三、彈性網卡中繼建構容器四、建立容器網絡方案總結

前面具體介紹了4種建立容器網絡方案,下面簡單做一個總結:

1) 彈性網卡直通方案的優點是非常簡單,支援容器粒度安全組。但受限于ECS可挂載彈性網卡數量,導緻容器成本較高。彈性網卡直通方案對企業自建或容器密度不是關鍵考慮因素的使用者比較适用。

2) 彈性網卡多IP+政策路由方案可以有效提升容器密度,方案較為成熟,無技術風險。但它不支援容器粒度的安全組,而且由于引入了政策路由和veth-pair裝置導緻轉發性能稍差。

3) 彈性網卡多IP+IPvlan方案與彈性網卡多IP+政策路由方案類似,但架構會更加簡單,因為使用了linux原生的網卡技術。同樣,彈性網卡多IP+IPvlan方案也不支援容器粒度安全組,對linux核心版本有一定的要求,使用者需要自己解決IPvlan預設不走host namespace的問題。企業自建容器或容器服務的使用者可以考慮這兩種方案。

4) 彈性網卡中繼方案,最大優點是即可以提升容器密度,還支援容器級别安全組。隻是轉發性能會比彈性直通方案略差。

玩轉ECS第4講 | 基于彈性計算網絡能力提升容器密度最佳實踐一、彈性網卡直通二、彈性網卡多IP建構容器三、彈性網卡中繼建構容器四、建立容器網絡方案總結

關注百曉生,笑談雲計算

玩轉ECS第4講 | 基于彈性計算網絡能力提升容器密度最佳實踐一、彈性網卡直通二、彈性網卡多IP建構容器三、彈性網卡中繼建構容器四、建立容器網絡方案總結

繼續閱讀