1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > OpenStack集成SDN控制器

OpenStack集成SDN控制器

时间:2023-01-11 14:31:20

相关推荐

OpenStack集成SDN控制器

文章目录

1、控制器介绍2、环境介绍2.1 硬件环境2.2 拓扑介绍3、安装控制器3.1 安装JDK环境3.2 安装Maven环境3.3 安装OpenDayLight(1)拷贝软件包到系统内,执行以下命令完成解压(2)进入目录准备安装(3)修改mvn的配置setting位置路径(4)启动OpenDayLight服务进程(5)开始以客户端方式连接4、配置OpenStack4.1 清除Neutron配置内容4.2 清除Neutron相关内容4.3 清除OVS数据库数据4.4 配置OpenvSwitch5、使用ODL5.1 访问Dashboard界面5.2 测试

1、控制器介绍

OpenDayLight是推出来的一个开源项目,参与者都是来自众多的设备厂商,其中就包括思科等网络设备巨头,IBM、微软等传统的硬件设备巨头,还包括BigSwitch等新兴网络设备厂商,以及Vmware等新兴IT软件厂商,这就说明SDN领域为业界的发展带来了更多的机会,是更多的参与者能够加入到SDN的研发和创新中;OpenDayLight开源项目就是和Linux基金会合作,目标是成为SDN架构中的核心组件,使用户能够减少网络的运营复杂度,扩展现有的网络架构的硬件生命期,同时还能支持SDN新业务和新能力的创新。

所谓SDN是一种新型网络架构。传统网络采用是分布式策略工作, 由设备制定转发策略,而SDN的核心思想这是控制和转发分离,将软件应用到网络控制中,并起到主导作用,而不是固定的模式的协议控制网络,SDN的目的是提高网络的可控性与可编程性,可以根据用户需求灵活的提供不同的质量等级服务。

2、环境介绍

2.1 硬件环境

系统最低要求: 2CPU 、4G内存

2.2 拓扑介绍

云平台具体安装拓扑如图:

搭建云平台搭建之前,首先配置好OpenDayLight的生产环境,安装完成之后,根据云计算基础架构平台的设计,在控制节点和计算节点完成相关模块的安装和配置,本次云平台的网络模式为Neutron Gre模式,同时Neutron的L3 agent服务和Neutron的DHCP均安装在Compute节点,如果需要采用OpenDayLight模式管理虚拟网络,那么需要在配置之前清空OpenvSwitch的相关配置,所以云实例的启动需要在完成OpenDayLight的前提下进行,具体的IP地址分配如下所示。

本次安装配置可以按照以下的步骤:

(1)在控制节点安装OpenDayLight控制软件,并完成控制器的配置。

(2)安装云计算平台,确定网络节点。

如果不确定网络节点可以通过neutron agent-list 查看,即存在DHCP和L3服务的节点为网络节点,以下网络节点的操作步骤在此节点进行。

(3)修改Ml2的插件的mechanism_ drivers类型

(4)清空OpenvSwitch的默认配置,交由OpenDayLight来监控。

(5)重新启动OpenvSwitch,正常完成Neutron的使用,Dashboard界面创建网络和云主机。

3、安装控制器

3.1 安装JDK环境

OpenDaylight的安装节点需要配置JDK的环境,安装提供的Java软件包jdk-7u71-linux-x64.tar.gz首先拷贝软件包到系统中,然后执行以下命令安装。[root@controller ~]# # tar -zxvf jdk-7u71-linux-x64.tar.gz -C /usr/local/修改环境变量添加如下内容编辑文件 /etc/profileexport JAVA_HOME=/usr/local/jdk1.7.0_71/export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar安装完成执行以下命令检测安装。执行环境变量[root@controller ~]# source /etc/profile[root@controller ~]# java -versionjava version "1.7.0_71"Java(TM) SE Runtime Environment (build 1.7.0_71-b14)Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

3.2 安装Maven环境

OpenDaylight的安装节点需要配置Maven的环境,安装提供的Maven软件包apache-maven-3.0.4.tar.gz[root@controller ~]# tar -zxvf apache-maven-3.0.4.tar.gz -C /usr/local/修改环境变量添加如下内容编辑文件 /etc/profileexport MAVEN_HOME=/usr/local/apache-maven-3.0.4/export PATH=${PATH}:${MAVEN_HOME}/bin安装完成执行以下命令检测安装。执行环境变量[root@controller ~]# source /etc/profile[root@controller ~]# mvn -vApache Maven 3.0.4 (r1232337; -01-17 16:44:56+0800)Maven home: /usr/local/apache-maven-3.0.4Java version: 1.7.0_71, vendor: Oracle CorporationJava home: /usr/local/jdk1.7.0_71/jreDefault locale: zh_CN, platform encoding: UTF-8OS name: "linux", version: "3.10.0-327.36.2.el7.x86_64", arch: "amd64", family: "unix"

