百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

OpenDaylight源码解析及入门实战——1.1章节

mhr18 2025-01-29 16:57 50 浏览 0 评论

环境搭建,运行官方Demo

一、 官方文档和源码地址

我不喜欢扯一堆废话,所以我们直接进入主题,先将ODL的生产环境搭建起来,能够正常运行。这对初学者是非常重要的,初学者对一门技术刚刚入门的时候会感到很迷茫不知道如何去掌握一门技术最主要的原因是不知道这门技术如何运行起来?有哪些功能?当能够将生产环境运行起来,新手就能先确认总体的方向是正确的,然后再去对这门技术的整体框架去熟悉,了解学习这门新技术需要哪些方面的知识,才能针对性的去找相关的资料和源码来深入了解它。这也是我多年自学各种开发技术领悟到的心得,毕竟我从事过3年半的iOS开发、4年Java后端开发+部分前端开发,再到现在的SDN开发,每次都相当于跨行了。现在市面上很多的书籍都是开篇先教你一大堆的基础语法等等乱七八糟的东西,你翻了半本书,都快腻了还不知道如何将Demo运行起来。

ODL的官方网站如下(友情提示ODL的官网由于国内一些和谐原因可能无法打开,而且ODL相关的资料百度上基本没有):

https://www.opendaylight.org/

ODL是开源项目,源码都放在github上面。

https://github.com/opendaylight

在ODL的官网上有开发者文档,从首页进去就能看到

点击右下角可以选择不同版本的文档,因为ODL各个版本间的差异性比较大,所以文档差异也比较大,不过由于官方文档很简陋,所以对学习帮助作用很有限。

本人采用的版本是铝版本的第三个官方发行版本(stable-aluminium SR3),具体的文档地址:
https://docs.opendaylight.org/en/stable-aluminium/index.html

这部分我们后续再看,先到github上将最终运行的源码下载下来,

github上的ODL仓库中有许多子项目,这些都是ODL的组件或者框架工具库,后续会详细说明,先找到distribution工程,这是最终打包成容器的工程,ODL是运行在karaf容器上的,后续会详细说明。

进入distribution子工程,网址:

https://github.com/opendaylight/integration-distribution

在版本列表中找到aluminium-sr3版本的源码下载下来。当然,你也可以到官网上把已经编译好的部署包下载下来进行部署,不过那对于开发人员没有任何意义,因为你一定会进行二次开发的,所以我就只介绍用源码编译的方案。

二、 搭建环境依赖组件

如下图所示,aluminium-sr3版本的环境依赖JDK11和maven3.5.2以上版本,这里不光是开发环境,也包含生产运行环境。都需要相同的配置。

JDK和MAVEN的安装以及环境变量的配置,百度一下就有很多,这里就不多加描述了,要注意的一点是maven 镜像库要选用华为的私服,因为华为自己有做SDN开发,华为私服上可以下载到完整的依赖包,其他镜像可能找不到部分依赖包。华为私服的配置如下,替换maven的settings.xml就行了。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">


false

huaweicloud

anonymous

devcloud



huaweicloud

*

https://mirrors.huaweicloud.com/repository/maven/



central

central

http://central

true

true

central

http://central

true

true


central





Windows开发环境

安装JDK11,以及配置环境变量

官网下载地址:

https://www.oracle.com/java/technologies/downloads/#java11-windows


因为是可执行文件,直接双击开始安装,然后一直点下一步,完成安装。

配置环境变量

右键“我的电脑”-> 点击“属性”-> 点击“高级系统设置”-> 选择“环境变量”。

新建系统变量JAVA_HOME,变量值就是安装路径,一般是C:\Program Files\Java\jdk-11.0.11

再编辑Path添加Java配置

安装配置Maven

Maven官方地址

https://maven.apache.org/download.cgi#


随便将Maven解压到一个空间,比如D:\apache-maven-3.8.5

然后设置“环境变量”

添加MAVEN_HOME

然后在Path中添加Maven配置

使用终端输入mvn -v命令查看Maven是否配置完成。

Linux生产环境

同样在Oracle官网上下载二进制的JDK11包,如下

把安装包上传到linux服务器你要安装的位置,解压

