建立openstack quantum开发环境 .
建立openstack quantum開發環境
作者:張華 發表于:2012-4-6 版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本版權聲明 ( http://blog.csdn.net/quqi99 )上篇中講了如何建立openstack的最小開發環境(僅運行keystone, nova, glance, horion),今天看看如何運行quantum. quantum是什么呢?我們知道,一般虛擬網絡有三種拓撲,一種是NET方式(即虛機里是內網地址,虛機間可以互訪,虛機可以訪問外面,但外面不可以訪問虛機,當然宿主機除外),另一種是Bridge方式,這是linux內核自帶的一種方式(虛機可以訪問外面,外面也可以訪問虛機),最后一種就是VLAN,通過標簽虛擬網絡可以分為更多的相互隔離的小子網,一般用open×××就可以很容易實現。
扯遠了,quantum究竟是什么呢?上面三種網絡拓撲是死的,quantum可以通過編程動態的調整拓撲,還可以動態定義網絡QoS,并且基于一種openflow的標準協議,可以獨立為一個單獨的模塊用在其他地方。
open vSwitch又是什么呢?它是一種軟件實現的交換機,用于給一臺物理機上的虛機提供虛擬網絡服務,它的實現原理蠻簡單,就是TUN,TUN其實就是linux內核提供的用于兩個進程間交換數據用的。在物理機里的兩臺虛機實際上就兩個進程。
先說概念, 如下圖,虛機里面的虛擬網卡我們一般叫VIF, 它要和Quantum中的virtual port做映射。
具體在quantum中通過API建立網絡的過程如下:
1)服務(eg,nova)經它們的tenantAPIs暴露virtualinterface(VIF),表示這個服務里的設備都可以使用這個虛擬網絡
nova.foo.com/<tenant-id>/network/<service-id>/eth0
2)創建virtualnetwork,返回UUID
quantum.foo.com/<tenant-id>/network/<network-id>
3)創建virtualport,
quantum.foo.com/<tenant_id>network/<network-id>/port/<port-id>
4)virtualinterfacemapping to virtual port
setquantum.foo.com/<tenant-id>/network/<network-id>/port/<port-id>/attach
nova.foo.com/<tenant-id>/server/<server-id>/eth0
我們再來看一起一般如果用quantum的話,它的結構是什么樣子,如下圖,
Quatum首先有一個框架,然后有一些插件,例如vSwitch有它的插件,其他的openflow的交換機需要開發它們自己的插件。看了上在主張圖,就應該知道建這個環境的大致步驟:
1) QuantumManager, 通用框架
2)要配置使用vswitch插件,quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPlugin
3)在計算結點得配置VIF
不說了,從下面的安裝步驟中會找到對應的等價物的。
5.2.1 安裝vSwitch
cd/bak/openstack
wgethttp://openvswitch.org/releases/openvswitch-1.4.0.tar.gz
1)./configure--prefix=/usr--localstatedir=/var --with-linux=/lib/modules/`uname -r`/build
make& make install
2)加載模塊用:/sbin/insmod./datapath/linux/openvswitch_mod.ko
用dmesg|tail命令看日志
/sbin/rmmod./datapath/linux/openvswitch_mod.ko
/sbin/modinfoopenvswitch_mod
/sbin/modinfo/lib/modules/`uname -r`/kernel/net/bridge/bridge.ko
3)初始化數據庫配置
mkdir-p /usr/local/etc/openvswitch
ovsdb-toolcreate /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
4)啟動數據庫
mkdir-p /var/run/openvswitch
ovsdb-server --remote=punix:/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --pidfile --detach 5)初始化數據庫ovs-vsctl --no-wait init
6) 啟動vSwitch daemonovs-vswitchd --pidfile --detach
7)建立接接ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 vif1.0
在啟動vswitch之后,用linux內核的橋接命令是一樣的效果
brctl addbr br0
brctl addif br0 eth0
brctl show
http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=INSTALL.bridge;hb=HEAD
8)open vswitch與kvm
vi /etc/ovs-ifup
#!/bin/sh switch='br0' /sbin/ifconfig $1 0.0.0.0 up ovs-vsctl add-port ${switch} $1vi /etc/ovs-ifdown
#!/bin/sh switch='br0' /sbin/ifconfig $1 0.0.0.0 down ovs-vsctl del-port ${switch} $1創建KVM客戶機
kvm -m 512 -netnic,maddr=00:11:22:EE:EE:EE -net \
tap,script=/etc/ovs-ifup,downscript=/etc/ovs-ifdown-drive \
file=/path/to/disk-image,boot=on
8)舉例:Goal:
Isolate VMs using VLANs on the DataNetwork. VLAN 1: VM1,VM3 VLAN 2: VM2,VM4
Configuration:
On Host1:
ovs-vsctladd-brbr0
ovs-vsctladd-portbr0eth0
ovs-vsctladd-portbr0tap0tag=1
ovs-vsctladd-portbr0tap1tag=2
On host2
ovs-vsctladd-brbr0
ovs-vsctladd-portbr0eth0
ovs-vsctladd-portbr0tap0tag=1
ovs-vsctladd-portbr0tap1tag=2
如果是限流量的,可以:
http://openvswitch.org/support/config-cookbooks/qos-rate-limiting/
ovs-vsctlsetInterfacetap0ingress_policing_rate=1000
ovs-vsctl set Interface tap0ingress_policing_burst=100
然后可以用Netperf工具測試,Netperf是一種網絡性能的測量工具,以C/S模式工具,Server端叫netserver,客戶端叫netperf。在linux系統中,可以直接運行可執行程序來啟動netserver,也可以讓inetd或xinetd 來自動啟動netserver。當netserver在server 端啟動以后,就可以在client端運行netperf 來測試網絡的性能。
netperf -H 10.0.0.100
5.5.2 配置quantum1) 安裝依賴,我們的目的是在eclipse中可以調試quantum工程,但對于quantum-client工程要安裝它們。
cd/bak/openstack/quantum
pip-python install-r tools/pip-requires
pip-python install-r tools/test-requires
cd /bak/openstack/python-quantumclient
pip-python install -r tools/pip-requires
pip-python install -r tools/test-requires
python setup.py develop
2)集成后對horizon配置的改動:
ln -s/bak/openstack/python-quantumclient/quantum/bak/openstack/horizon/openstack_dashboard/quantum
sed -e "s,QUANTUM_ENABLED =False,QUANTUM_ENABLED = True,g" -i/bak/openstack/horizon/openstack_dashboard/local/local_settings.py
在/etc/nova/nova.conf中添加配置:
--network_manager=nova.network.quantum.manager.QuantumManager
--quantum_connection_host=localhost
--quantum_connection_port=9696
--libvirt_vif_type=ethernet
--libvirt_ovs_bridge=br-int
--libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtOpenVswitchDriver
--linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver
--quantum_use_dhcp
這樣配置之后,之前的-flat_network_bridge=br100 就失效了,改用br-int了
if nova-network has DHCP enabled or isacting as the L3 gateway.
3)在keystone/etc/default_catalog.templates中添加:
catalog.RegionOne.network.publicURL =http://localhost:9696/
catalog.RegionOne.network.adminURL =http://localhost:9696/
catalog.RegionOne.network.internalURL =http://localhost:9696/
catalog.RegionOne.network.name =Quantum Service
并確保在keystone/etc/keystone.conf文件中使用keystone/etc/default_catalog.templates
[catalog]
# dynamic, sql-based backend (supportsAPI/CLI-based management commands)
#driver =keystone.catalog.backends.sql.Catalog
# static, file-based backend (does*NOT* support any management commands)
driver =keystone.catalog.backends.templated.TemplatedCatalog
template_file =./etc/default_catalog.templates
5)數據庫
DROP DATABASE IF EXISTS ovs_quantum;
CREATE DATABASE IF NOT EXISTSovs_quantum;
vi./etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini
sql_connection= mysql://root:password@localhost:3306/ovs_quantum
6)配置
vi./etc/quantum.conf
#auth_admin_user= admin
#auth_admin_password= password
auth_admin_token= ADMIN
6)啟動quantum-server
vi/bak/openstack/quantum/etc/plugins.ini
provider= quantum.plugins.openvswitch.ovs_quantum_plugin.OVSQuantumPlugin
python./bin/quantum-server ./etc/quantum.conf
驗證quantum-client與quantum能通信:
quantumcreate_net quantum-fake-tenant net1
list_nets[tenant-id]
rename_net [tenant-id] [net-id][new-name]
show_port [tenant-id] [net-id][port-id]
unplug_iface [tenant-id] [net-id][port-id]
plug_iface [tenant-id] [net-id][port-id] [iface-id]
show_net [tenant-id] [net-id]
delete_port [tenant-id] [net-id][port-id]
delete_net [tenant-id] [net-id]
set_port_state [tenant-id] [net-id][port-id] [new_state]
create_net [tenant-id] [net-name]
create_port [tenant-id] [net-id]
list_ports [tenant-id] [net-id]
7)在computenode需要安裝quantumagent
sudo ovs-vsctl --no-wait -- --if-existsdel-br br-int
sudo ovs-vsctl --no-wait add-br br-int
sudo ovs-vsctl --no-waitbr-set-external-id br-int bridge-id br-int
上述的配置對應/etc/nova/nova.conf的:
--libvirt_ovs_bridge=br-int
及./etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini
integration-bridge= br-int
python/bak/openstack/quantum/quantum/plugins/openvswitch/agent/ovs_quantum_agent.py/bak/openstack/quantum/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini-v8用
8)quantum manager創建網絡
nova-manage network delete --uuid32b09c60-ac6f-45e4-8728-5b6dbea13af5
nova-manage network list
nova-manage network create--label=public --fixed_range_v4=192.168.99.0/24 --priority=0
nova-manage network create--label=admin-private --fixed_range_v4=10.10.10.0/24--project_id=986a58e77d8c49da9b4ff0dd1e823f0f --priority=1--gateway=10.10.10.1
驗證,下列命令出來一定要有東西才算成功,如果沒有的話,檢查你的/etc/nova/nova.conf文件的--network_manager=nova.network.quantum.manager.QuantumManager一句是否生效,你最好將這些配置放到最下面,不然會被其他同名的--network_manager覆蓋掉了。
quantum list_nets default
9)通過-nicnet-id參數啟動實例
./bin/glance -f index
novaboot--image5213ac41-a588-419f-9b50-c86217433df9 --flavor 1 --nicnet-id=adc806ec-a13b-4f75-bbc9-945d71114fa5 test4
或
/bak/openstack/python-novaclient/novaclient/shell.py--os_username=admin --os_password=password --os_tenant_name=admin--os_auth_url=http://localhost:35357/v2.0 --debug boot --flavor 1--image 5213ac41-a588-419f-9b50-c86217433df9 --nicnet-id=adc806ec-a13b-4f75-bbc9-945d71114fa5 test5
轉載于:https://blog.51cto.com/prothesman/1411526
總結
以上是生活随笔為你收集整理的建立openstack quantum开发环境 .的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享:假如浏览器和搜索引擎不再支持外部链
- 下一篇: X-UA-Compatible,IE8