OpenStack与OpenDaylight的对接过程

由于项目中需要使用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
【OpenStack与OpenDaylight的对接过程】
5.openstack启用odl控制(官方文档未添加这一命令,但是必须运行,否则neutron仍然会使用openvswitch进行网络组建,导致虚拟机无法启动)
neutron-odl-ovs-hostconfig --datapath_type=system


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

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


转载于:https://www.cnblogs.com/sunroad/p/10659991.html

    推荐阅读