前面我們詳細討論了 Neutron 架構,包括 Neutron Server,Core 和 Service Agent。現在用兩張圖做個總結。
先看第一張:
與 OpenStack 其他服務一樣,Neutron 采用的是分布式架構,包括 Neutorn Server、各種 plugin/agent、database 和 message queue。
-
Neutron server 接收 api 請求。
-
plugin/agent 實現請求。
-
database 保存 neutron 網絡狀態。
-
message queue 實現組件之間通信。
metadata-agent 之前沒有講到,這里做個補充:
instance 在啟動時需要訪問 nova-metadata-api 服務獲取 metadata 和 userdata,這些 data 是該 instance 的定制化信息,比如 hostname, ip, public key 等。
但 instance 啟動時並沒有 ip,如何能夠通過網絡訪問到 nova-metadata-api 服務呢?
答案就是 neutron-metadata-agent
該 agent 讓 instance 能夠通過 dhcp-agent 或者 l3-agent 與 nova-metadata-api 通信
如果我們將 Neutron 架構展開,則會得到下面第二張圖:
-
Neutron 通過 plugin 和 agent 提供的網絡服務。
-
plugin 位於 Neutron server,包括 core plugin 和 service plugin。
-
agent 位於各個節點,負責實現網絡服務。
-
core plugin 提供 L2 功能,ML2 是推薦的 plugin。
-
使用最廣泛的 L2 agent 是 linux bridage 和 open vswitch。
-
service plugin 和 agent 提供擴展功能,包括 dhcp, routing, load balance, firewall, vpn 等。
至此,Neutron 架構已經討論完,希望大家已經理解。
下節開始,將通過實驗來實踐架構中的各個組件。
第一步將是准備實驗用的物理環境。