天天看點

Openstack核心元件——Neutron理論一、Neutron基本架構二、Neutron 功能三、Neutron元件四、Neutron的實體部署

前言: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架構非常靈活,層次多,一方面是為了支援各種先有或者将來會出現的先進網絡技術,另一方面支援分布式部署,獲得足夠的擴充性。示意圖如下:
    Openstack核心元件——Neutron理論一、Neutron基本架構二、Neutron 功能三、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中的實體網卡,在到目的的虛拟機
    Openstack核心元件——Neutron理論一、Neutron基本架構二、Neutron 功能三、Neutron元件四、Neutron的實體部署

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 實作

三、Neutron元件

1.Neutron-server

  • Neutron-server提供一組API來定義網絡連接配接和IP位址,供Nova等用戶端調用,它本身也是分層模型設計,其層次結構如下:
    Openstack核心元件——Neutron理論一、Neutron基本架構二、Neutron 功能三、Neutron元件四、Neutron的實體部署
  • 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 等許多功能。通過軟體來定義的網絡,可以對整個雲計算設施進行更為精細的掌控

繼續閱讀