tar -zxvf jdk-11_linux-x64_bin.tar.gz

配置环境变量,命令

vi /etc/profile

在文件末尾添加以下内容,

#java environment

export JAVA_HOME=/www/server/java/jdk-11.0.7

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

更新配置文件

source /etc/profile

验证是否成功

java -version


安装配置Maven

同样将Maven的安装包上传到linux服务器你要安装的位置,解压

tar -zxvf apache-maven-3.8.5-bin.tar.gz

配置环境变量,命令

vi /etc/profile

在文件末尾添加以下内容,

#maven environment

export MAVEN_HOME=/www/server/maven/apache-maven-3.8.5

export PATH=$PATH:$MAVEN_HOME/bin

更新配置文件

source /etc/profile

验证是否成功

mvn -version


三、 编译Distribution工程

使用IDE打开Distribution工程,如下图所示,

使用maven进行编译,设置maven编译配置如下,

1.编译目标选择工程根目录

2.编译参数是

clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true


这里详细说明一下-Dmaven.test.skip=true这个配置,这个配置是让工程不要编译运行单元测试test里面的代码,-DskipTests这个配置只是跳过单元测试的运行,但是单元测试的代码还是要编译,ODL工程要是编译单元测试代码会消耗很多时间,所以我们正式打包编译的时候就不要去编译单元测试的代码。

3.maven版本选择自己安装的版本,settings配置选择华为镜像。

4. JDK选择11版本

编译成功后,会在karaf -> target 目录下面生成karaf-0.13.3.tar.gz和karaf-0.13.3.zip两个压缩包,这两个压缩包就是最终拿到生成环境部署的karaf容器。两个包内容是相同的,只是压缩格式不同,可以自己选择不同格式的压缩包。自己开发的模块最终也是要集成到distribution工程中,编译打包之后也是用这个压缩包部署到生产环境中运行。(0.13.3是aluminium-sr3的数字化版本,aluminium的版本是从0.13.1~0.13.4)

四、 运行Karaf容器

将karaf-0.13.3.tar.gz复制到Linux服务器的任意目录上,这里放在/opt目录下面,使用命令tar -xf karaf-0.13.3.tar.gz解压到当前目录下。可以看到解压结果出行karaf-0.13.3目录。

进入解压后的目录,并进入bin目录,如下图所示。


这里先说明四个重要的运行脚本,其他的目录和文件的作用在第三章会有详细的说明。

karaf脚本:在开启的终端窗口运行karaf容器,执行命令 ./karaf

start脚本:在后台运行karaf容器,执行命令 ./start

stop脚本:关闭在后台运行的karaf容器,与start脚本配置使用,执行命令 ./stop

client脚本:当karaf容器在后台运行时,通过client脚本进入karaf容器的操作界面,执行命令 ./client


执行karaf脚本之后启动karaf容器结果如下图所示(当执行start脚本在后台运行karaf容器的情况下使用client脚本也会进入相同的界面):

由于karaf脚本是在当前终端窗口运行karaf容器,所以当使用ctrl+d快捷键,或者输入system:shutdown或者logout命令之后都能关闭karaf容器。但是如果是client脚本进入的操作界面使用ctrl+d快捷键和logout命令只会退出当前client的操作界面,只有使用system:shutdown命令才能关闭karaf容器。

五、 安装Bundle组件

在karaf的操作界面输入feature:list命令回车后,就能显示出当前karaf容器中带有的Bundle组件,如下图所示:

odl的karaf容器在打包的时候已经将odl官方提供的许多Bundle组件打包到karaf容器中了,本书后续统称这样的karaf容器为ODL容器,在上图中可以看到这些组件的状态都是Uninstalled的,我们需要用命令去安装启动这些Bundle组件,我们先以ODL官方提供的NetConf组件为例。

我们先使用feature:list |grep netconf命令过滤出ODL容器中已经带有的NetConf组件,如下图所示,都是Uninstall状态。

安装NetConf相关Bundle组件:

feature:install odl-netconf-connector-all

feature:install odl-netconf-topology

feature:install odl-mdsal-apidocs

feature:install odl-netconf-callhome-ssh

feature:install odl-restconf


