TF Live 直播回放丨Frank Wu:當OpenStack遇到Tungsten Fabric

10歲的OpenStack,已經是開源IaaS世界裏的“成年人”,自從遇到開源SDN小夥伴Tungsten Fabric,兩人便成爲闖蕩混合多雲世界的好搭檔。

5月26日,在TF中文社區線上直播活動【 TF Live 】中,Mirantis中國區技術工程師Frank Wu與大家進行了在線交流,並以Mirantis MCP雲平臺爲例,演示了OpenStack與Tungsten Fabric的集成過程。

本期活動,由TF中文社區、OpenStackChina與SDNLAB合作舉辦。

【pdf文檔下載】
https://tungstenfabric.org.cn/assets/uploads/files/tf-live3-mcp-openstack-tungsten-fabric.pdf

【直播視頻回放】

https://v.qq.com/x/page/b0973v4ctgz.html

【高清視頻下載】

https://pan.baidu.com/s/1_f6rZDf9utY1DJaqCm94bA
提取碼:p17v

Frank在2018年加入Mirantis,曾負責Mirantis中國區大客戶雲環境的實施和技術支持,專注於虛擬化和容器化雲平臺,對於OpenStack和Tungsten Fabric都很早接觸。在5月26日的直播活動中,Frank分享了對這兩個技術的實踐經驗。

OpenStack與Tungsten Fabric如何對接

Tungsten Fabric的核心技術是基於BGP MPLS V P N技術,通過BGP協議分發路由,包括二層轉發表的路由信息,同時交換V P N的信息,來實現鏈路隔離。通過SDN控制器和虛擬路由器,Tungsten Fabric可實現控制平面和轉發平面的分離。

除了OpenStack,Tungsten Fabric還支持Kubernetes和VMware vCenter等多種編排器,也能實現多個集羣的網絡互聯。

Tungsten Fabric支持提供虛擬網絡的二層和三層隔離,以及負載均衡、服務鏈等功能,還支持使用Netconf來對一些物理設備進行管理。

那麼,OpenStack和TF對接的數據流是怎樣的呢?

首先,在OpenStack和Tungsten Fabric中,項目和用戶都是一一對應的。

通過OpenStack的控制節點,配置流程去使用插件,將收到的OpenStack請求轉換成對應的Tungsten Fabric的請求,發送給TF的API,這個插件作爲核心插件,平時在流程的配置文件裏面。

隨後,vRouter通過XMPP協議接收TF控制節點下發的路由表。計算節點拿到所有虛擬機相關的信息後,分配資源,爲虛擬機創建接口,將接口連接到對應虛擬網絡的VRF中,這時再啓動虛擬機。虛擬機通過vRouter代理的DHCP獲取IP地址。

接下來,當虛擬機創建成功後,怎麼進行數據通信?

我們來看OpenStack與Tungsten Fabric對接的數據轉發流程。在拓撲圖上,只有計算節點有租戶虛擬機,纔會在VRF創建routing instance,包括實例1a和2a。
TF Live 直播回放丨Frank Wu:當OpenStack遇到Tungsten Fabric

流程如下:

  • VM 1a發送arp請求並由路由實例1a進行響應;
  • VM 1a發送ip報文到路由實例1a,查詢ip信息轉發表後獲得了虛擬機2a的路由;
  • 對VM 1a發過來的數據包進行MPLS和GRE封裝;
  • 數據包從計算節點1通過GRE Tunnel發送到計算節點2上;
  • 數據包在計算節點2上被解封裝,查詢MPLS轉發表之後發送到路由實例2a;
  • 路由實例2a查詢ip轉發表之後找到VM 2a對應的地址與虛擬端口,並最終將數據包發送給VM 2a。

如何在MCP平臺部署

作爲OpenStack社區代碼貢獻前五之一,Mirantis提供運行OpenStack和Kubernetes所需的所有軟件、服務、培訓和支持,並開發了MCP平臺作爲功能豐富的自動化部署工具。
TF Live 直播回放丨Frank Wu:當OpenStack遇到Tungsten Fabric

MCP平臺架構概覽

接下來看MCP的架構。首先在雲平臺中,通過整合一些工具來實現整個雲環境升級和運維的自動化,並且基礎設施內的任何更改,如添加新節點或更改服務的監聽端口,都是通過修改reclass的配置文件來完成的,實現了一種基礎設施即代碼的理念。

MCP同時支持選擇OVS或者Tunsten Fabric來作爲OpenStack的網絡組件,OVS比較簡單,而且不需要額外的物理網關設備,但是功能上相對於Tunsten Fabric要少一些,而Tunsten Fabric不僅有服務鏈,網絡數據分析等功能,還是能支持多集羣的SDN。

平臺上還有一臺OSS系統,包括日誌,監控,告警等功能,都是基於成熟的開源軟件來實現的。

MCP上的SDN數據流量方面,Tungsten Fabric通過建立在data網絡之上的overlay網絡,來處理在MCP集羣中的東西向和南北向流量。

