OpenStack是一项开放源码的IaaS(Infrastructure as a Service)项目。OpenStack与OpenDaylight(以下简称ODL)高度融合,给SDN的网络虚拟化带来极大便利。搭建实验环境是SDN虚拟化研究的基础步骤。本文分别介绍实验环境构建前准备、ODL安装、OpenStack配置、虚拟网创建等四个部分,与大家分享交流。
OpenStack项目包含虚拟资源计算、存储、网络管理服务。OpenStack管理虚拟网,为租户提供虚拟化服务,如图1所示。
OpenStack可以通过ML2(Modular Layer 2)插件和ODL北向接口融合,ODL通过OVSDB南向插件管理OpenStack计算节点中的网络流。
图1:ODL与OpenStack架构图
一、在安装前准备
进入本实验前,确保您以安装好OpenStack环境,并确保实例间可以ping通。图2是我们用PC组建的物理实验环境,搭建的拓扑图和每台PC承担的角色及需要对应安装的组件环境,如图3所示。
1.1 OpenStack实验环境
OpenStack环境是基于ubuntu14.04使用juno版
controller节点(keystone,glance,nova,neutron-server,mysql)
network节点(dhcp-agent,l3-agent,metadata-agent,neutron-plugin-openvswitch-agent)
compute节点(nova-compute,neutron-plugin-openvswitch-agent)
storage节点(cinder-volume)
1.2 实验的物理环境
实验的物理环境
1.3 实验环境拓扑图
实验环境拓扑图
二、ODL安装
ODL的安装步骤可参考https://www.sdnlab.com/1931.html。本文亦给出详细的安装步骤。查看jdk版本,jdk版本不低于1.7.0。如未安装,自行安装。
本次实验采用的版本是distribution-karaf-0.3.3-Lithium-SR3.zip。下载ODL文件:
1 |
wget https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.3.3-Lithium-SR3/distribution-karaf-0.3.3-Lithium-SR3.tar.gz |
1 2 3 4 5 |
tar xvfz distribution-karaf-0.3.3-Lithium-SR3.tar.gz cd distribution-karaf-0.3.3-Lithium-SR3/ cd bin ./start ./client -u karaf |
1 |
feature:install odl-base-all odl-aaa-authn odl-restconf odl-nsf-all odl-adsal-northbound odl-mdsal-apidocs odlL-ovsdb-openstack odl-dlux-all |
若是OpenStack Liberty版本,则只需要安装以下依赖:
1 |
feature:install odl–ovsdb–openstack odl–dlux-core |
验证安装:在ODL安装节点中执行指令:
1 |
curl -u admin:admin http://ODL的ip地址:8080/controller/nb/v2/neutron/networks |
输出空的networks:
通过如下指令查看ODL的日志信息:
三、OpenStack配置
1.在命令行或者horizon中清除所有的实例、网络、路由器、端口,确保ODL对网络的完全控制。
命令行:
1 2 3 4 5 6 7 8 9 10 |
source admin-openrc.sh(管理员权限) nova list nova delete ID neutron port-list neutron port-delete ID neutron router-list neutron router-gateway-clear ID neutron router-delete ID neutron net-list neutron net-delete ID |
或Horizon:在浏览器中输入http://dashboard的安装IP地址/horizon/auth/login/
输入admin-openrc.sh中的用户名与密码。登入,删除拓扑中的所有实例、路由、网络、端口;
虚拟网拓扑图
以下指令输出都为空:
1 2 3 4 |
nova list neutron port-list neutron router-list neutron net-list |
停止neutron-server服务
1 |
service neutron-server stop |
2. 安装mechanism driver的ODL驱动包
1 2 |
git clone https://github.com/openstack/networking-ODL -b stable/liberty python setup.py install. |
或直接执行以下指令
1 2 |
apt-get install python-pip pip install networking_odl |
3. 配置网络节点与计算节点。
ODL完全控制openvswitch,卸载neutron-plugin-openvswitch-agent代理服务。
1 |
apt-get purge neutron-plugin-openvswitch-agent |
清空openvswitch数据,openvswitch重新启动。
1 2 3 4 5 |
service openvswitch-switch stop rm -rf /var/log/openvswitch/* rm -rf /etc/openvswitch/conf.db service openvswitch-switch start ovs-vsctl show |
在执行以下指令时,确保ODL启动,否则ovs不会生成br-int
1 |
ovs-vsctl set Open_vSwitch ID other_config={'local_ip'='IP'} |
ID为ovs-vsctl show 中显示的ID号
IP为网络节点与计算节点内部通信的IP,可通过 以下指令查看IP地址配置
1 |
vim /etc/neutron/plugins/ml2/ml2_conf.ini |
通过以下指令验证配置:
1 |
ovs-vsctl list Open_vSwitch |
以下两条指令只要在网络节点配置:
1 2 |
ovs-vsctl add-br br-ex ovs-vsctl add-port br-ex ethXX |
ethXX为外网网卡
在计算节点与网络节点配置,使openvswitch连接到控制器。
1 |
ovs-vsctl set-manager tcp:ODL的IP地址:6640 |
4.在所有节点(控制节点、网络节点、计算机节点)配置ML2 插件。
1 |
vim /etc/neutron/plugins/ml2/ml2_conf.ini |
在[ml2]标签中修改mechanism_drivers = openvswitch为mechanism_drivers = opendaylight。
并且增加标签[ml2_odl]如下代码
1 2 3 4 |
[ml2_odl] password = admin username = admin url = http://ODL的IP地址:8080/controller/nb/v2/neutron |
5.控制节点配置neutron 数据库。
删除neutron数据库,重新创建,并且同步数据库。
1 2 3 4 5 6 7 8 9 |
mysql -u root -p SHOW DATABASES; DROP DATABASE neutron; CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'PASSWORD'; exit; su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron |
重启neutron-server服务
1 |
service neutron-server start |
四、虚拟网创建
在horizon中创建虚拟网,也可在neutron-server所在的节点上执行指令。
验证安装:在ODL安装节点中执行以下指令
1 |
curl -u admin:admin http://ODL的ip地址:8080/controller/nb/v2/neutron/networks |
有以下网络创建的相关信息。
通过以上构建,OpenStack与ODL融合的实验环境,搭建完成。可以开始SDN网络虚拟化的研究之旅啦。
作者简介:高仁贵 福州大学数计学院计算机技术专业2016级硕士研究生,对SDN网络虚拟化的研究感兴趣。