Openstack-----Neutron組件解析

一、Neutron基本架構

  • OpenStack中Neutron採用分佈式架構,由多個組件(服務)共同對外提供服務,Neutron架構靈活,層次多。一方面是爲了支持各個現有或者將來會出現得先進的網絡技術,另外一方面支持分佈式部署,獲得足夠的擴展性

  • Neutron僅由一個主要的服務進程Neutron-server,它運行於控制節點
  • Neutron-server對外提供Openstack網絡API作爲Neutron的入口,收集請求後調用plugin(插件)進行處理,最終由計算節點和網絡節點上的各種agent(代理)完成請求
  • network-provider(網絡提供者)是指提供OpenStack網絡服務的虛擬機或者物理網絡設備,比如Linux Brigde、Open vSwitch或者其他支持neutron的物理交換機。與其他的五福一樣,Neutron的各個組件服務之間需要相互協調通信,Neutron-server、插件之間通過消息隊列(默認用RabbitMQ實現)進行通信和相互協調
  • Neutron-database(數據庫,默認使用MariaDB)用於存放OpenStack的網絡狀態信息,包括網絡、子網、端口、路由器等
  • Client(客戶端)是指使用Neutron服務的應用程序,可以是命令行工具(腳本)、Horizon和Nova計算服務等

創建一個Vlan10的虛擬網絡過程

1.Neutron-server收到創建網絡(Network)的請求,通過消息隊列通知已註冊的Linux brige插件,假設網絡提供者爲Linux Bridge

2.該插件將要創建的網絡信息保存到數據庫中,並且通過消息隊列通知各個運行的節點代理

3.代理收到信息後會在節點上的物理網卡創建vlan設備,並且創建一個網橋來橋接網絡設備

二、Neutron-server解析

  • neutron-server其作用是提供一組API來定義網絡連接和IP地址,供Nova等客戶端調用,其本身也是分層模型

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

 

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

  • 插件是Neutron的一種API的後端實現,目的是增強擴展性。插件按照功能可分爲CorePlugin和Service Plugin兩種類型。Core Plugin提供基礎二層虛擬機網絡支持,實現網絡、子網和端口核心資源的支持。Service plugin是指Core Plugin之外的其他插件,提供路由器、防火牆、安全組、負載均衡等服務支持,值得一提的是, 直到OpenStack的Havana版本,Neutron纔開始提供一個名爲L3 RouterService Plugin的插件支持路由服務。
  •  插件由Neutron-server 的Core Plugin API和Extension Plugin API調用,用於確定具體的網絡功能,要配什麼樣的網絡,插件處理Neutron-Server發來的請求,主要職責是在數據庫中維護Neutron網絡的狀態信息(更新Neutron數據庫),通知相應的代理實現具體的網絡功能。每一個插件支持一組API資源並完成特定操作,這些操作最終由插件通過RPC調用相應的代理(Agent)來完成。
  • 代理處理插件轉來的請求,負責在網絡提供者上真正實現各種網絡功能。代理使用物理網絡設備或者虛擬化技術完成實際的操作任務,如用於路由具體操作L3 Agent。
  •   插件和代理與網絡提供者配套使用,比如網絡提供者是Linux Bridge,就需要使用LinuxBridge的插件和代理,如換成OpenySwitch,澤需要改成相應的插件和代理。

ML2插件的發展

Neutron可以通過開發不同的插件和代理來支持不同的網絡技術、這是一種相當於開發的架構。不過隨着所支持的網絡提供者種類的增加,開發人員發現兩個突出的問題。

一個問題是多種網絡提供者無法共存。Core Plugin負責管理和維護Neutron二層的虛擬網絡的狀態信息,一個Neutron網絡只能由一個插件管理 ,而Core Plugin插件與相應的代理是一一對應的,如果Linux Bridge插件,則只能選擇Linux Bridge代理,必須在OpenStack的所有節點上使用Linux Bridge作爲虛擬交換機。

另外一個問題是開發插件的工作量太大,所有傳統的CorePlugin之間存在大量重複的代碼(如數據庫訪問代碼)

 爲了解決這二個問題,從OpenStack的Havana 版本開始,Neutron 實現一一個插件ML2(Moduler. Layer2)爲了職代所有Core Plugin,允許在OpenStacks網絡中同時使用多種二二層的網絡技術,不同的節點可以使用不同的網絡實現機制,ML2能夠與現在所有的代理無縫集成,以前使用費的代理無需變更,只要將傳統的Core Plugin替換ML2,

四、Neutron的物理部署

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

控制節點上部署Neutron-service (API)、Core Plugin和Service Plugin的代理,這些代理包括neutron-plugin -agent、neutron-me dadata-agent neutron-dhcp-a gnet、neutron-l3-agent、neutron-lbaas-agent等。Core plugin和service plugin已經集成到neutron-server中,不需要運行獨立的plugin服務。

計算節點上可以部署Core Plugin、Linux Bridge或Open ySwitch的代理,負責體提供二層的網絡功能。

控制節點和計算節點都需要部署CorePlugin的代理,因爲控制節點與計算節點通過該代理才能建立二層連接。

  • 控制節點和網絡節點上的部署

 可以通過增加網絡節點承擔更大的負載,該方案特別適合規模較大的OpenStack環境控制節點部署Neutron-server服務,只負責通過Neutron-server響應的API請求。(水平擴展)

 網絡節點部署的服務包括Core Plugin的代理和se rvice Plugin的代理。將所有的代理從上述控制節點分離出來,部署到獨立的網絡節點上,由獨立的網絡節點實現數據的交換,路由以及負責均衡等高級網絡服務。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章