3.3 安装OpenDayLight

(1)拷贝软件包到系统内,执行以下命令完成解压

将软件包解压到指定的目录下(目录需存在)

# tar -zxvf opendaylight.tar.gz -C /opt

(2)进入目录准备安装

# cd /opt/opendaylight/

(3)修改mvn的配置setting位置路径

编辑以下配置文件

vi +37 etc/org.ops4j.pax.url.mvn.cfg

将此段修改成

org.ops4j.pax.url.mvn.settings=/usr/local/apache-maven-3.0.4/conf/settings.xml

(4)启动OpenDayLight服务进程

# ./bin/start

确保存在进程后执行以下步骤,即确定 ps aux |grep opendaylight 存在进程。

(5)开始以客户端方式连接

需要在启动进程之后等待一段,否则会出现以下报错

Failed to get the session.

# ssh -p 8101 karaf@localhost

密码为karaf

登录成功如下图所示,此时我们继续配置OpenDayLight模块内容

Logging in as karaf

此时我们执行以下命令完成模块的安装

opendaylight-user@root> feature:install odl-ovsdb-openstack odl-dlux-core

通过以上命令我们可以安装OpenDayLight一个最基本的框架,目前只支持我们可以通过web界面简单的查看Neutron的分配情况,包括OpenvSwitch的网桥的分配的虚拟接口情况。

OpenDayLight提供的安装命令为feature:install然后加上安装的需要插件, odl-ovsdb-openstack为安装基于OpenvSwitch的的OpenStack功能, odl-dlux-core为安装DLUX功能,管理界面。

此时我们打开web界面均可以访问OpenDayLight界面。

打开方式http://主机IP:8181/index.html

默认用户名和密码均为admin。

至此,OpenDayLight环境安装完毕,下面开始配置OpenStack的Neutron服务和OpenvSwitch服务。

4、配置OpenStack

4.1 清除Neutron配置内容

由于是使用OpenDayLight来管理网络,所以节点的ovs-agent服务已经失去了意义,Neutron的相关API接口都是通过Neutron-Server来管理和处理,从而使用适合的驱动。那么在SDN的模式下,我们将Neutron的所有的请求都是转发给ODL来处理,ODL也是有着多种虚拟网络管理方式(OVSDB),在使用OVSDB之前我们需要在Neutron—server节点安装networking-odl软件包如下面所示。networking-odl.tar.gz[root@controller ~]# tar -zxvf networking-odl.tar.gz[root@controller ~]# cd networking-odl[root@controller networking-odl]# python setup.py install

4.2 清除Neutron相关内容

我们需要确保OpenStack网络状态是没有配置的,当使用OpenDaylight作为Neutron的后端时,,ODL开始接管Open vSwitch的配置。因此,有必要删除现有的OpenStack和OpenvSwitch配置。通过以下命令删除相关内容。(1)移除实例通过命令或者Dashboard界面完成# nova list# nova delete <name /id >(2)移除子路由器上子网接口通过命令或者Dashboard界面完成# neutron subnet-list# neutron router-list# neutron router-port-list <router name># neutron router-interface-delete <router name> <subnet ID or name>(3)移除网络子网、网络、路由器# neutron subnet-delete <subnet name># neutron net-list# neutron net-delete <net name># neutron router-delete <router name>(4)停止Neutron-server服务[root@controller ~]# systemctl stop neutron-server.service (5)停止OvS-agent所有节点停止Neutron-OpenvSwitch-agent服务,并将开机自启关闭。[root@controller ~]# systemctl stop neutron-openvswitch-agent.service [root@controller ~]# systemctl disable neutron-openvswitch-agent.service(6)节点停止服务# systemctl stop neutron-metadata-agent.service(所有节点)# systemctl stop neutron-dhcp-agent.service (网络节点)# systemctl stop neutron-l3-agent.service(网络节点)# systemctl stop neutron-lbaas-agent.service(网络节点)(7)删除Neutron数据库[root@controller ~]# mysql -uroot -p000000(数据库密码为000000)mysql> drop database neutron;mysql> create database neutron ;mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '000000';mysql> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '000000';mysql> exit(8)同步数据库# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron# neutron-db-manage --service lbaas upgrade head# neutron-db-manage --subproject neutron-fwaas upgrade head

4.3 清除OVS数据库数据

