OpenStack与OpenDaylight的对接过程

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

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

对接必须确认opendaylight中feature:git

odl-netvirt-openstackgithub

已安装sql

 

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

在控制节点上进行以下操做:网络

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

nova listtcp

 

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}这个值修改成odlip地址

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

 

 

此时opendaylightopen stack已经对接完成,能够正常创建虚拟机了

 

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

相关文章
相关标签/搜索