在我們openstack學習當中,網絡組件neutron無疑是令很多人很難理解的,可以說要深入理解
了neutron組件,你基本完成了openstack 60%的學習,存儲方面只要不涉及到分佈式,剩下的基本都比較簡單了
相信很多人第一次看到這種圖的時候都會被嚇一跳,沒錯,這就是openstack neutron組件裏面涉及到的數據流程,裏面涉及到的知識點很多很多
Openstack網絡模型中的幾個概念網絡:
Management Network: 管理網絡,連接所有節點。 External Network: 外部網絡,虛擬機通過此接口連通外部網絡 Data Network: 虛擬機網絡,提供之間內部數據線通訊的網絡.
這裏搭建過程略過,可以參考之前寫的L版本的搭建過程,這次環境如下,一個控制節點和一個計算節點
上面是控制節點,三張網卡
eno1777736 10.10.80.133 作爲外部網絡
eno33554960 10.10.10.130 作爲管理網絡
eno50332184 作爲虛擬機網絡
支持的網絡類型有 flat vlan vxlan gre 而具體實現的這些的則有Linux bridge 和openvswitch
這裏我們以Linux bridge 來實現flat網絡爲例來說明,其他基本差不多,更多內容可以參閱官方文檔,這裏有趣的是在最新版本 N ,官方已經提供了 ansible來部署openstack的指導說明
Flat網絡,顧名思義是平面網絡,要求宿主機的物理網卡直接與Linux bridge連接,,每個flat network都會獨佔一個物理網卡,關鍵參數配置如下
[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini tenant_network_types = flat [ml2_type_flat] flat_networks = martin_flat #這個名字自定義 [root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini physical_interface_mappings = martin_flat:eno50332184 #名字保持與上面一樣,後面是flat網卡名稱
我們打開dashboard來創建第一個flat網絡
接下來觀察這些操作在服務器上面引起了什麼變化
接下來我們來創建第一臺虛擬機並關聯到flat網絡
觀察計算節點的變化情況
dhcp功能
Neutron提供dhcp服務的組件是dhcp agent ,在網絡節點上面運行,默認是通過dnsmasq是實現dhcp功能
配置文件在
[root@controller ~]# vim /etc/neutron/dhcp_agent.ini
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
ns-26782a82-61和tap26782a82-61是一對veth pair,他們將9225f654-522b-478e-80bc-06bf2948cd08 連接到網橋 brq9225f654-52上面
以上這些都只是openstack neutron網絡組件最基本的東西,裏面的內容實在是太多了,涉及到的知識點也很多 如 liunx bridge tap設備 虛擬對 namespace openvswitch 虛擬交換機 虛擬路由器 iptables 高可用 dvr 等等,包括我自己還有很多的東西需要學習,但是大家無需害怕,就從最簡單的學習起,學會了一個,其他你照着模仿應該也能學會
最後給大家看一下 通過openvswith構建的vxlan網絡時,兩個虛擬機通訊的流程,有興趣的可以自己深入一下
openvswitch流表結構