溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Tungsten Fabric入門寶典丨TF組件的七種“武器”

發(fā)布時(shí)間:2020-08-08 20:54:46 來(lái)源:ITPUB博客 閱讀:169 作者:TF中文社區(qū) 欄目:互聯(lián)網(wǎng)科技

Tungsten Fabric入門寶典系列文章 ,來(lái)自技術(shù)大牛傾囊相授的實(shí)踐經(jīng)驗(yàn),由TF中文社區(qū)為您編譯呈現(xiàn),旨在幫助新手深入理解TF的運(yùn)行、安裝、集成、調(diào)試等全流程。如果您有相關(guān)經(jīng)驗(yàn)或疑問(wèn),歡迎與我們互動(dòng),并與社區(qū)極客們進(jìn)一步交流。更多TF技術(shù)文章,請(qǐng)點(diǎn)擊公號(hào)底部按鈕>學(xué)習(xí)>文章合集。

作者:Tatsuya Naganawa  譯者:TF編譯組


Tungsten Fabric入門寶典丨TF組件的七種“武器”
Tungsten Fabric中有很多不同的組件。接下來(lái)我簡(jiǎn)要描述它們的用法。
概覽

總體而言,Tungsten Fabric中包含7種角色和(多達(dá))30個(gè)微服務(wù),其中角色部分如下:
  • vRouter

  • control

  • config

  • config-database

  • analytics(從TF 5.1開(kāi)始,可被進(jìn)一步分為analytics、analytics-snmp和analytics-alarm)

  • analytics-database

  • webui

盡管組件很多,但在簡(jiǎn)單的用例中,只需要4種角色:vRouter,control,config,config-database。當(dāng)然在大多數(shù)情況下,webui也是需要的。
如果你只對(duì)Tungsten Fabric的控制平面/數(shù)據(jù)平面部分感興趣,也可以省略analytics。只是在這種情況下,某些功能(如v1服務(wù)鏈,haproxy負(fù)載均衡器及k8s ingress,SNAT等)將無(wú)法正常工作。
control, vRouter

Control和vRouter構(gòu)成了Tungsten Fabric的控制平面和數(shù)據(jù)平面,因此可以說(shuō),這是Tungsten Fabric系統(tǒng)最重要的部分。
由于control和vRouter都在內(nèi)部使用MPLS-VPN,因此我建議至少在深入研究它們的細(xì)節(jié)之前,先略讀一下這些材料:
  • https://www.juniper.net/uk/en/training/certification/certification-tracks/sp-routing-switching-track?tab=jncis-sp

  • https://www.juniper.net/uk/en/training/certification/certification-tracks/sp-routing-switching-track?tab=jncip-sp


由于大多數(shù)高級(jí)功能都在control當(dāng)中,而vRouter是MPLS所固有的,因此這些資料將有助于弄清它們正在嘗試做些什么。
由于control和vrouter-agent都在內(nèi)部使用VPNV4 BGP,因此vRouter及其內(nèi)部VRF將根據(jù)extended community屬性(也稱為路由目標(biāo)route-target)裝載所需的前綴。因此,在vRouter上創(chuàng)建容器或虛擬機(jī)時(shí),它可以將VPNV4路由的信號(hào)發(fā)送給control,并將所有路由映射到其它的vRouter,從而數(shù)據(jù)平面可以知道自動(dòng)將報(bào)文發(fā)送到何處。
有趣的是,vRouter的虛擬網(wǎng)絡(luò)可能具有多個(gè)默認(rèn)網(wǎng)關(guān),并且具有相同的IP和相同的MAC?。ㄓ肑unos的術(shù)語(yǔ)來(lái)說(shuō),與virtual-gateway-address的行為類似。)
由于不需要VRRP來(lái)為每個(gè)虛擬網(wǎng)絡(luò)提供默認(rèn)網(wǎng)關(guān),因此它消除了瓶頸,并使一切變得完全分布式。
vRouter還可以為某些功能(例如基于狀態(tài)的防火墻、NAT、基于流的ECMP等)進(jìn)行基于流的處理。這是一個(gè)重要的區(qū)別,因?yàn)檫@種行為會(huì)引入一些調(diào)整點(diǎn),例如每秒的連接數(shù)和最大流數(shù)。(在基于包的系統(tǒng)中,PPS(每秒數(shù)據(jù)包)和吞吐量(以及某些情況下的延遲)是關(guān)鍵。)如果這些參數(shù)對(duì)你的系統(tǒng)非常重要,也許你還需要檢查這些參數(shù)。
注意:可以選擇在“ports”配置中使用“packet-mode”參數(shù)禁用此行為。
config

