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}這個值修改為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鏡像測試)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM