最近在做一个sdn(Software Defined Network)相关的项目,需要用到一个开源的SDN软件opendaylight。越做越发现网上的文档真的更新得很慢。所以这里简单记录以下搭建的过程,也方便有需要的小伙伴参考
1. 基本环境
- 虚拟机软件:VirtualBox 5.1.26 r117224
- 虚拟机系统:ubuntu-16.04.2-server-amd64
- JDK版本: Oracle 8u144
- ODL版本: Opendaylight Boron SR3
2. 虚拟机配置
虚拟机软件可以任意选,其实我一开始是在mac OS下使用Parallel Desktop来安装的。但是考虑到尽量和团队的环境保持一致,以避免因环境差异带来的Bug,所以使用VirtualBox这款Oracle的开源软件。它可以在windows、linux、mac OS下运行。
虚拟机系统选择Linux的,因为要做网络相关的开发。我这里选择自己比较熟悉的ubuntu。至于为什么选择server版本而不是desktop版本,是因为我并不需要desktop版本的很多功能(例如桌面等等),这样当我开多个虚拟机的时候可以比较节省资源(不用看着虚拟机界面一卡一卡的)。另一方面是为了锻炼自己linux的实操经验,毕竟真实生产环境下,多数也是用的server版本而不是桌面版本。
安装系统的过程不再赘述。这里提一下设置主机到虚拟机的端口转发。
2.1 虚拟机ssh端口转发
使用ssh的原因是有时候我们可以直接远程登陆到虚拟机操作,以及方便使用scp复制一些东西到server版本的虚拟机上面去。另外,由于没有图形界面,貌似VirualBox的剪切板并不能使用。使用ssh的话能比较方便地从本地的terminal去复制粘贴文本。
我这里的odl虚拟机设置了两个虚拟网卡,分别对应两种连接方式NAt
ip:10.0.2.15
用于访问外网HOST-ONLY
ip:192.168.56.103
用于主机和虚拟机间的通信
如果我们使用NAT方式作为虚拟机连接网络的方式,那么虚拟机相当于我们内网的一台机器,我们想要连接到这台内网的机器,就需要通过映射的端口来访问。设置--网络--高级--端口转发
然后添加端口映射,22是虚拟机的ssh端口
这样我就可以使用putty访问本地的2222端口来ssh到虚拟机的上面了
2.2 配置Java环境
可以使用apt-get安装。由于下载速度比较慢,我这里采用的时候自己下载好jdk安装包之后放在了/opt目录下面
ubuntu@odl:/opt$ ll
total 181188
drwxr-xr-x 3 root root 4096 Aug 5 17:37 ./
drwxr-xr-x 23 root root 4096 Aug 6 20:06 ../
drwxr-xr-x 8 uucp 143 4096 Jul 12 19:41 jdk1.8.0_141/
解压缩
ubuntu@odl:/opt$ tar -zxvf jdk1.8.0_141/
配置JDK以及JRE环境,编辑/etc/profile
ubuntu@odl:/opt$ sudo vim /etc/profile
追加内容
export JAVA_HOME=/opt/jdk1.8.0_141
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
检测是否配置成功
ubuntu@odl:/opt$ source /etc/profile
ubuntu@odl:/opt$ java
3. 下载安装Opendaylight
3.1 下载源码
在opendaylight downloads-and-documentation,你可以找到Opendaylight的各个版本的下载地址以及对用的文档相关连接。
选择PreBuild Tar或者Zip下载即可。由于项目需要,我选择的是Boron-SR3
版本的。
下载速度过慢的话,可考虑科学上网或者先wget到国外的vps后,再下回到本地。
3.2 安装及启动服务
解压下载出来的源码
ubuntu@odl:~$ tar -zxvf distribution-karaf-0.5.3-Boron-SR3/
启动服务
ubuntu@odl:~$ cd distribution-karaf-0.5.3-Boron-SR3/bin/
ubuntu@odl:~/distribution-karaf-0.5.3-Boron-SR3/bin$ ./karaf
稍等一会,如果启动成功,我们可以看到这么一个界面
3.3 ODL与karaf
Opendaylight是基于karaf开发的。如果想要在ODL上进行开发的话,可以了解一下karaf、maven、OSGI等名词,这些能帮助你理解ODL的开发架构。当然刚接触的时候可以暂时略过。
3.4 安装features
在这个交互界面的任何位置,可以通过按tab来查看提示,通过--help
来查看帮助。
例如
feature:install --help
你就可以看到安装features的语法。
更加具体的安装过程,可以在对应版本的Installation Guide里面找到
各个features的描述也可以在Installation Guide里面找到。
我们可以先看看默认情况下安装了哪些feature
opendaylight-user@root>feature:list -i
features有很多,这里我们可以使用grep查找我们需要的feautre,例如我们需要查找ovsdb
相关的feature
opendaylight-user@root>feature:list |grep ovsdb
网上有很多教程都是给你列出了一大堆feature让你去安装。刚开始学习的话可以这么做。但我个人来说的话并不是很喜欢这种做法,因为很多我并不知道哪些feature是做什么用的。(尽管这能避免一些缺少feature而造成的Bug)。而且当安装了很多feature之后,启动和关闭karaf服务都变得奇慢无比。
个人的建议是,参考Installation Guide中feature的功能描述,来安装自己需要的。
作为简单尝试,我们可以先安装一些组件
opendaylight的feature都是以odl开头的l2switch
这个feature用于2层网络流量的转发dlux
这个feature主要提供了Opendaylight的图形界面
Feature Name | Feature Description | Karaf feature name | Compatibility |
---|---|---|---|
DLUX | Provides an intuitive graphical user interface for OpenDaylight | odl-dluxapps-applications | all |
L2 Switch | Provides L2 (Ethernet) forwarding across connected OpenFlow switches and support for host tracking | odl-l2switch-switch-ui | self+all |
opendaylight-user@root>feature:install odl-l2switch-all odl-dlux-all
安装完成之后,可以在浏览器中访问
http://<opendaylight-ip>:8181/index.html
查看opendaylight的用户界面。
这里注意将opendaylight-ip换成你自己的opendaylight虚拟机的ip,例如我这就是
http://192.168.56.103:8181/index.html
初始登陆账户和密码都是admin
登陆成功后的界面:
3.5 删除feature
opendaylight-user@root> feature:uninstall feature-name
以下这句话来自karaf文档
Normally Karaf remembers the features and bundles you installed and started. To reset Karaf into a clean state, just delete the data directory when Karaf is not running.
通常情况下Karaf会记得你安装和启用的的features和bundles。想要设置karaf到干净的状态,只需要在Karaf没有运行的状态下,删除data目录。
如果你安装了很多很多feature,如果要全部删除的话,一个个打feature名称会很麻烦。这时候你可以删除odl目录下的data文件夹,然后在执行karaf时加上clean选项。
ubuntu@odl:~/distribution-karaf-0.5.3-Boron-SR3$ rm -r data/
ubuntu@odl:~/distribution-karaf-0.5.3-Boron-SR3$ cd bin/
ubuntu@odl:~/distribution-karaf-0.5.3-Boron-SR3/bin$ ./karaf clean
4. 参考连接
- opendaylights downloads-and-documentation
- opendaylight docs:Installing OpenDaylight
- opendaylight docs:karaf_features
- CSDN:在windows下安装OpenDaylight的Helium(氦)版本
- CSDN:OpenDayLight基本环境搭建
除另有声明外,本博客文章均采用 知识共享(Creative Commons) 署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 进行许可。