Config同樣包含幾個(gè)組件。Config-api為Tungsten Fabric的配置提供了一個(gè)API端點(diǎn),該端點(diǎn)使用了許多組件,例如control、analytics等。
  •  vRouter不會(huì)直接使用它,因?yàn)橹挥行枰臄?shù)據(jù)才會(huì)(通過(guò)XMPP)由control傳遞。


其中,schema-transformer和svc-monitor這兩個(gè)進(jìn)程做的事情都很重要,所以讓我對(duì)其進(jìn)行詳細(xì)描述。
schema-transformer


這個(gè)進(jìn)程將logical-router、network-policy、service-chain等一些抽象的config參數(shù)轉(zhuǎn)換為L(zhǎng)3 VPN的語(yǔ)言。它是Tungsten Fabric的核心組件之一,完成了MPLS-VPN不能簡(jiǎn)單解釋的大部分工作。
例如,logical-router在內(nèi)部創(chuàng)建一個(gè)新的route-target ID,該ID將具有虛擬網(wǎng)絡(luò)的所有前綴。因此,如果將虛擬網(wǎng)絡(luò)連接到logical-router,它將接收l(shuí)ogical-router所具有的所有路由。該行為在內(nèi)部使用MPLS-VPN,但route-target配置由schema-transformer控制。
因此,配置以下面的方式傳送到數(shù)據(jù)平面:

edit config -> (rabbitmq) -> schema-transformer, which creates  new route-target -> (internally edit config) -> (rabbitmq) -> control -> (xmpp) -> vrouter-agent -> (netlink) -> vrouter.ko


Schema-transformer還負(fù)責(zé)與服務(wù)鏈(service-chain)相關(guān)的所有事情。我不會(huì)深入研究服務(wù)鏈的所有細(xì)節(jié),因?yàn)檫@并沒(méi)有簡(jiǎn)單的DC用例(即使AWS VPC當(dāng)前也不提供類似的服務(wù))。盡管,從內(nèi)心來(lái)說(shuō),這是對(duì)VRF收到的所有前綴的有趣處理,并且我個(gè)人認(rèn)為值得一讀。
注意:你可以在書中獲得所有詳細(xì)信息。 https://mplsinthesdnera.net/
svc-monitor


這個(gè)進(jìn)程提供了一些服務(wù),這些服務(wù)必須在內(nèi)部使用外部進(jìn)程,例如haproxy負(fù)載均衡器,基于nova API的v1服務(wù)鏈實(shí)例,用于SNAT的iptables MASQUERADE等。
在內(nèi)部,vrouter-agent具有一些邏輯來(lái)啟動(dòng)haproxy或設(shè)置iptables MASQUERADE,當(dāng)相關(guān)服務(wù)被定義的時(shí)候,svc-monitor將啟動(dòng)這些邏輯。
Svc-monitor選擇一些vRouter來(lái)創(chuàng)建這些服務(wù),實(shí)例化一些網(wǎng)絡(luò)功能并對(duì)這些元素進(jìn)行流量處理。在使用analytics-api的輸出(analytics/uves/vrouter)中選擇一個(gè),然后選點(diǎn)擊“Functional”。
  • https://github.com/Juniper/contrail-controller/blob/master/src/config/svc-monitor/svc_monitor/scheduler/vrouter_scheduler.py#L149


盡管將來(lái)的版本可能會(huì)改變,但是目前這樣的行為是Tungsten Fabric安裝時(shí)需要analytics的原因之一。
config-database

