OpenStack的neutron模塊組件介紹

一、Neutron模塊的工作流程

  • Neuton僅有一個主要服務進程Neutron-server,它運行於控制節點上,對外提供OpenStack網絡API作爲訪問Neutron的入口,收集請求後調用插件(Plugin) 進行處理,最終由計算節點和網絡節點上的各種代理(Agent) 完成請求。

  • 網絡提供者(Netvork Provider)是指提供者OPenStack網絡服務的虛報機或者物理網絡設備,如Linux Bridge、Open vSwitch或者其他支持neutron的物理交換機。與其他服務一樣,Neutron的各個組件服務之間需要相互協調通信,Neutron-server、插件、代理之問通過消息隊列(默認用RabbitMQ實現)進行通信和相互協調。

  • datebase數據庫(默認使用MariaDB)用於存放OpenStack的網絡狀態信息、包括網絡、子網、端口、路由器等等。

  • 客戶端(Client)是指使用Neutron服務的應用程序,可以是命令行工具(腳本)、Horizon(OpenStack圖形操作界面)和Nova計算服務等。

拓撲圖如下:
在這裏插入圖片描述
舉列說明:創建一個Vlan 10虛擬網絡的流程。

  • 1、Neutron-server 收到創建網絡(Network) 的請求,通過消息隊列(RabbitMQ)通知已註冊的Linux Bridge插件,這裏架設網絡提供者爲Linux Bridge。
  • 2、該插件將要創建的網絡信息(如名稱、ID值、VLANID等)保存到數據庫中並通過消息隊列通知運行在各個節點上的代理。
  • 3、代理收到信息後會在節點上物理網卡上創建Vlan設備(比如物理接口的子接口 Eth1.10),並創建一個網橋(比如brgXXX)來橋接網絡設備。

二、Neutron-server

  • Neutron-server提供一組API來定義網絡連接和IP地址,供Nova等客戶端調用,它本身也是分層模型設計,其層次結構如下:

Neutron-server包括4個層次,自上而下依次說明如下:

  • Resetful API:直接對接客戶端API服務,屬於最前端的API,包括Core API和Extension API兩種類型。Core API提供管理網絡,子網和端口核心資源的Resetful API;Extension API提供給網絡管理路由器、負載均衡、防火牆、安全組等擴展資源的Resetful API
  • Commnon Service:通用服務,調用keystone認證,負責對API請求進行檢驗、認證,並授權。
  • Neutron core:核心處理處理程序,調用相應的插件API 來處理API的請求。
  • Plugin API:定義插件的抽象功能集合,提供調用通用插件的API接口,包括CorePlugin API和Extension Plugin API兩種類型,Neutron core通過Core Plugin API調用相應的Core Plugin,通過Extension Plugin API調用相應的Service Plugin。
    在這裏插入圖片描述

三、插件、代理與網絡提供者

Neutron遵循OpenStack的設計原則,採用開放架構,通過插件、代理與網絡提供者的配合來實現各種網絡功能。

  • 插件是Neutron的一種API的後端實現,目的是增強擴展性。插件按照功能可分爲Core Plugin和Service Plugin兩種類型。

    • Core Plugin提供基礎:二層虛擬機網絡支持,實現網絡、子網和端口核心資源的支持。
    • Service plugin是指Core Plugin之外的其他插件,提供路由器、防火牆、安全組、負載均衡等服務支持。

值得一提的是, 直到OpenStack的Havana版本, Neutron纔開始提供一個名爲L3 Router Service Plugin的插件支持路由服務。

  • 插件由Neuton-server的Core Plugin API和ExtensionPlugin API調用,用於確定具體的網絡功能,既要配什麼樣的網絡。

  • 插件處理Neutron-Server發來的請求,主要職責是在數據庫中維護Neutron網絡的狀態信息(更新Neutron數據庫),通知相應的代理實現具體的網絡功能。 每一個插件支持一組API資源並完成特定操作,這些操作最終由插件通過RPC調用相應的代理(Agent)來完成。

  • 代理處理插件轉來的請求,負責在網絡提供者上真正實現各種網絡功能。 代理使用物理網絡設備或者成擬化技術完成實際的操作任務,如用於路由具體操作L3 Agent。

  • 插件和代理與網絡提供者配套使用,比如網絡提供者是Linux Bridge,就需要使用LinuxBridge的插件和代理,如換成Open vswitch,則需要改成相應的插件和代理。

四、Neutron的物理部署

Neutron與其他OpenStack服務組件系統工作,可以部署在多個物理主機節點上,主要涉及控制節點、網絡節點、計算節點,每個節點可以部署多個,典型的主機節點部署介紹如下。

1、控制節點和計算節點

  • 控制節點上部署Neutron-service (API) 、Core Plugin 和 Service Plugin的代理,這些代理包括neutron-plugin-agent、neutron-me dadata-agent、neutron-dhcp-agnet、neutron-l3-agent、neutron-lbaas-agent等。Core plugin 和service plugin已經集成到neutron-server中,不需要運行獨立的plugin服務。
  • 計算節點上可以部署Core Plugin、Linux Bridge或Open vSwitch的代理,負責提供二層的網絡功能。
  • 控制節點和計算節點都需要部署CorePlugin的代理,因爲控制節點與計算節點通過該代理才能建立二層連接。

2、控制節點和網絡節點

  • 可以通過增加網絡節點承擔更大的負載,該方案特別適合規模較大的OpenStack環境。
  • 控制節點部署 Neutron-server 服務,只負責通過Neutron-server響應的API請求。
  • 網絡節點部署的服務包括Core Plugin的代理和service Plugin的代理。將所有的代理從上述控制節點分離出來,部署到獨立的網絡節點上,由獨立的網絡節點實現數據的交換,路由以及負責均衡等高級網絡服務。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章