由于项目中需要使用OpenDaylight(Oxygen)替换OpenStack(Otaca)中的neutron-openvswitch-agent,能找到的一些资料都是比较旧的版本,官网上的文档也一直没有更新,导致中间踩了很多坑,特此记录一下两者对接的过程

首先是环境,此次对接使用的opendaylight版本是0.8.3的版本,OpenStack使用的阿里镜像中的Ocata版本

对接必须确认opendaylight中feature:

odl-netvirt-openstack

已安装

由于在部署Openstack时没有分离出网络节点,故控制节点与网络节点为同一主机

在控制节点上进行如下操作:

1.在部署openstak的机器上确认实例:

nova list

2.清空实例

nova delete

3.查看子网

neutron subnet-list

4.查看路由

neutron router-list

5.查看路由接口

neutron router-port-list

6.删除路由接口

neutron router-interface-delete

7.删除子网

neutron subnet-delete

neutron net-list

8.删除网络

neutron net-delete

9.删除路由

neutron router-delete

10.确认接口是否清空

neutron port-list

11.停止neutron相关服务

systemctl stop neutron-server

systemctl stop neutron-openvswitch-agent

systemctl disable neutron-openvswitch-agent

12.停止OVS并清空OVS的数据库,再启动OVS

systemctl stop openvswitch