Tungsten Fabric使用多個(gè)數(shù)據(jù)庫(kù)。大部分?jǐn)?shù)據(jù)都保存在Cassandra中,如果發(fā)生了更改,將通知RabbitMQ更改的內(nèi)容以傳遞到其它組件,例如control、schema-transformer、svc-monitor等。
ZooKeeper僅用于需要鎖定以保持一致性的操作。例如,創(chuàng)建一個(gè)端口需要分配一個(gè)IP地址,其一致性由ZooKeeper來(lái)管理,因此IP地址分配始終是一對(duì)一的。
nodemgr

我認(rèn)為到目前為止,大多數(shù)重要組件都已涵蓋,因此我將介紹其它部分。首先來(lái)看一下nodemgr是什么。
Nodemgr基本上是每個(gè)節(jié)點(diǎn)狀態(tài)的源頭,因此它檢查使用情況、docker ps或CPU的使用情況,并發(fā)送analytics UVE NodeStatus。
  • https://github.com/Juniper/contrail-controller/blob/master/src/nodemgr/common/linux_sys_data.py


該值可能是contrail-status以及其它邏輯(例如analytics-alarm或svc-monitor)的來(lái)源,它們?cè)谶x擇vRouter時(shí)會(huì)檢查此值是否為Functional。保持這些Functional的狀態(tài),對(duì)確保Tungsten Fabric正常運(yùn)行非常重要。
如果分配了不同的角色,則此組件的行為會(huì)有所不同。因此,它會(huì)以不同的行為安裝在每個(gè)節(jié)點(diǎn)上。
另外,它還會(huì)對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行第一次配置(provision),這意味著要通知config-api該IP已分配了xxx角色。因此,即使不需要analytics功能,該模塊也必須存在,至少在第一次啟動(dòng)節(jié)點(diǎn)時(shí)。
device-manager

此過(guò)程用于配置physical-router(基于config-database中的對(duì)象)。
在內(nèi)部,它使用與schema-transformer和svc-monitor相同的邏輯,它們訂閱RabbitMQ以查看config是否被更改,當(dāng)發(fā)生更改時(shí),AMQP客戶端會(huì)啟動(dòng)一些邏輯:
  • 對(duì)于schema-transformer,它將更新更多config;

  • 對(duì)于svc-monitor,它將在vRouters中添加一些邏輯;

  • 對(duì)于device-manager,它將更新physical-router的配置。


此行為由reaction_map控制,它定義了某些config對(duì)象上的某些更改會(huì)怎樣傳遞到其它的配置上進(jìn)行更改。
  • https://github.com/Juniper/contrail-controller/blob/master/src/config/device-manager/device_manager/device_manager.py#L59


例如,當(dāng)更新bgp-router時(shí),

Tungsten Fabric入門寶典丨TF組件的七種“武器”

基于“self”的定義,它將通過(guò)對(duì)原始bgp-router對(duì)象的引用,傳遞到bgp-router和physical-router。
  • 對(duì)于bgp-router,表示與原始bgp-router所對(duì)等(peer)的bgp-router對(duì)象


之后,更新的bgp-router會(huì)將其傳遞到bgp-router對(duì)象所在的physical-router。

Tungsten Fabric入門寶典丨TF組件的七種“武器”

由于從bgp-router傳遞事件時(shí),physical-router不會(huì)更新任何內(nèi)容,因此事件在那里停止,并且具有原始bgp-router的physical-router config以及對(duì)等(peer)的bgp-router將被更新。

Tungsten Fabric入門寶典丨TF組件的七種“武器”

當(dāng)physical-router收到更新的事件時(shí),它將從插件中調(diào)用push_conf函數(shù),基于config-database中的對(duì)象創(chuàng)建路由config。
  • 當(dāng)前,只有MX/QFX具有開(kāi)源插件: https://github.com/Juniper/contrail-controller/tree/master/src/config/device-manager/device_manager/plugins/juniper


要啟用此功能,需要在/etc/contrail/common_config.env中配置此旋鈕:DEVICE_MANAGER__DEFAULTS__push_mode = 0。
以下鏈接描述了配置過(guò)程:
https://www.juniper.net/documentation/en_US/contrail5.0/topics/concept/using-device-manager-netconf-contrail.html
analytics