这时候再查看一下NetConf相关的Bundle组件,就可以看到组件的状态已经变成Started了。

访问swagger界面:http://localhost:8181/apidoc/explorer/index.html

输入账号密码: admin/admin

ODL容器有自带Swagger-UI组件可以让你测试面向北向开放的API接口。

到这里为止,ODL的容器已经成功运行起来了,新手在入门的时候必须要按照正确的方法把ODL容器运行起来。这样你才能确认自己学习的方向是正确的,也才能有信心学习后面的知识,也能证明我不是在忽悠读者骗钱。

相关推荐

SQL入门知识篇(sql入门新手教程视频)

一、什么是数据库?什么是SQL?1、数据库:存放数据,可以很多人一起使用2、关系数据库:多张表+各表之间的关系3、一张表需要包含列、列名、行4、主键:一列(或一组列),其值能够唯一区分表中的每个行。5...

postgresql实现跨库查询-dblink的妙用

技术导语:用惯了oracle的dblink,转战postgresql,会一时摸不着头脑。本期就重点详细讲解postgresql如何安装dblink模块及如何使用dblink实现跨库查询。安装cont...

Oracle VM VirtualBox虚拟机软件(oracle vm virtualbox win10)

OracleVMVirtualBox是一款完全免费的虚拟机软件,下载银行有提供下载,软件支持安装windows、linux等多个操作系统,让用户可以在一台设备上实现多个操作系统的操作。同时软件有着...

开源 SPL 轻松应对 T+0(开源srs)

T+0问题T+0查询是指实时数据查询,数据查询统计时将涉及到最新产生的数据。在数据量不大时,T+0很容易完成,直接基于生产数据库查询就可以了。但是,当数据量积累到一定程度时,在生产库中进行大数据...

中小企业佳选正睿ZI1TS4-4536服务器评测

随着科技的不断发展,各行各业对于数据使用越加频繁,同时针对服务器的选择方面也就越来越多样化和细分化。那么对于我们用户来说,如何选择符合自身业务需求和最优性价比的产品呢?笔者将通过刚刚购买的这台服务器的...

MFC转QT:Qt基础知识(mfc和qt的区别)

1.Qt框架概述Qt的历史和版本Qt是一个跨平台的C++应用程序开发框架,由挪威公司Trolltech(现为QtCompany)于1991年创建。Qt的发展历程:1991年:Qt项目启动1995年...

数据库,QSqlTableModel(数据库有哪些)

QMYSQL——mysqlQSQLITE——sqliteQOICQ——orcale所需头文件.pro增加sql#include<QSqlDatabase>#include<Q...

python通过oledb连接dbf数据库(python连接jdbc)

起因:因为工作需要,需要读取dbf文件和系统数据中数据进行校对,因为知道dbf文件可以用sql查询,所以想能不能像mysql/oracle那样连接,再调用执行sql方法,通过一系列百度,尝试,最终通过...

Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库)

在VBA(VisualBasicforApplications)中使用数据库(如Access、SQLServer、MySQL等)具有以下优点,适用于需要高效数据管理和复杂业务逻辑的场景:1....

Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)

以下是常见数据库软件的详细配置步骤,涵盖安装、驱动配置、服务启动及基本设置,确保VBA能够顺利连接:一、MicrosoftAccess适用场景:小型本地数据库,无需独立服务。配置步骤:安装Acces...

Windows Docker 安装(docker安装windows容器)

Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的L...

Windows下安装Ubuntu虚拟机方法(windows下安装ubuntu20)

在Windows下安装Ubuntu虚拟机。选择使OracleVMVirtualBox安装Ubuntu虚拟机。1.下载和安装OracleVMVirtualBox:访问OracleVMVir...

java入门教程1 - 安装和配置(win和linux)

windows安装和配置安装javahttps://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html目前大部分项目的...

Centos7 安装Tomcat8服务及配置jdk1.8教程

1、下载jdk1.8压缩包下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmltom...

全网最完整的免费java教程讲义(一)——java配置和安装

一,安装Java1)安装JDK要学习和使用java,首先需要安装JDK(JavaDevelopemntKit),相当于java安装包。Java的下载页在甲骨文官网上:https://www.or...

取消回复欢迎 发表评论: