首先,我們看一下此模型的圖例:
從圖中我們可以看出,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
