建立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 daemon
ovs-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} $1
vi /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 配置quantum
1) 安装依赖,我们的目的是在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开发环境 .相关推荐
- 建立Qt+VS2010开发环境
简单建立Qt+VS2010开发环境 多天不关注Qt了,发现竟然又被digia收购了,也许是好事,digia计划将Qt应用到Android.iOS及Windows8平台上. 简单介绍下digia(来着网 ...
- 【OpenStack】OpenStack系列1之OpenStack本地开发环境搭建向社区贡献代码
加入OpenStack社区 https://launchpad.net/,注册用户(597092663@qq.com/Admin@123) 修改个人信息,配置SSH keys.OpenPGP keys ...
- 使用 Rosetta 建立 Ubuntu x86 开发环境
版权声明:本文为博主原创文章,转载请注明出处. 前言 尽管换了 M1 设备也有一年多了,但平时仍然依赖于 x86 平台进行开发,为此不得不单独部署一套 x86 的开发环境在 intel PC 上. 随 ...
- 简述java开发环境的建立过程_java开发环境的完整搭建过程
卸载JDK 1.删除java的安装目录 2.删除JAVA_home 3.删除path下关于java的目录 4.java -version 安装JDK 1.百度搜索JDK8,找到下载地址 2.同意协议 ...
- java开发环境的建立过程_Java开发环境的搭建及第一个Java程序的创建
Java的几个基本概念: JVM:Java Virtul Machine(Java虚拟机) JRE:Java Runtime Environment(Java运行时环境) JDK:Java Devel ...
- openstack horizon开发环境配置
mkdir open_srccd open_src 1.选择一个目录下载Horizon代码 git clone https://github.com/openstack/horizon.gitgit ...
- 建立a8 linux开发环境,Fedora 14下建立 omap3530 开发环境 - 交叉编译器
主机升级到Fedora 14,下载了crosstool-ng-1.10.0,编译目标为 arm-cortex_a8 编译步骤: 1.直接拷贝 crosstool-ng-1.10.0/samples/a ...
- 在windowsXP上建立Qt Creator开发环境新方法(Qt被NOKIA卖掉给digia公司之后)
前几天在windowsXP上想安装Qt Creator上好久,不得要领.总是配置不好,首先安装工具链时提示安mingw,但是我另外从网上下载的mingw安装好之后,又提示版本不对,最后终于 ...
- python openstack开发_openstack开发环境与代码测试
一.openstack单组件开发环境 1.Python虚拟环境搭建 主要参考文献: 说明:Python虚拟环境主要是一个与系统中Python第三方库相对应的隔离环境,可以在这个虚拟环境中安装程序及依赖 ...
最新文章
- 面试官问:服务的心跳机制与断线重连,Netty底层是怎么实现的?懵了
- 杂志类(CMS)主题使用攻略
- response返回一段html,iframe调用后台方法通过response返回html代码
- C#winform使用进度条
- 机器视觉传感器选型,交互作用决定取舍
- Android延时执行调用的几种方法
- [Linux]共享内存
- Python之异常追踪模块:traceback
- 灵魂拷问!软件架构师书籍
- jqgrid 行选中multiboxonly属性说明
- html特殊字符转义倒三角,html,转义字符对照表,部分x
- 第17课:生活中的享元模式——颜料很贵必须充分利用
- 专升本高数——第二章 一元函数的导数与微分【学习笔记】
- 为企业数字人才建粮仓:专访极客邦科技双数研究院院长付晓岩
- Draggabilly中文文档
- 把opencv Mat 按位存成bmp二值图像 (1bit 1pixel)(位深度为1)
- 电脑软件没运行,内存爆满可以这样解决
- Learning to Collaborate: Multi-Scenario Ranking via Multi-Agent Reinforcement Learning
- 圣诞新年酷炫视频制作素材ae模板
- 给刚入坑的ACMer一些编码建议(1)——使用“好”变量名
热门文章
- java为什么不推荐使用stack_栈和队列的面试题Java实现,Stack类继承于Vector这两个类都不推荐使用...
- python用户名密码登录退出_用户登录登出
- 极光推送 android 最新,Android——快速集成极光推送-Go语言中文社区
- java 集合modcount_源码|jdk源码之LinkedList与modCount字段
- android 机器人动画,Android 5.X与Android4.X版本机器人动画的区别以及制作动画的方法...
- a4纸网页打印 table_打印模板不愁人,你还在打印单调的A4纸吗?
- 用java创建一个单例模式,采用Java实现单例模式
- JVM 调优 1:“精通 JVM 调优,有过 JVM 调优经验”简历敢写吗?薪资涨 5k 的技巧
- 已知a类被打包在packagea_2021考研干货:199管理类联考综合逻辑归纳习题(1)
- mysql联合子查询_2020-09-08MySQL多表联合查询之子查询