(1)配置OpenDaylight管理Open vSwitch在每个节点上清除已有的Open vSwitch配置。# systemctl stop openvswitch.service# rm -rfv /var/log/openvswitch/*# rm -rfv /etc/openvswitch/conf.db# systemctl start openvswitch.service(2)查看OVS数据[root@controller ~]# ovs-vsctl show 890ef6b7-8f58-41f3-a0cc-7591ddf1bb7bovs_version: "2.5.0"(3)配置Neutron ml2 Plugin修改两个节点的/etc/neutron/plugins/ml2/ml2_conf.ini配置文件,修改如下mechanism_drivers = opendaylight(4)添加ODL控制到ml2配置文件中在两个节点的/etc/neutron/plugins/ml2/ml2_conf.ini配置文件最后添加如下内容[ml2_odl]password = adminusername = adminurl = http://30.0.0.10:9090/controller/nb/v2/neutron(5)配置Gre模式控制节点、计算/网络节点openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers greopenstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types greopenstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_gre tunnel_id_ranges 1:1000openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini agent tunnel_types greopenstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs local_ip 30.0.0.10/30.0.0.20 (实际隧道地址)openstack-config --set /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs enable_tunneling True

4.4 配置OpenvSwitch

(1)配置OpenvSwitch local_ip控制节点# ovs-vsctl set Open_vSwitch c11a6e0a-761a-471f-a2a2-3c4ad1835c46 other_config={'local_ip'='30.0.0.10'}计算节点# ovs-vsctl set Open_vSwitch ac83d579-5891-4fc5-bad6-69a20b151728 other_config={'local_ip'='30.0.0.20'}注:ID为OpenvSwitch的ID,通过命令ovs-vsctl show查询(2)配置完毕后可以通过以下命令查看Open_vSwitch的详细信息# ovs-vsctl list Open_vSwitch控制节点[root@controller ~]# ovs-vsctl list Open_vSwitch_uuid: c11a6e0a-761a-471f-a2a2-3c4ad1835c46bridges : []cur_cfg : 1db_version: "7.4.0"external_ids : {system-id="d9e75022-cf94-4096-b8ed-2f8bc9459858"}manager_options: [8625e292-1a5f-4c61-a853-52ff3573c29f]next_cfg : 77other_config : {local_ip="30.0.0.10"}ovs_version : "2.1.3"ssl : []statistics: {}system_type : CentOSsystem_version: "6.5-Final"计算/网络节点[root@compute ~]# ovs-vsctl list Open_vSwitch_uuid: ac83d579-5891-4fc5-bad6-69a20b151728bridges :[]cur_cfg : 1db_version: "7.4.0"external_ids : {system-id="235037e4-ee77-4cc8-a9de-28068f6cada7"}manager_options: [b0f89092-d52b-4e32-9786-37d5bf348de1]next_cfg : 41other_config : {local_ip="30.0.0.20"}ovs_version : "2.1.3"ssl : []statistics: {}system_type : CentOSsystem_version: "6.5-Final"(3)设置所有节点的OpenvSwitch对应的SDN控制器OpenDayLight每个节点# ovs-vsctl set-manager tcp:30.0.0.10:6640执行完命令之后通过查看ovs的状态,可以看出br-int网桥已经创建成功[root@controller ~]# ovs-vsctl showc11a6e0a-761a-471f-a2a2-3c4ad1835c46Manager "tcp:30.0.0.10:6640"is_connected: trueBridge br-intController "tcp:30.0.0.10:6633"is_connected: truefail_mode: securePort br-intInterface br-intovs_version: "2.1.3"查看OVS的br-int端口的状态[root@controller ~]# ovs-ofctl dump-ports-desc br-int -OopenFlow13OFPST_PORT_DESC reply (OF1.3) (xid=0x2):LOCAL(br-int): addr:8a:8c:e5:f0:3d:4aconfig:PORT_DOWNstate:LINK_DOWNspeed: 0 Mbps now, 0 Mbps max查看br-int的流规则[root@controller ~]# ovs-ofctl dump-flows br-int -OopenFlow13OFPST_FLOW reply (OF1.3) (xid=0x2):cookie=0x0, duration=4902.037s, table=0, n_packets=0, n_bytes=0, send_flow_rem dl_type=0x88cc actions=CONTROLLER:65535cookie=0x0, duration=4901.183s, table=0, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:20cookie=0x0, duration=4900.681s, table=20, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:30cookie=0x0, duration=4900.177s, table=30, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:40cookie=0x0, duration=4899.675s, table=40, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:50cookie=0x0, duration=4899.170s, table=50, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:60cookie=0x0, duration=4898.664s, table=60, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:70cookie=0x0, duration=4898.159s, table=70, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:80cookie=0x0, duration=4897.655s, table=80, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:90cookie=0x0, duration=4897.150s, table=90, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:100cookie=0x0, duration=4896.645s, table=100, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=goto_table:110cookie=0x0, duration=4896.130s, table=110, n_packets=0, n_bytes=0, send_flow_rem priority=0 actions=drop(4)节点配置br-ex# ovs-vsctl add-br br-ex# ovs-vsctl add-port br-ex eth1(5)启动Neutron-server服务# systemctl start neutron-server.service(网络节点)(6)启动服务# systemctl start neutron-metadata-agent.service(所有节点)# systemctl start neutron-dhcp-agent.service (网络节点)# systemctl start neutron-l3-agent.service(网络节点)# systemctl start neutron-lbaas-agent.service(网络节点)(7)检查OpenDayLight通过curl命令检查返回状态[root@controller ~]# curl -u admin:admin http:// 30.0.0.10:9090/controller/nb/v2/neutron/networks{"networks" : [ ]查看返回结果,显示如上所示为正常。

