配置Openstack 中最復雜靈活的網絡模型:每個租戶都擁有自己的路由及內部網絡


首先,我們看一下此模型的圖例:


從圖中我們可以看出,TenantA與TenantC分別有自己的私網和路由,通過自己的路由最終連接到外部網絡。
 
下圖展示了這個網絡模型的邏輯配置環境:
注意區別Openstack網絡模型中的幾個概念網絡:
Management Network: 管理網絡,連接所有節點。
External Network: 外部網絡,虛擬機通過此接口連通外部網絡
Data Network: 虛擬機網絡,提供之間內部數據線通訊的網絡.

而在我的實際部署環境中,我將Controller Node 與 Network Node 合並,同時增加一個Compute Node ,即一個Ctroller Node + 2個ComputerNode

 
圖中還有一個router負責與外網通訊的,則由我自己的pc擔當。
 
如下圖所示:
本文的前提假設是讀者對Openstack 各組件功能已經比較熟悉,並能熟練安裝配置。
以上圖例所示各組件已經安裝完成並配置正確。
 
Controller Node配置:
1.  安裝apt-get install quantum* .
2. 配置/etc/quantum/quantum.conf
[DEFAULT]
core_plugin = quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
control_exchange = quantum
rabbit_host = controlnode
notification_driver = quantum.openstack.common.notifier.rabbit_notifier

[keystone_authtoken]
admin_tenant_name=servicetenant
admin_user=quantum
admin_password=servicepassword

3. 配置 /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini

[DATABASE]
sql_connection = mysql://root:root@controlnode:3306/ovs_quantum?charset=utf8
[OVS]
tenant_network_type = gre
tunnel_id_ranges = 1:1000
enable_tunneling = True
local_ip = 100.10.10.52

4. 重啟服務

service quantum-* restart

可以用過以下腳本重啟所有網絡組件
#!/bin/sh
cd /etc/init.d/; for i in $( ls quantum-* ); do sudo service $i restart; done
echo "===============Quantum Service Status================="
cd /etc/init.d/; for i in $( ls quantum-* ); do sudo service $i status; done

保存為文件x.sh 

使用 bash x.sh即可

5. 添加External Network bridge
 
ovs-vsctl add-br br-ex
ovs-vsctl add-port br-ex eth2

6.配置/etc/quantum/l3_agent.ini

[DEFAULT]
interface_driver=quantum.agent.linux.interface.OVSInterfaceDriver
use_namespaces=True

 

7.配置 /etc/quantum/quantum.conf
[DEFAULT]
core_plugin = quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
control_exchange = quantum
rabbit_host = controlnode
notification_driver = quantum.openstack.common.notifier.rabbit_notifier
allow_overlapping_ips = True

8.重啟所有網絡服務 

 service quantum-* restart
 
Compute Node 1配置:
1.  安裝l2 agent:
 
apt-get install quantum-plugin-openvswitch-agent
ovs-vsctl --may-exist add-br br-int

2. 配置 /etc/quantum/quantum.conf

[DEFAULT]
core_plugin = quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPluginV2
control_exchange = quantum
rabbit_host = controlnode
notification_driver = quantum.openstack.common.notifier.rabbit_notifier

 

3. 配置 /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini
[DATABASE]
sql_connection = mysql://root:root@controlnode:3306/ovs_quantum?charset=utf8
[OVS]
tenant_network_type = gre
tunnel_id_ranges = 1:1000
enable_tunneling = True
local_ip = 100.10.10.51

4. 重啟服務

 
service quantum-plugin-openvswitch-agent restart
 
Compute Node2 配置參考Compute Node1 .
 
至此,所有配置基本完成,下面可以通過Openstack Horizon Dashboard來操作各個租戶的網絡路由了.
 
首先,創建External Network
這里我使用Admin 和Dev兩個租戶分別代表邏輯圖中的TenantA,TenantC
其后,創建租戶Admin的私網Admin-Net
創建Admin的Router Admin-R1
 
切換到租戶Dev 再創建Dev的私網和路由,參考邏輯圖. 
最終的網絡圖如下:
當然這些步驟也可以在Controller Node上通過quantum 命令行實現。
 
 
最后提示:別忘了設置路由的網關為Ext-Net
 
下面就可以創建虛擬機來測試了。同樣可以在Dashboard上完成. 
下面是我的創建的虛擬機在Dashboard上的網絡拓撲圖:
 
 
這樣的配置基本模擬了現實IDC網絡環境中的主要設備,通過其擴展可以實現企業私有雲的所有網絡模型部署.
 
如果在單機的情況下. 可以在br-ex上面設置ext-net的網關
Ext-net的網關
sudo ip addr add 30.0.0.100/24 dev br-ex
sudo ip link set br-ex up

然后通過iptables 可以設置虛擬機nat上網

iptables -t nat -I POSTROUTING -o eth1 -s 30.0.0.0/24 -j SNAT --to 10.51.166.17

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM