Neutron基本架構

jopen 9年前發布 | 9K 次閱讀 Neutron

一. Neutron基本架構

下圖展示了Neutron基本的架構及包含的組件。

  • neutron-server

提供REST API服務,后端使用關系數據庫。

  • Message Queue

neutron-server使用Message Queue與其他Neutron agents進行交換消息,但是這個Message Queue不會用于neutron-server與其他OpenStack組件如nova進行交換消息。

  • L2 Agent

負責連接端口(ports)和設備,使他們處于共享的廣播域(broadcast domain)。通常運行在Hypervisor上。

  • DHCP agent

用于配置虛機主機的網絡(某些情況可能不需要DHCP agent,例如使用config drive來配置虛擬主機的情況)。

  • L3 Agent

負責連接tenant網絡到數據中心,或連接到Internet。在真實的部署環境中,一般都需要多個L3 Agent同時運行。

二.Neutron各組件詳細介紹

  • neutron-server

neutron-server組件由REST API Service,RPC SErvice,Plugin幾部分組成。

  • REST API Service

neutron-server本身是WSGi應用,提供REST API服務,使用9696端口,對用戶暴露基本的邏輯資源,如network, subnet, port等,同時負責HTTP request和response的序列化。

  • RPC Service

使用AMQP, 基于oslo messaging模塊,用于agents之間的雙向通信

  • Plugin

使用Python編寫。同時只能使用一個plugin,plugin必須實現V2 APIs,可以提供數據庫訪問或者擴展支持。例如ML2 Plugin。

  • Plugin Extensions

Plugin 提供了擴展機制,這種機制可以為REST API增加更多的邏輯資源,如router,security group等。Pplugin的擴展點由neutron-server在啟動的時候發現和加載。常見的擴展點如 Binding,DHCP,L3,Provider,Quota, Security,其他的擴展點如Allowed Addresses, Extra Routes,Metering等。

  • Monolithic Plugin

Monolithic Plugin的特征是實現所有的Core資源。Neutron中包含兩種類型Monolithic Plugin,一種是Proxy Plugin,將功能代理到其他實際管理data plane的拓撲的服務器,例如BigSwitch Plugin,另一種是Direct Control Plugin,例如Linux Bridge或Open vSwitch Plugin,實際操作虛機設備。

  • ML2 Plugin drivers

目前Neutron已經默認使用ML2 Plugin,ML2 Plugin使用戶能夠同時利用數據中心中各種L2網絡技術。ML2 Plugin提供兩種Drivers,一種是Typer Driver, 維護網絡狀態,驗證provider network和分配tenant網絡,目前,支持的網絡類型包括local, float, vlan, gre, vxlan。另一種是Mechanism Driver, 負責使用Type Driver提供的信息,實現具體的網絡機制,例如通過Open vSwitch實現VLAN網絡。

  • L2 Agent

L2 Agent通常運行在Hypervisor,與neutron-server通過RPC通信,監聽并通知設備的變化,創建新的設備來確保網絡 segment的正確性,應用security groups規則等。例如,OVS Agent,使用Open vSwitch來實現VLAN, GRE,VxLAN來實現網絡的隔離。

  • L3 Agent

在介紹L3 Agent之前,Mark介紹了Linux network namespace,這時實現L3 agent的技術基礎,特別是overlapping ip,必須依賴namespace來實現。每一個namespace是一個獨立的IP Stack,namespace之間通過虛擬設備之間的link來實現。關于linux network namespace的信息可以參照這篇文章:http://blog.scottlowe.org/2013/09/04/introducing- linux-network-namespaces/

L3 Agent運行在網絡結點,負責連接tenant網絡到數據中心,或連接到Internet。如上所述使用namespaces,通過獨立的IP Stacks,啟用Forward,靜態路由和metadata proxy來實現。

  • Configuration Agents: DHCP

DHCP Agent用于配置虛擬主機的網絡。基于RPC通知實現(來自neutron-server的notifications),使用dnsmasq實現IP 地址分配及域名服務器的設置,通過namespace實現不同網絡之間DHCP服務的隔離,支持多個DHCP Agent同時運行以支持Active-Active的HA。

  • Configuration Agents: Metadata Proxy

將metadata請求代理到Nova。

除此之外,Mark亦簡要介紹了LBaaS,V*NaaS,FWaaS等Neutron的Service Plugin組件。也提到Juno當中正在開發的一個新功能:在創建虛機時,Nova等待Neutron創建虛機設備,設備創建成功后通知nova繼續虛機的部署。

總體來說,Mark的介紹非常詳盡,不過需要具有一定的網絡,OpenStack,Linux背景才能夠完全吸收,盡管如此,可以從這個介紹入手去進一步熟悉Neutron的架構細節。

本篇,整理自openstack中國社區: http://www.openstack.cn/?p=1745

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!