笔者近日在进行SDN东西向协议相关实验,需要使用ONOS控制器集群测试有关数据,本文记录了笔者使用ONOS1.3.0版本搭建控制器集群的过程。
1.环境准备与实验内容
本次集群安装准备了四台虚拟机:
- VM1:oxp@192.168.0.71
- VM2:oxp@192.168.0.72
- VM3:oxp@192.168.0.73
- VM4:onos@192.168.0.74
注意:在将要部署为集群的VM1、VM2、VM3上使用了相同的组名oxp,相同的用户名oxp(组名和用户名可不同),这样方便进行集群部署,减少配置和打包操作!
系统要求:
- Ubuntu Server 14.04 LTS 64-bit
- 2GB or more RAM
- 2 or more processors
主要内容:
在VM4上安装ONOS,并向VM1-VM3部署ONOS,形成VM1-VM2-VM3的ONOS集群。并使用Mininet构建的虚拟网络与集群连接,进行相关实验。
2.在VM4上使用源码安装ONOS1.3.0
参照文章《ubuntu14.04下源码安装ONOS1.3.0》进行。
3.集群部署前的准备工作
3.1设置免密sudo、生成SSH密钥
需要在VM1-VM3上设置sudo,在VM1-VM4上生成SSH密钥,分别执行下面步骤:
首先,在VM1-VM3上执行:
1 |
$ sudo visudo |
编辑配置,在文件末尾添加行:
1 |
user_name ALL=(ALL) NOPASSWD:ALL |
在user_name为用户名,本实验中为oxp。Ctrl+O,Ctrl+X保存退出。
其次,在VM1-VM4上进行:
1 |
$ ssh-keygen -t rsa |
3.2使用cell配置集群参数
1 2 |
$ cd cd ~/onos/tools/test/cells $ vim triple.test |
triple.test是本次实验新建的配置文件,编辑如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#ONOS Controller VM instances 1,2,3 and a Mininet VM export OC1="192.168.0.71" export OC2="192.168.0.72" export OC3="192.168.0.73" export OCN="192.168.0.74" # Mininet VM # for node clustering export ONOS_NIC=”192.168.0.*” #ONOS APPS to load export ONOS_APPS="drivers,openflow,fwd,proxyarp,mobility" # ONOS features to load export ONOS_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-openflow,onos-app-fwd,onos-app-mobility,onos-app-tvue" #VM1-VM3 USER && GROUP export ONOS_USER="oxp" export ONOS_GROUP="oxp" $ cell triple.test #应用triple.test中的配置参数,这一步一定要进行!!! |
注意:cell文件中最后两行的ONOS_USER和ONOS_GROUP的值分别填写VM1-3的用户名和组名,这里如果与VM1-3的用户名和组名不对应将无法部署!
3.3建立VM4到VM1-VM3的SSH免密登录
这里以建立VM4到VM1的SSH的免密登录为例:
1 2 |
$ onos-push-keys $OC1 #OC1的值如triple.test文件中所设定 oxp@192.168.0.71's password: #这里会要求输入密码,即为SSH登录192.168.0.71的密码 |
按照上面操作依次建立VM4到VM2、VM3的SSH免密登录。
4.部署集群
4.1打包ONOS
这一步将VM4中安装好的ONOS按照cell的配置打包,打包后的文件可以用来部署到其他机器。
1 |
$ onos-package |
打包结果如下:
1 |
-rw-rw-r-- 1 onos onos 96M Nov 5 14:52 /tmp/onos-1.3.0.onos.tar.gz |
4.2向集群中的机器部署ONOS
这一步将刚才在VM4上打包好的ONOS部署到VM1-VM3三台虚拟机上
以部署到VM1为例,第一次部署时可能会提示输入密码,此时输入SSH到VM1的密码即可:
1 |
$ onos-install -f $OC1 #部署到VM1,-f表示强制安装;如果VM1上已经有ONOS在,可以加上此参数 |
返回结果:
1 |
onos start/running, process 23232 表示部署成功 |
然后,按照上面操作,依次部署到VM2、VM3上。
在以后的部署过程中,可以使用下面的命令简化操作,同时部署三台机器,但第一次部署时应分别执行onos-install:
1 |
$ onos-group install -f |
返回结果:
1 2 3 |
onos start/running, process 14508 onos start/running, process 19601 onos start/running, process 25194 |
说明:ONOS被部署到虚拟机上后,所在的目录为:/opt/onos
5.集群环境验证
5.1运行集群中的ONOS实例
可以通过本地和远程两种方式运行集群中的ONOS实例,
方法一,本地运行:
登录onos所在的VM,以VM1为例,在VM1上执行操作:
1 2 3 |
VM1:$ cd /opt/onos/ #进入ONOS目录 VM1:$ cd /apache-karaf-3.0.3/bin #进入Karaf执行目录 VM1:$ ./karaf clean #运行本地ONOS实例 |
方法二,远程运行:
在VM4上可以远程开启刚才部署的机器上的ONOS实例,以VM2为例,在VM4上执行操作:
1 |
VM4:$ onos $OC2 #运行VM2上的ONOS实例 |
5.2使用Mininet连接集群进行测试
1.使用Mininet连接到一台ONOS实例
2.登陆web查看
c.进行负载均衡
在mininet中设置一些switch可连接的controller
在ONOS中进行负载均衡
作者简介:
曹睿,2015/09-至今,北京邮电大学信息与通信工程学院未来网络理论与应用实验室(FNL实验室)攻读硕士研究生。