Ubuntu主机 首先连接虚拟机 上传安装包,解压缩并进入目录中,启动控制台 root@guest-virtual-machine:/home/guest# tar -zxvf distribution-karaf -0.3.0-Lithium.tar.gz root@guest-virtual-machine:/home/guest# cd distribution-karaf-0.3.0-Lithium //启动一 /bin/karaf //启动二(后台运行) root@guest-virtual-machine:/home/guest/distribution-karaf-0.3.0-Lithium# . /bin/start root@guest-virtual-machine:/home/guest/distribution-karaf-0.3.0-Lithium# . /bin/karaf clean opendaylight-user@root>feature:list -i 查看已安装组件,确认已卸载
氮版本的主要特点是聚焦在Karaf 4的实现,OpenDaylight组件使得用户能够选择其SDN控制器支持的协议和服务。 ODL依赖于与Karaf部分相互作用的第三方特性,但是在氮版本发布之前,它不具备Karaf的安全性功能 加速部署的依赖映射也使得跟踪、隔离和发现故障和错误变得更加容易。 迁移到Karaf 4的另一个好处是它简化了新特性的集成。它通过要求所有特性的依赖声明,以及给定特性的所有bundle,作为打包过程的一部分。 从经验来看,Karaf项目和OpenDaylight意识到这种方式并不是100%可靠的。因此,氮版本着重于改进将模块迁移到Karaf 4的依赖关系。 除了Karaf 4,OpenDaylight做了大量的工作以改进可扩展性和集群能力的健壮性。此外,在组成OpenDaylight的各个组件都有了小幅提升并且增加了Bug修复功能。
6、编译成功之后进入example\karaf\target\assembly\bin,找到karaf,运行karaf启动控制器。 ? ? 10、上述过程编译都ok,代码编译没有问题,将整个工程放到ubuntu中,重新编译,生成可执行文件karaf。 ? 模块功能测试 1、编译ubuntu中的example,找到example/karaf/target/assembly/bin下的karaf文件,运行karaf。 ? 2、启动karaf。 ? 验证模块功能 1、将example模块放入distribution-karaf-0.3.3-Lithium-SR3.tar.gz解压的文件夹对应的位置,运行并安装example的feature。
这就是为什么我们从官网下载下来的odl控制器二进制文件的名字为distribution-karaf-xx-xx,比如distribution-karaf-0.3.3-Lithium-SR3.tar.gz 7、在/distribution/distributions/karaf/target下可以看到以下文件 assembly distribution-karaf-0.3.3-Lithium-SR3.tar.gz distribution-karaf-0.3.3-Lithium-SR3.zip assembly 目录下有karaf文件,可以直接运行启动odl控制器, distribution-karaf-0.3.3 -Lithium-SR3.tar.gz是采用tar方式打包的odl控制器二进制文件 distribution-karaf-0.3.3-Lithium-SR3.zip是采用zip方式打包的odl控制器二进制文件 测试验证 1、将distribution-karaf-0.3.3-Lithium-SR3.zip复制到安装好jdk环境的虚拟机,解压运行./karaf ?
SUCCESS [02:18 min] [INFO] hello2-karaf ....................................... 对工程进行测试 执行~/work/odl/hello2/karaf/target/assembly/bin/karaf 5、将hello2集成到ODL发行版:复制文件 本人采用的发行版为OpenDaylight Lithium SR3,解压后位于~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/,后文简称该路径为。 /system$ mkdir -p org/opendaylight/hello2 进入hello2目录: sdn@sdn100:~/work/odl/distribution-karaf-0.3.3- : ~/work/odl/distribution-karaf-0.3.3-Lithium-SR3/bin/karaf 记得首先执行的是安装odl-mdsal-clustering,再安装其他特性: feature
在启动karaf/ONOS命令行界面以后,直接用feature:install加上名字,即可安装此应用。 然后,编辑apps/pom.xml,在文件中以形式包含该项目: ? 2.3 在karaf中注册该应用 Karaf在运行时若要部署该应用module,需要名为feature.xml的描述性文件,编辑 ${ONOS_ROOT}/features/features.xml: 3.1 注册Karaf,使其自动加载 karaf的模块加载机制需要几个annotations,即注解,去注册。 静态启动就是修改karaf的启动配置文件。 该文件路径为${KARAF_ROOT}/etc/org.apache.karaf.features.cfg,直接将onos-app-ifwd字样缀到featuresBoot变量的尾部即可。
/src/ cli目录是Carbon版本里新出现的目录,它用于方便快捷地开发Karaf cli命令。 api中主要是定义Karaf命令方法签名和Javadoc。在impl中,我们可以利用Java Annotation快速的定义了命令的格式,快速获得命令解析功能,以及实现相应命令对应的输出。 目录结构以及向运行中的Karaf载入外部Kar包 OpenDaylight Karaf的目录包含以下几个部分,具体每个部分的配置选项的含义,可以直接进入对应文件夹,查看对应文件的注释部分: /bin: =\ file:${karaf.home}/${karaf.default.repository}@id=system.repository@snapshots,\ file:${karaf.data} 启动karaf,并在karaf中执行以下命令,将位于helloworld/features/target下的kar包安装到正在运行的OpenDaylight控制器上。
echo "========================INSTALL ONOS=======================" # Download and unzip apache-karaf Applications else mkdir /root/Applications cd /root/Applications fi if [ -f apache-karaf /karaf/3.0.2/apache-karaf-3.0.2.tar.gz tar -xzf apache-karaf-3.0.2.tar.gz fi # Download =/root/Applications/apache-karaf-3.0.2" >> /etc/profile source /etc/profile source $ONOS_ROOT 需要编辑$KARAF_ROOT/etc/org.apache.karaf.features.cfg文件,脚本中即为/root/Applications/apache-karaf-3.0.2/etc/org.apache.karaf.features.cfg
我跟踪了Karaf的启动过程,多次尝试改动,摸索了一段时间,还是没能弄清楚缘由,还请了解的朋友们指教,非常感谢! 于是我想找到Karaf是如何找到我们的模块的,我从onos-karaf入口开始,到onos-setup-karaf,再到karaf/bin/karaf,有点眼晕,没有找到什么线索。 另外只知道karaf/etc/org.apache.karaf.features.cfg有大仓库的位置信息,可是里头跟onos/feature/feature.xml是一样的,里头没有任何onos/apps ,估计也跟Karaf寻找仓库、模块的方法有关。 ,ONOS启动脚本:先配置好karaf环境,再启动karaf本体: onos-setup-karaf,配置环境,将默认装载的模块全部准备好,舞场后台Staging就位,只给大家展示熟悉的部分好啦:
5、编译成功在odl-1.0.0/distribution/distributions/karaf/target得到 ? 6、在assembly文件夹中是编译出来的控制器文件,可以找到bin中的karaf运行 7、另外编译过程还打包了distribution-karaf-0.3.3-Lithium-SR3.tar.gz和distribution-karaf 可以将distribution-karaf-0.3.3-Lithium-SR3.tar.gz复制到其他jvm环境解压运行。 ? 在odl控制器中测试验证模块功能 1、本例中将distribution-karaf-0.3.3-Lithium-SR3.tar.gz文件复制到另外一台vm,解压并运行。
/0.3.0-Lithium/distribution-karaf-0.3.0-Lithium.zip Lithium安装 OpenDaylight编译和运行及模块使用与Helium氦版本没有多大变化。 主要还是通过karaf容器启动运行。 下载Lithium后,解压文件: 123 # unzip distribution-karaf-0.2.3-Helium-SR3.zip# cd distribution-karaf-0.3.0-Lithium /# cd bin 运行karaf: 1 # . /karaf ?
第二件事是为Apache Karaf进行jclouds集成。 所以我开发了一个项目,使得在Karaf上安装jcloud非常简单,并且在blob商店中添加了第一条基本命令, Jclouds Karaf项目开始形成。 与此同时,我的一位朋友兼同事 Guillaume Nodet也开始了类似的工作,为Jclouds Karaf做贡献 。 然后,这让我感到震惊:“ 为什么我们不重复使用 Jclouds Karaf的工作 来建立一个通用的环境? 例如:从Whirr 0.8.0起,您可以将其安装到任何基于Karaf的环境中。所以你可以把它添加到cli中。
题目需求: 服务器IspSrv上的工作任务 在 IspSrv 上导入 OpenDayLight 软件包; 启动 OpenDayLight 的 karaf 程序,并安装如下组件: feature:install 实验压缩包获取: SDN环境压缩包 点击下载(提取码CJ6y) 点击查看视频部署 项目实施 上传文件: distribution-karaf-0.6.0-Carbon.zip mininet lrzsz -y root@IspSrv:~# ls -l 总用量 425160 -rw-r--r-- 1 root root 435235339 4月 12 2022 distribution-karaf 程序: root@IspSrv:~# apt install openjdk-8-jdk -y root@IspSrv:~# unzip distribution-karaf-0.6.0-Carbon.zip /distribution-karaf-0.6.0-Carbon/bin/karaf 注意:若不能执行则配置jdk环境变量 root@IspSrv:~# echo "export JAVA_HOME=/
实验 注:若命令以$ 开头,则代表这条命令是在shell中执行;若命令以karaf> 开头,则代表这条命令是在karaf中执行。 前提条件 1. $ unzip distribution-karaf-0.3.2-Lithium-SR2.zip $ cd distribution-karaf-0.3.2-Lithium-SR2 2.运行控制器 $ karaf> feature:install odl-mdsal-clustering odl-openflowplugin-flow-services odl-restconf-all 注:可以在karaf 4.安装Jolokia karaf> feature:install http karaf> bundle:install -s mvn:org.jolokia/jolokia-osgi/1.1.5 5 /karaf $ JAVA_MAX_MEM=4G JAVA_MAX_PERM_MEM=512m ./karaf $ JAVA_MAX_MEM=4G JAVA_MAX_PERM_MEM=512m .
/karaf(ODL的服务器端运行命令),系统默认加载的feature信息配置文件为当前目录的../etc/org.apache.karaf.features.cfg文件中: ? 其中,红色标记为加载的opendaylight的集成feature信息,上述文件对应: /home/sdn/opendaylight/distribution-karaf-0.6.4-Carbon/system /karaf的控制台下,使用 Feature:list | grep dlux 可以发现odl-dluxapps-cowin组件。 dlux-Modules-loader-resources下文件 ③是assets下image文件,需要将logo 文件放置在该目录 ④将dluxapps的新建的module cowin相关文件拷贝放置该目录 2.5 编译完成,并在karaf /karaf B:在控制台,查看dlux相关的feature 命令: feature:list | grep dlux 如下所示: ?
在data-integration\system\karaf\system\org\pentaho\pentaho-requirejs-osgi-manager\9.0.0.0-SNAPSHOT目录下将这段拷贝下来 在data-integration\system\karaf\system\pentaho\pentaho-karaf-features\9.0.0.0-SNAPSHOT目录下的文件中进行粘贴 ?
-Dkaraf.etc=etc/karaf-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties-Dkaraf.data vmoptions needed for Java9+## --add-reads=java.xml=java.logging# --add-exports=java.base/org.apache.karaf.specs.locator =java.xml,ALL-UNNAMED# --patch-module java.base=${KARAF_HOME}/lib/endorsed/org.apache.karaf.specs.locator -4.3.6.jar# --patch-module java.xml=${KARAF_HOME}/lib/endorsed/org.apache.karaf.specs.java.xml-4.3.6.
本文章的目的在于让读者明白: 1)如何将新建的application扩展为新的服务,以便其他服务或者应用可以调用它 2)如何将该application的功能扩展为Karaf命令行界面下的一个新命令 接下来,创建一个新的Karaf CLI命令来使用这个新的服务。该命令的动能是列出map的内容,并且可选地提供一个过滤参数,来过滤主机源的地址。 二、创建karaf的一个新命令 Karaf CLI命令定义在项目目录${ONOS_ROOT}/cli/之下。 2.3 注册这个command,使其能在karaf CLI下使用 接下来,我们需要编辑shell-config.xml文件,该文件位于${ONOS_ROOT}/cli/src/main/resources /OSGI-INF/blueprint/,其作用是告诉karaf有新的命令加入了。
第二件事是将Apache Karaf集成到JCloud上。 所以我开发了一个项目,使得在Karaf上安装JCloud非常简单,并且在Blob Store(微软的一种存储非机构化数据的技术)中添加了第一个基本命令,JClouds Karaf项目开始成形。 然后,这让我感到震惊:“ 为什么我们不继续JClouds Karaf的工作 来建立一个通用的CLI?” JClouds集成“ 开箱即用 ”,任何人都可以使用,而无需知道关于Karaf的任何内容,并且它既可以作为交互式Shell也可以作为CLI。由此看来,创建一个量身定制的Karaf似乎是一个好主意。 例如:从Whirr 0.8.0起,您可以将其安装到任何基于Karaf的环境中。所以你也可以把它添加到CLI中。
5、从官网下载发行版二进制odl控制器文件,传入ubuntu中,解压,找到distribution-karaf-0.3.3-Lithium-SR3/bin/karaf文件。 ? 解释下,karaf.bat文件是在windows环境的启动文件,而karaf是Linux环境下的启动文件,Odl控制器是支持在windows和Linux环境两种环境运行的,因为ODL控制器是运行在JVM 6、运行karaf,启动odl控制器。 ./karaf 可以看到运行界面如下 ?