Tungsten Fabric控制器與vRouter之間的控制平面通信使用XMPP協議。當一臺虛擬機在計算節點上被創建時,TF控制器會給對應的vRouter下發該虛擬機所在虛擬網絡的轉發表。

Tungsten Fabric控制器與網關之間的控制通信使用iBGP協議,將帶有ASN和target的虛擬網絡的路由發佈到網關路由器上。相當於建立了虛擬網絡和網關路由器vrf的映射關係,並且通過ibgp協議來維護這種關係,實時的更新,下發路由表。

在MCP集羣中,一個最小的OpenStack + Tungsten Fabric生產環境的部署,需要至少3臺物理機作爲KVM節點來實現服務的高可用,運行虛擬控制平面所有的虛擬機,以及2-3臺物理機作爲OpenStack計算節點。

  • cfg節點,作爲salt-master管理集羣中所有的節點;
  • ctl節點,OpenStack Controller節點,運行OpenStack各組件相關的API;
  • ntw節點,作爲TF控制器,其上運行了包括Tungsten Fabric的API和配置數據庫等服務以及中間件;
  • nal節點,其上運行了兩個容器,基於Tungsten Fabric計量和分析包的服務,如分析API、警報生成器和數據收集器,以及中間件;
  • cmp節點,OpenStack計算節點,其上運行了OpenStack的nova-compute和Tungsten Fabric的vRouter。

在demo演示環節,Frank詳細介紹了基礎環境和部署流程:

  • 手動部署KVM節點,在上面把鏡像源的cfg節點運行起來;
  • 進行操作系統安裝後,物理節點自動加入master的管控;
  • 去salt master節點上修改reclass配置,在reclass裏面,每個組件都有一個對應目錄,進入各組件的目錄中按照需求和實際的環境去修改reclass配置;
  • 在OpenStack目錄定義OpenStack安裝哪些組件,在tf目錄中定義tf配置網關路由器等信息;
  • 然後登錄到DriveTrain的Jenkins上,通過指定的pipeline以及對應的傳入參數,完成各個組件的部署;
  • 在參數行填入名稱,部署對應組件,pipeline可以重複執行;
  • 登錄到OpenStack Controller節點,獲取虛擬網絡信息, 那麼會發現這裏有三個網絡,這三個網絡都是Tungsen Fabric裏面默認創建的網絡,這表明neutron現在能夠拿到Tungsen Fabric中的網絡信息,也就以爲這neutron與Tungsen Fabric已經完成了實際的對接;
  • 在neutron plugin配置文件中,定義了IP地址和端口;
  • 登錄Tungsten Fabric的控制器節點,上面運行了一個容器,通過doctrail allcontrail-status命令可以看到在這臺容器上運行的所有的Tungsten Fabric服務,包括五個部分:Control,Config,Config Database,Web UI,Support Services;
  • 在Tungsten Fabric的管理面查看TF控制節點的peer列表,控制節點與兩臺vRouter完成了XMPP的連接,那麼一旦有新的路由更新,TF控制節點會自動下發到對應的路由條目到vRouter, 並且計算節點上有會有相應的VRF被創建;
  • 在數據平面(vRouter)上,流量過濾由網絡策略和安全組派生的acl控制。
  • 當vRouter轉發模塊獲得第一個包時,它創建一個數據流並將包發送到vRouter agent。當vRouter agent獲取數據包時,它首先應用安全組的ACL和網絡策略的ACL。
  • 通過ACL的數據包纔會查找VRF以獲得下一跳的地址。否則,數據包將會被丟棄。

部署流程完成後,Frank針對這個環境中的OpenStack和Tungsten Fabric的基本網絡功能,以及“負載均衡即服務”功能進行了演示。

OpenStack最初的負載均衡功能是跟neutron結合到一起,後來從neutron剝離出來,以達到更好的功能。

在OpenStack和Tungsten Fabric對接後,負載均衡由Tungsten Fabric接管,在服務鏈裏看到HAproxy-loadbalance-template模板,配置左側和右側接口,左側VIP和監聽器,右側後端服務節點,後端需要配置兩塊網卡,增加了複雜性。在2.0版本上,支持同一側配置,在同一個子網內。

當我們使用Neutron LBaaS命令去創建虛擬IP和池的時候,Tungsten Fabric通過插件監聽到相關的請求,進而去創建一個服務實例。然後調度器將隨機選擇一臺計算節點,並在上面實例化一個Linux網絡命名空間,並在命名空間中配置HA代理。然後再選擇另外一臺計算節點,進行相同的操作,作爲備用HA代理實例。而且由svc-monitor服務去調度vRouter事實的更新本地對應的HAproxy配置文件。

往期回顧

KK/建勳:多雲、SDN,還有網工進化論
楊雨:Tungsten Fabric如何增強Kubernetes的網絡性能


TF Live 直播回放丨Frank Wu:當OpenStack遇到Tungsten Fabric
TF Live 直播回放丨Frank Wu:當OpenStack遇到Tungsten Fabric

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章