rm -rf /var/log/openvswitch/*

rm -rf /etc/openvswitch/conf.db

systemctl start openvswitch

13.此时使用

ovs-vsctl show

查看ovs状态时应该没有任何的网桥

14.设置控制器全权控制OVS

ovs-vsctl set-manager tcp:${CONTROL_HOST}:6640

使用

ovs-vsctl show

命令后能看到opendaylight已经管理了OVS,并且生成了br-int的网桥。并且br-int也属于odl管理

15.安装ml2驱动:

yum install python-pip

pip install --upgrade distribute

git clone https://github.com/openstack/networking-odl -b stable/ocata

cd networking-odl

python setup.py install

16.修改/etc/neutron/plugins/ml2/ml2_conf.ini:

[ml2]

mechanism_drivers = opendaylight

#在文件最末加上

[ml2_odl]

password = admin

username = admin

#${CONTROL_HOST}这个值修改为odl的ip地址

url = http://${CONTROL_HOST}:8181/controller/nb/v2/neutron

17.将配置写入neutron的数据库中:

mysql -u root -p -e "drop database if exists neutron_ml2;"

mysql -u root -p -e "create database neutron_ml2 character set utf8;"

mysql -u root -p -e "grant all on neutron_ml2.* to 'neutron'@'%';"

neutron-db-manage --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf \

--config-file /etc/neutron/plugin.ini upgrade head

18.启动neutron服务:

systemctl start neutron-server

19.可以通过odl查看是否有网络(有结果返回即配置成功,若返回错误信息则需要检查odl是否安装了相应的组件)

curl -u admin:admin http://${CONTROL_HOST}:8181/controller/nb/v2/neutron/networks

20. openstack启用odl控制

neutron-odl-ovs-hostconfig --datapath_type=system

在计算节点进行如下操作:

1.关闭计算节点的openvswitch agent

systemctl stop neutron-openvswitch-agent

systemctl disable neutron-openvswitch-agent

2.将计算节点的ovs中所有网桥以及管理地址清空

systemctl stop openvswitch

rm -rf /var/log/openvswitch/*

rm -rf /etc/openvswitch/conf.db

systemctl start openvswitch

3.设置控制器全权控制OVS

ovs-vsctl set-manager tcp:${CONTROL_HOST}:6640

验证:

ovs-vsctl show

4.安装openstack-odl驱动

yum install python-pip

pip install --upgrade distribute

git clone https://github.com/openstack/networking-odl -b stable/ocata

cd networking-odl

python setup.py install

5.openstack启用odl控制(官方文档未添加这一命令,但是必须运行,否则neutron仍然会使用openvswitch进行网络组建,导致虚拟机无法启动)

neutron-odl-ovs-hostconfig --datapath_type=system

此时opendaylight与open stack已经对接完成,可以正常建立虚拟机了

不过对接完成后在建立虚拟机时会出现Openstack已经分配好ip,但虚拟机实例内部网卡没有ip的情况,此问题暂未解决(使用cirros镜像测试)

OpenStack与OpenDaylight的对接过程的更多相关文章

  1. OpenStack with Opendaylight Part 1: Intro to Pipeline

    Using Vagrant to create vm nodes; devstack to start openstack using Opendaylight as ML2. Openstack w ...

  2. php与国付宝对接过程吐槽

    最近.我们在打造全国第一家互联网+风险管理平台(避险谷)时.须要与第三方支付平台"国付宝"进行在线交易对接. 之前对接过支付宝 .感觉还非常easy,拿到国付宝的接口文档.我晕啊. ...

  3. [cloud][sdn] openstack openflow opendaylight openvswitch

    https://www.quora.com/What-is-the-relation-between-OpenStack-OpenDaylight-OpenFlow-and-Open-vSwitch- ...

  4. openstack创建一个虚拟机的过程

      为什要用云? 一.简单的说就是对资源更加合理的分配,使用,比如硬件的数量,带宽等等这些,因为你不能机器买来不需要了再卖掉(当然也可以),带宽跟机房签合同得来一年的,中间不够了也不能加,超了也不退钱 ...

  5. OpenStack 中的neutron-server启动过程

    neutron-server是neutron的核心组件之中的一个.负责直接接收外部请求,然后调用后端对应plugin进行处理. 其核心启动过程代码主要在neutron.server包中. __init ...

  6. Ceph和Openstack的cinder模块对接方法

    1.创建存储池 在ceph节点中执行如下语句. #ceph osd pool create volumes 2.配置 OPENSTACK 的 CEPH 客户端 在ceph节点两次执行如下语句,两次{y ...

  7. 云计算/云存储---Ceph和Openstack的cinder模块对接方法

    1.创建存储池 在ceph节点中执行如下语句. #ceph osd pool create volumes 2.配置 OPENSTACK 的 CEPH 客户端 在ceph节点两次执行如下语句,两次{y ...

  8. openstack之nova启动实例过程

    概述: 启动一个实例包含以下步骤: API server:处理用户请求并转发至cloud controller cloud controller:处理计算节点.网络控制.api server 以及sc ...

  9. Openstack部署总结:“部署过程Error: Local ip for ovs agent must be set when tunneling is enabled”问题

    问题叙述性说明 正在使用RDO当多节点部署测试,因为使用了一些老机器和机器类型的差异(一些HP的PC,有些DELL的PC).以下错误出现: Applying 192.168.40.107_neutro ...

随机推荐

  1. MyEclipse优化设置(最详细版本)

    MyEclipse优化设置由于自己需要,在网上查了相关资料,现在总结如下: 本优化方法较全,希望能帮助到需要的人... 第一步: 取消自动validation validation有一堆,什么xml. ...

  2. 关联与下钻:快速定位MySQL性能瓶颈的制胜手段

    本文根据DBAplus社群[2018年1月6日北京开源与架构技术沙龙]现场演讲内容整理而成. 讲师介绍 李季鹏 新炬网络数据库专家 专注于MySQL数据库性能管理及相关解决方案,目前主要从事MySQL ...

  3. Java-控制台传递参数

    今天组长叫我把所有的参数(写死的),用控制器输入,使其变成可变的. ------我的程序是需要读取文件的,控制台输入即,是文件放在哪我都可以读取. 比如我需要读取的demo.txt文件在D盘根目录下, ...

  4. [Spark Core] Spark Shell 实现 Word Count

    0. 说明 在 Spark Shell 实现 Word Count RDD (Resilient Distributed dataset), 弹性分布式数据集. 示意图 1. 实现 1.1 分步实现 ...

  5. 读高性能JavaScript编程 第二章 让我知道了代码为什么要这样写

    代码为什么要这样写? function initUI(){ var doc = document, bd = doc.body, links = doc.getElementsByTagName_r( ...

  6. vc使用jsoncpp头文件冲突问题

    编译时出现 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xdebug(32) : warning C4229: ...

  7. Spring Boot 扩展点应用之工厂加载机制

    Spring 工厂加载机制,即 Spring Factories Loader,核心逻辑是使用 SpringFactoriesLoader 加载由用户实现的类,并配置在约定好的META-INF/spr ...

  8. BZOJ3673/3674:可持久化并查集

    Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0& ...

  9. text/html & text/plain的区别

    需要了解的概念 Content-Type:用于定义用户的浏览器或相关设备如何显示将要加载的数据,或者如何处理将要加载的数据 MIME:MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型 ...

  10. Scala学习之路 (十)Scala的Actor

    一.Scala中的并发编程 1.Java中的并发编程 ①Java中的并发编程基本上满足了事件之间相互独立,但是事件能够同时发生的场景的需要. ②Java中的并发编程是基于共享数据和加锁的一种机制,即会 ...