溫馨提示×

溫馨提示×

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

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

如何理解Neutron架構(gòu)

發(fā)布時間:2021-11-19 15:56:47 來源:億速云 閱讀:316 作者:柒染 欄目:云計算

這篇文章將為大家詳細(xì)講解有關(guān)如何理解Neutron架構(gòu),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

今天我們分析 Neutron 的架構(gòu)。

Neutron 架構(gòu)

與 OpenStack 的其他服務(wù)的設(shè)計思路一樣,Neutron 也是采用分布式架構(gòu),由多個組件(子服務(wù))共同對外提供網(wǎng)絡(luò)服務(wù)。

Neutron 由如下組件構(gòu)成:

Neutron Server
對外提供 OpenStack 網(wǎng)絡(luò) API,接收請求,并調(diào)用 Plugin 處理請求。

Plugin
處理 Neutron Server 發(fā)來的請求,維護(hù) OpenStack 邏輯網(wǎng)絡(luò)的狀態(tài), 并調(diào)用 Agent 處理請求。

Agent
處理 Plugin 的請求,負(fù)責(zé)在 network provider 上真正實現(xiàn)各種網(wǎng)絡(luò)功能。

network provider
提供網(wǎng)絡(luò)服務(wù)的虛擬或物理網(wǎng)絡(luò)設(shè)備,例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron 的物理交換機(jī)。

Queue
Neutron Server,Plugin 和 Agent 之間通過 Messaging Queue 通信和調(diào)用。

Database
存放 OpenStack 的網(wǎng)絡(luò)狀態(tài)信息,包括 Network, Subnet, Port, Router 等。

Neutron 架構(gòu)非常靈活,層次較多,其目的是:

  1. 為了支持各種現(xiàn)有或者將來會出現(xiàn)的優(yōu)秀網(wǎng)絡(luò)技術(shù)。

  2. 支持分布式部署,獲得足夠的擴(kuò)展性。

通常魚和熊掌不能兼得,雖然獲得了這些優(yōu)勢,但這樣使得 Neutron 更加復(fù)雜,更不容易理解。 后面我們會詳細(xì)討論 Neutron 的各個組件,但在這之前,非常有必要先通過一個例子了解這些組件各自的職責(zé)以及是如何協(xié)同工作。

以創(chuàng)建一個 VLAN100 的 network 為例,假設(shè) network provider 是 linux bridge, 流程如下:

  1. Neutron Server 接收到創(chuàng)建 network 的請求,通過 Message Queue(RabbitMQ)通知已注冊的 Linux Bridge Plugin。

  2. Plugin 將要創(chuàng)建的 network 的信息(例如名稱、VLAN ID等)保存到數(shù)據(jù)庫中,并通過 Message Queue 通知運(yùn)行在各節(jié)點(diǎn)上的 Agent。

  3. Agent 收到消息后會在節(jié)點(diǎn)上的物理網(wǎng)卡(比如 eth3)上創(chuàng)建 VLAN 設(shè)備(比如 eth3.100),并創(chuàng)建 bridge (比如 brqXXX) 橋接 VLAN 設(shè)備。

關(guān)于 linux bridge 如何實現(xiàn) VLAN 大家可以參考本教程“預(yù)備知識->網(wǎng)絡(luò)虛擬化”的相關(guān)章節(jié)。

這里進(jìn)行幾點(diǎn)說明:

  1. plugin 解決的是 What 的問題,即網(wǎng)絡(luò)要配置成什么樣子?而至于如何配置 How 的工作則交由 agent 完成。

  2. plugin,agent 和 network provider 是配套使用的,比如上例中 network provider 是 linux bridge,那么就得使用 linux bridge 的 plungin 和 agent;如果 network provider 換成了 OVS 或者物理交換機(jī),plugin 和 agent 也得替換。

  3. plugin 的一個主要的職責(zé)是在數(shù)據(jù)庫中維護(hù) Neutron 網(wǎng)絡(luò)的狀態(tài)信息,這就造成一個問題:所有 network provider 的 plugin 都要編寫一套非常類似的數(shù)據(jù)庫訪問代碼。為了解決這個問題,Neutron 在 Havana 版本實現(xiàn)了一個 ML2(Modular Layer 2)plugin,對 plgin 的功能進(jìn)行抽象和封裝。有了 ML2 plugin,各種 network provider 無需開發(fā)自己的 plugin,只需要針對 ML2 開發(fā)相應(yīng)的 driver 就可以了,工作量和難度都大大減少。ML2 會在后面詳細(xì)討論。

  4. plugin 按照功能分為兩類: core plugin 和 service plugin。core plugin 維護(hù) Neutron 的 netowrk, subnet 和 port 相關(guān)資源的信息,與 core plugin 對應(yīng)的 agent 包括 linux bridge, OVS 等; service plugin 提供 routing, firewall, load balance 等服務(wù),也有相應(yīng)的 agent。后面也會分別詳細(xì)討論。

關(guān)于如何理解Neutron架構(gòu)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI