中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-08 20:54:46 來源:ITPUB博客 閱讀:181 作者:TF中文社區 欄目:互聯網科技

Tungsten Fabric入門寶典系列文章 ,來自技術大牛傾囊相授的實踐經驗,由TF中文社區為您編譯呈現,旨在幫助新手深入理解TF的運行、安裝、集成、調試等全流程。如果您有相關經驗或疑問,歡迎與我們互動,并與社區極客們進一步交流。更多TF技術文章,請點擊公號底部按鈕>學習>文章合集。

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


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

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

  • control

  • config

  • config-database

  • analytics(從TF 5.1開始,可被進一步分為analytics、analytics-snmp和analytics-alarm)

  • analytics-database

  • webui

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

Control和vRouter構成了Tungsten Fabric的控制平面和數據平面,因此可以說,這是Tungsten Fabric系統最重要的部分。
由于control和vRouter都在內部使用MPLS-VPN,因此我建議至少在深入研究它們的細節之前,先略讀一下這些材料:
  • 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


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

Config同樣包含幾個組件。Config-api為Tungsten Fabric的配置提供了一個API端點,該端點使用了許多組件,例如control、analytics等。
  •  vRouter不會直接使用它,因為只有需要的數據才會(通過XMPP)由control傳遞。


其中,schema-transformer和svc-monitor這兩個進程做的事情都很重要,所以讓我對其進行詳細描述。
schema-transformer


這個進程將logical-router、network-policy、service-chain等一些抽象的config參數轉換為L3 VPN的語言。它是Tungsten Fabric的核心組件之一,完成了MPLS-VPN不能簡單解釋的大部分工作。
例如,logical-router在內部創建一個新的route-target ID,該ID將具有虛擬網絡的所有前綴。因此,如果將虛擬網絡連接到logical-router,它將接收logical-router所具有的所有路由。該行為在內部使用MPLS-VPN,但route-target配置由schema-transformer控制。
因此,配置以下面的方式傳送到數據平面:

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


Schema-transformer還負責與服務鏈(service-chain)相關的所有事情。我不會深入研究服務鏈的所有細節,因為這并沒有簡單的DC用例(即使AWS VPC當前也不提供類似的服務)。盡管,從內心來說,這是對VRF收到的所有前綴的有趣處理,并且我個人認為值得一讀。
注意:你可以在書中獲得所有詳細信息。 https://mplsinthesdnera.net/
svc-monitor


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


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

Tungsten Fabric使用多個數據庫。大部分數據都保存在Cassandra中,如果發生了更改,將通知RabbitMQ更改的內容以傳遞到其它組件,例如control、schema-transformer、svc-monitor等。
ZooKeeper僅用于需要鎖定以保持一致性的操作。例如,創建一個端口需要分配一個IP地址,其一致性由ZooKeeper來管理,因此IP地址分配始終是一對一的。
nodemgr

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


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

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

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

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


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


例如,當更新bgp-router時,

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

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


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

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

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

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

當physical-router收到更新的事件時,它將從插件中調用push_conf函數,基于config-database中的對象創建路由config。
  • 當前,只有MX/QFX具有開源插件: 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。
以下鏈接描述了配置過程:
https://www.juniper.net/documentation/en_US/contrail5.0/topics/concept/using-device-manager-netconf-contrail.html
analytics

Tungsten Fabric analytics具有很多功能,但大部分功能都是可選的,因此我會跳過大多數的組件。如果有興趣,請查閱以下鏈接以獲取SNMP、LLDP、警報等的信息:
  • 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本身具有有趣的架構,其中涵蓋了logs、flows和stats。
  • 據我所知,它們通常涉及不同的系統,例如用于logs/flows的EFK和用于stats的Prometheus。


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


如果你需要將Tungsten Fabric與其它監視系統集成在一起,那可能是一個很好的起點。
analytics-database

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


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

最后,我們來說說webui。基本上,這就只是一個簡單的webui,用于查看組件的狀態,并配置Tungsten Fabric的參數。
它使用AJAX行為來更新一些需要對analytics-api進行長時間查詢的圖形(例如Monitor > Dashboard access),同時由webui-job進程涵蓋了異步作業,這一點還挺有趣的。
 


  ·END·

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

1.首次啟動和運行指南


 Tungsten Fabric 架構解析 系列文章——
  • 第一篇: TF主要特點和用例

  •   第二篇: TF怎么運作

  •    第三篇:詳解vRouter體系結構

  •    第四篇: TF的服務鏈

  •   第五篇: vRouter的部署選項

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

  •    第七篇: TF如何編排

  •   第八篇: TF支持API一覽

  •   第九篇: TF如何連接到物理網絡

  •   第十篇: TF基于應用程序的安全策略



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

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

向AI問一下細節
推薦閱讀:
  1. Tungsten Fabric架構解析丨TF支持API一覽
  2. Tungsten Fabric架構解析丨Tungsten F

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

猜你喜歡

AI

通海县| 白河县| 乐清市| 沙湾县| 冀州市| 苍梧县| 丹巴县| 紫金县| 大竹县| 沈丘县| 金坛市| 慈溪市| 申扎县| 南木林县| 灵宝市| 化德县| 陵川县| 比如县| 沅江市| 慈利县| 商洛市| 拜泉县| 铜川市| 华阴市| 呼玛县| 丽江市| 乌鲁木齐市| 大连市| 罗甸县| 盱眙县| 浦县| 兰州市| 绿春县| 城步| 略阳县| 潮安县| 平度市| 柳林县| 积石山| 宜宾市| 永州市|