前言:Neutron主要就是用于網絡虛拟化,在openstack中屬于一個大部分,這次就來了解一下Neutron
文章目錄
- 一、Neutron基本架構
-
- 1.Neutron-server
- 2.Network provider
- 3.Neutron plugin
- 4.Neutron agent
- 二、Neutron 功能
-
- 1. 二層交換 Switching
- 2. 三層路由 Routing
- 3. 負載均衡 Load Balancing
- 4. 防火牆 Firewalling
- 三、Neutron元件
-
- 1.Neutron-server
-
- 1)Resetful API
- 2)Common Service
- 3)Neutron Core
- 4)Plugin API
- 2.插件、代理與網絡提供者
-
- 1)插件
- 2)代理
- 3)網絡提供者
- 四、Neutron的實體部署
-
- 1.控制節點和計算節點
- 2.控制節點和網絡節點
- 總結
一、Neutron基本架構
- 與 OpenStack其他服務群組件的設計思路一樣, Neutron也采用分布式架構,由多個元件(服務)共同對外提供網絡服務, Neutron架構非常靈活,層次多,一方面是為了支援各種先有或者将來會出現的先進網絡技術,另一方面支援分布式部署,獲得足夠的擴充性。示意圖如下:
1.Neutron-server
- Neutron僅有一個主要服務程序 Neutron-server,它運作于控制節點上,對外提供OpenStack網絡API作為通路 Neutron的入口,收集請求後調用插件( Plugin)進行處理,最終由計算節點和網絡節點上的各種代理( Agent)完成請求
2.Network provider
- 網絡提供者( Network provider)是指提供者 OPenStack網絡服務的虛拟機或者實體網絡裝置,如 Linux Bridge、 Open vSwitch或者其他支援 neutron的實體交換機。與其他服務一樣, Neutron的各個元件服務之間需要互相協調通信, Neutron- server、插件、代理之間通過消息隊列(預設用 RabbitMQ實作)進行通信和互相協調
3.Neutron plugin
- plugin主要用于提供neutron的核心功能,目前主要是提供network,subnet和port這三類資源
4.Neutron agent
- agent用來輔助plugin(core or service)完成其功能。plugin的某些功能需要操作遠端系統,這些情況一般都通過該系統上的agent來實作。
- agent分為: 1 core agent 2 dhcp agent: 3 L3 agent: 4 其他
資料庫(預設使用 Maria DB)用于存放 OpenStack的網絡狀态資訊、包括網絡、子網端口、路由器等等。
用戶端(Client)是指使用 Neutron服務的應用程式,可以是指令行工具(腳本)、 Horizon
( OpenStack圖形操作界面)和Nova計算服務等
舉列說明:建立一個vlan10虛拟網絡的流程
1.Neutron-server收到建立網絡( Network)的請求,通過消息隊列( RabbitMQ)通知已注冊的 Linux Bridge插件,這裡架設網絡提供者為 Linux Bridge。
2.該插件将要建立的網絡資訊(如名稱、ID值、ⅥANID等)儲存到資料庫中并通過消息隊列通知運作在各個節點上的代理
3.代理收到資訊後會在節點上的實體網卡上建立Ⅵan裝置(比如實體接口的子接口Eth1.10),并建立一個網橋(比如 brgXXX)來橋接網絡裝置
二、Neutron 功能
- Neutron 為整個 OpenStack 環境提供網絡支援,包括二層交換,三層路由,負載均衡,防火牆和 VPN 等。Neutron 提供了一個靈活的架構,通過配置,無論是開源還是商業軟體都可以被用來實作這些功能
1. 二層交換 Switching
- Nova 的 Instance 是通過虛拟交換機連接配接到虛拟二層網絡的。Neutron 支援多種虛拟交換機,包括 Linux 原生的 Linux Bridge 和 Open vSwitch。 Open vSwitch(OVS)是一個開源的虛拟交換機,它支援标準的管理接口和協定
- 利用 Linux Bridge 和 OVS,Neutron 除了可以建立傳統的 VLAN 網絡,還可以建立基于隧道技術的 Overlay 網絡,比如 VxLAN 和 GRE(Linux Bridge 目前隻支援 VxLAN)。在後面章節我們會學習如何使用和配置 Linux Bridge 和 Open vSwitch
2. 三層路由 Routing
- Instance 可以配置不同網段的 IP,Neutron 的 router(虛拟路由器)實作 instance 跨網段通信。router 通過 IP forwarding,iptables 等技術來實作路由和 NAT。我們将在後面章節讨論如何在 Neutron 中配置 router 來實作 instance 之間,以及與外部網絡的通信
- Neutron路山器是·個三層的(L3)的抽象,其模拟實體路由器,為用廣提供路由、NAT等服務,在 Openstack網絡中,不用子網之間的通信需要路由器,網絡與外部網絡之間的通信更需要路由器
- Neutron提倛虛拟路山器,也支援實體路由器。例如,兩個隔離的ⅥLAN網絡之間需要實作通信,可以通過實體路由器實作,由實體路由器提供相應的|P路由表,確定兩個IP子網之間的通信,将兩個VLAN網絡中的虛拟機預設網關分别設定為路由路由器的接口A和B的IP位址。VLAN中的虛拟機要與 VLANB中的虛拟機通信時,資料包将通過LANA中的實體網卡到達路由器,有實體路由器轉發到 VLAN B中的實體網卡,在到目的的虛拟機
3. 負載均衡 Load Balancing
Openstack 在 Grizzly 版本第一次引入了 Load-Balancing-as-a-Service(LBaaS),提供了将負載分發到多個 instance 的能力。LBaaS 支援多種負載均衡産品和方案,不同的實作以 Plugin 的形式內建到 Neutron,目前預設的 Plugin 是 HAProxy。我們會在後面章節學習 LBaaS 的使用和配置
4. 防火牆 Firewalling
- Neutron 通過下面兩種方式來保障 instance 和網絡的安全性
- Security Group
- 通過 iptables 限制進出 instance 的網絡包
- Firewall-as-a-Service
- FWaaS,限制進出虛拟路由器的網絡包,也是通過 iptables 實作
- Security Group
三、Neutron元件
1.Neutron-server
- Neutron-server提供一組API來定義網絡連接配接和IP位址,供Nova等用戶端調用,它本身也是分層模型設計,其層次結構如下:
- neutron-server包括四個層次
1)Resetful API
- 直接對用戶端API服務,屬于最前端的API,包括Core API和Extension API兩種類型,Core API提供管理網絡,子網和端口核心資源的 Resetful API;Extension API提供給網絡管理路由器,負載均衡,防火牆,安全組等擴充資源的Resetful API
2)Common Service
- 通用服務,負責對API請求進行檢驗,認證并授權
3)Neutron Core
- 核心處理程式,調用相應的API插件來處理API的請求
4)Plugin API
- 定義插件的抽象功能集合,提供通用調用插件API的接口,包括Core Plugin API和Extension Plugin API兩種類型,Neutron Core通過Core Plugin API調用相應的Core Plugin,通過Extension Plugin API調用相應的Service Plugin
2.插件、代理與網絡提供者
1)插件
- Neutron遵循 OpenStack的設計原則,采用開放架構,通過插件、代理與網絡提供者的配合來實作各種網絡功能
- 插件是 Neutron的一種API的後端實作,目的是增強擴充性。插件按照功能可分為Core Plugin和 Service Plugin兩種類型
- Core pugin提供基礎二層虛拟機網絡支援,實作網絡、子網和端口核心資源的支援
- Service plugin是指 Core Plugin之外的其他插件,提供路由器、防火牆、安全組、負載均衡等服務支援
- 值得一提的是,直到 OpenStack的 Havana版本, Neutron才開始提供一個名為L3 Router Service Plugin的插件支援路由服務
- 插件由 Neutron-server的 Core Plugin API和 Extension Plugin API調用,用于确定具體的網絡功能,即要配什麼樣的網絡,插件處理 Neutron- Server發來的請求,主要職責是在資料庫中維護 Neutron網絡的狀态資訊(更新 Neutron資料庫),通知相應的代理實作具體的網絡功能。每一個插件支援一組API資源并完成特定操作,這些操作最終由插件通過RPC調用相應的代理( Agent)來完成
2)代理
- 代理處理插件轉來的請求,負責在網絡提供者上真正實作各種網絡功能。代理使用實體網絡裝置或者虛拟化技術完成實際的操作任務,如用于路由具體操作L3 Agent
3)網絡提供者
- 插件、代理與網絡提供者配套使用,比如網絡提供者是 Linux Bridge,就需要使用 Linux Bridge的插件和代理,如換成 Open vSwitch,則需要改成相應的插件和代理
四、Neutron的實體部署
- Neutron與其他 OpenStack服務元件系統工作,可以部署在多個實體主機節點上,主要涉及控制節點、網絡節點和計算節點,每個節點可以部署多個,典型的主機節點部署介紹如下
1.控制節點和計算節點
- 控制節點上部署 Neutron- service(API)、 Core Plugin和 Service Plugin的代理,這些代理包括 neutron-plugin-agent、 neutron-medadata-agent、 neutron-dhcp-agnet、 neutro-l3- agent、neutron- lba as-agent等。 Core plugin和 service plugin已經內建到 neutron-server中,不需要運作獨立的 plugin服務
- 計算節點上可以部署 Core Plugin、 Linux Bridge或 Open vSwitch的代理,負責體提供二層的網絡功能
- 控制節點和計算節點都需要部署 Cere Plugin的代理,因為控制節點與計算節點通過該代理才能建立二層連接配接
2.控制節點和網絡節點
- 可以通過增加網絡節點承擔更大的負載,該方案特别适合規模較大的 OpenStack環境
- 控制節點部署 Neutron-server服務,隻負責通過 Neutron-server響應的API請求
- 網絡節點部署的服務包括 Core Plugin的代理和 service Plugin的代理。将所有的代理從上述控制節點分離出來,部署到獨立的網絡節點上,由獨立的網絡節點實作資料的交換,路由以及負責均衡等進階網絡服務
總結
- Neutron 優點:
- Openstack 中的 SDN 元件架構也屬于可插拔類型。通過各種插件可以管控不同種類的交換機、路由器、防火牆、負載均衡器并實作 firewall as a service 等許多功能。通過軟體來定義的網絡,可以對整個雲計算設施進行更為精細的掌控