5、使用ODL

5.1 访问Dashboard界面

创建Neutron的网络,创建子网和路由器

5.2 测试

我们在openstack controller节点查询 ovs的简单信息可以看出由opendaylight管理的网络流量如下:

[root@controller ~]# ovs-vsctl show09274dec-f169-48c5-98cb-3dcce1a04372Manager "tcp:172.24.13.10:6640"is_connected: trueBridge br-intController "tcp:172.24.13.10:6653"is_connected: truefail_mode: securePort "tape717856b-ec"Interface "tape717856b-ec"type: internalPort "tapa960c4a0-93"Interface "tapa960c4a0-93"type: internalPort br-intInterface br-inttype: internalPort "gre-172.24.13.20"Interface "gre-172.24.13.20"type: greoptions: {key=flow, local_ip="172.24.13.10", remote_ip="172.24.13.20"}Port "qr-448244f7-6e"Interface "qr-448244f7-6e"type: internalBridge br-exPort "enp10s0"Interface "enp10s0"Port "qg-e0566534-8d"Interface "qg-e0566534-8d"type: internalPort br-exInterface br-extype: internalovs_version: "2.5.0"我们可以通过在OpenDayLight终端命令可以查询网络情况[root@controller ~]# curl -u admin:admin http://30.0.0.10:9090/controller/nb/v2/neutron/networks{"networks" : [ {"id" : "e6d49962-ac82-472e-8334-d6e3cd1ebb85","name" : "ext","admin_state_up" : true,"shared" : false,"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e","router:external" : true,"provider:network_type" : "gre","provider:segmentation_id" : "1","status" : "ACTIVE","subnets" : [ "187c6453-d3df-4d2e-a7eb-66a130ccd969" ]}, {"id" : "c90cf500-c822-42bf-a54c-d14d8e4d7a0c","name" : "ext","admin_state_up" : true,"shared" : false,"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e","router:external" : true,"provider:network_type" : "gre","provider:segmentation_id" : "1","status" : "ACTIVE","subnets" : [ "d4f046a8-e8dd-491c-9b3a-7fad513436ea" ]}, {"id" : "0321d24c-c7f0-46d3-b249-aa16023ecc87","name" : "demo","admin_state_up" : true,"shared" : false,"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e","router:external" : false,"provider:network_type" : "gre","provider:segmentation_id" : "2","status" : "ACTIVE","subnets" : [ "6a654cb0-24de-4428-99bd-ac0d42cef318" ]}, {"id" : "598f43d7-265c-4060-85dd-46c33e4b81f8","name" : "192.168.60.0/24","admin_state_up" : true,"shared" : false,"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e","router:external" : true,"provider:network_type" : "gre","provider:segmentation_id" : "1","status" : "ACTIVE","subnets" : [ "ed93d0b0-715f-487a-b956-df5f4eb4f3e1" ]}, {"id" : "34d2a4b5-baee-4013-8997-61dbe338bb52","name" : "ext","admin_state_up" : true,"shared" : false,"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e","router:external" : true,"provider:network_type" : "gre","provider:segmentation_id" : "1","status" : "ACTIVE","subnets" : [ "85bbf6b9-08db-483b-af73-55bf7b6e90df" ]}, {"id" : "76fcc8a9-601f-49ea-b2e8-885ab589f65a","name" : "ext","admin_state_up" : true,"shared" : false,"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e","router:external" : true,"provider:network_type" : "gre","provider:segmentation_id" : "1","status" : "ACTIVE","subnets" : [ "bf8b654d-7bee-4452-a329-81a6053e7a43" ]}, {"id" : "b7f1848c-6cf8-4113-803a-87cf91f70336","name" : "admin","admin_state_up" : true,"shared" : false,"tenant_id" : "66f53f0adfdb49e2b47d87357f49441e","router:external" : true,"provider:network_type" : "gre","provider:segmentation_id" : "1","status" : "ACTIVE","subnets" : [ "970f7639-ae07-4677-b8ad-9da4e1e0d5df" ]} ]以上这就是我们简单的使用ODL的管理流量的功能来处理Neutron的网络分配情况的一个实验测试。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。