Tungsten Fabric analytics具有很多功能,但大部分功能都是可選的,因此我會(huì)跳過(guò)大多數(shù)的組件。如果有興趣,請(qǐng)查閱以下鏈接以獲取SNMP、LLDP、警報(bào)等的信息:
  • https://tungsten.io/sandesh-a-sdn-analytics-interface/

  • https://tungsten.io/operational-state-in-the-opencontrail-system-uve-user-visible-entities-through-analytics-api/

  • https://tungsten.io/contrail-alerts/

  • https://tungsten.io/overlay-to-physical-network-correlation/


Analytics本身具有有趣的架構(gòu),其中涵蓋了logs、flows和stats。
  • 據(jù)我所知,它們通常涉及不同的系統(tǒng),例如用于logs/flows的EFK和用于stats的Prometheus。


如果你需要一個(gè)工具,方便地使用所有系統(tǒng),Tungsten Fabric analytics將是一個(gè)很好的選擇。
大多數(shù)重要的指標(biāo)和分析服務(wù)都被標(biāo)記為UVE(用戶可見(jiàn)實(shí)體),并具有一個(gè)URL以提供JSON格式的數(shù)據(jù)。
  •  http://(analytics-ip):8081/analytics/uves 提供了所有可提供的數(shù)值。


如果你需要將Tungsten Fabric與其它監(jiān)視系統(tǒng)集成在一起,那可能是一個(gè)很好的起點(diǎn)。
analytics-database

Analytics還使用了多個(gè)數(shù)據(jù)庫(kù),例如Redis、Cassandra、Kafka(在內(nèi)部,它還使用ZooKeeper進(jìn)行HA選件的部署)。
如果僅使用analytics,則僅需要Redis數(shù)據(jù)庫(kù),即使在此設(shè)置中,大多數(shù)webui功能都是可用的。
  • 大多數(shù)可視化的功能都使用UVE,因此即使未安裝Cassandra也是可用的。


如果你需要webui的“Query”功能,則需要使用Cassandra,該功能可檢索Cassndra數(shù)據(jù)庫(kù)中的logs/flows或stats信息。
Kafka用于將UVE傳遞到analytics-alarms,因此,如果要使用警報(bào)功能,Kafka是必要的。
webui

最后,我們來(lái)說(shuō)說(shuō)webui。基本上,這就只是一個(gè)簡(jiǎn)單的webui,用于查看組件的狀態(tài),并配置Tungsten Fabric的參數(shù)。
它使用AJAX行為來(lái)更新一些需要對(duì)analytics-api進(jìn)行長(zhǎng)時(shí)間查詢的圖形(例如Monitor > Dashboard access),同時(shí)由webui-job進(jìn)程涵蓋了異步作業(yè),這一點(diǎn)還挺有趣的。
 


  ·END·

Tungsten Fabric入門寶典系列文章——

1.首次啟動(dòng)和運(yùn)行指南


 Tungsten Fabric 架構(gòu)解析 系列文章——
  • 第一篇: TF主要特點(diǎn)和用例

  •   第二篇: TF怎么運(yùn)作

  •    第三篇:詳解vRouter體系結(jié)構(gòu)

  •    第四篇: TF的服務(wù)鏈

  •   第五篇: vRouter的部署選項(xiàng)

  •    第六篇: TF如何收集、分析、部署?

  •    第七篇: TF如何編排

  •   第八篇: TF支持API一覽

  •   第九篇: TF如何連接到物理網(wǎng)絡(luò)

  •   第十篇: TF基于應(yīng)用程序的安全策略



Tungsten Fabric入門寶典丨TF組件的七種“武器”

Tungsten Fabric入門寶典丨TF組件的七種“武器”

向AI問(wèn)一下細(xì)節(jié)
推薦閱讀:
  1. Tungsten Fabric架構(gòu)解析丨TF支持API一覽
  2. Tungsten Fabric架構(gòu)解析丨Tungsten F

免責(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)容。

猜你喜歡

AI