1 实验目的
- 了解ONOS使用;
- 通过源码部署ONOS集群。
2 实验原理
ONOS支持集群模式,控制器间彼此分享各自的运行状态,当底层OpenFlow交换机连接多个控制器时,由交换机确定主备控制器,这对于容错和高可用性是非常有用的。
3 实验任务
本实验通过源码来搭建onos集群,重点了解onos集群部署中的配置文件。
4 实验步骤
4.1 环境准备
集群安装本次准备2台虚机vm1 :172.72.72.32 vm2:172.72.72.33
系统要求,实验平台已提供此镜像:
- Ubuntu Server 14.04 LTS 64-bit
- 2GB or more RAM
- 2 or more processors
4.1.1 建立vm之间的互信
登陆两个虚拟机,使用如下命令生成密钥
1 |
#ssh-keygen -t rsa |
在每台虚拟机上执行
1 2 |
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.72.72.32 #ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.72.72.33 |
4.1.2 安装依赖配置环境变量
安装onos所需的依赖:
安装apache-karaf:
1 2 3 4 |
#mkdir /root/Applications #cd /root/Applications #wget http://apache.fayea.com/karaf/3.0.2/apache-karaf-3.0.2.tar.gz #tar -xzf apache-karaf-3.0.2.tar.gz |
安装apache-maven:
1 2 3 4 |
# wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.2.5/ binaries/apache-maven-3.2.5-bin.tar.gz # tar -xzf apache-maven-3.2.5-bin.tar.gz # mv apache-maven-3.2.5/usr/local/apache-maven |
安装Java 8:
1 2 3 |
$ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installer oracle-java8-set-default –y |
配置/etc/profile文件并source:
1 2 3 4 |
export KARAF_ROOT=/root/Applications/apache-karaf-3.0.2 export JAVA_HOME=/usr/lib/jvm/java-8-oracle export M2_HOME=/usr/local/apache-maven export PATH=$PATH:$M2_HOME/bin |
执行命令:
1 |
source /etc/profile |
经环境检查,依赖安装完成,配置正确后,执行java –version与mvn –version检查环境是否与安装的java、mvn版本一致。
4.2 onos集群安装
4.2.1 下载onos到/home/onos目录下并解压
1 2 |
#wget https://github.com/opennetworkinglab/onos/archive/onos-1.0.zip # unzip onos-1.0.zip |
备注:本次实验修改了解压目录onos-onos-1.0为onos,故在配置/etc/profile的时候,配置为修改后的目录/home/onos/onos
4.2.2 配置/etc/profile文件并source
1 |
export ONOS_ROOT=/home/onos/onos |
执行:
1 2 |
# source /etc/profile # source $ONOS_ROOT/tools/dev/bash_profile |
4.2.3 构建onos
切换目录到/home/onos/onos,执行:
1 |
mvn clean install |
4.2.4 修改配置文件envDefaults
打开/home/onos/onos/tools/build/目录下的配置文件envDefaults
修改ip地址及用户名和密码
1 2 3 |
export OCI="${OCI:-172.72.72.32}" # ONOS Controller Instance export ONOS_USER="${ONOS_USER:-root}" # ONOS user on remote system export ONOS_PWD="123456" # ONOS user password on remote system |
4.2.5 打包安装onos
切换目录到/home/onos/onos/tools/build/下执行如下命令:
1 2 |
root@ubuntu:/home/onos/onos/tools/build# ./onos-package -rw-r--r-- 1 root root 41934283 Apr 2 16:22 /tmp/onos-1.0.0.root.tar.gz |
4.2.6 安装onos到其中一台虚拟机
切换到如下目录/home/onos/onos/tools/test/bin,执行如下命令:
1 |
root@ubuntu:/home/onos/onos/tools/test/bin#./onos-install 172.72.72.32 |
4.2.7 修改集群部署配置文件
onos-install完成之后,在所安装机器的/opt/下会有一个onos的目录,切换目录到/opt/onos/config中。手动配置cluster.json, tablets.json文件如下
1 2 3 4 5 6 7 8 9 10 |
vi cluster.json { "nodes":[ { "id": "172.72.72.32", "ip": "172.72.72.32", "tcpPort": 9876 } { "id": "172.72.72.33", "ip": "172.72.72.33", "tcpPort": 9876 } ]} vi tablets.json { "default":[ { "id": "172.72.72.32", "ip": "172.72.72.32", "tcpPort": 9876 } { "id": "172.72.72.33", "ip": "172.72.72.33", "tcpPort": 9876 } ]} |
4.2.8 其它配置文件检查
检查/opt/onos/apache-karaf-3.0.2/etc目录下的org.apache.karaf.features.cfg文件,是否如下配置:
1 2 3 |
featuresRepositories=mvn:org.apache.karaf.features/standard/3.0.2/xml/features,mvn:org.apache.karaf.features/enterprise/3.0.2/xml/features,mvn:org.ops4j.pax.web/pax-web-features/3.1.2/xml/features,mvn:org.apache.karaf.features/spring/3.0.2/xml/features,mvn:org.onosproject/onos-features/1.0.0/xml/features featuresBoot=config,standard,region,package,kar,ssh,management,webconsole,onos-api,onos-core,onos-cli,onos-openflow,onos-gui,onos-rest,onos-app-fwd,onos-app-proxyarp,onos-app-tvue |
检查如下/opt/onos/apache-karaf-3.0.2/etc目录下的hazelcast.xml文件是否如下配置:
1 2 3 4 5 6 7 8 9 10 11 12 |
root 123456 http://localhost:8080/mancenter 30 30 30 5701 0 224.2.2.3 54327 172.72.72.* 172.72.72.* |
4.2.9 启动onos
安装完成之后切换到/opt/onos/apache-karaf-3.0.2/bin目录下,./ karaf clean启动onos:
输入nodes查看节点:
4.2.10 其它集群节点的安装
再次如步骤2.7切换目录到虚机32的/home/onos/onos/tools/test/bin,执行./onos-install 172.72.72.33,依此安装2.7之后的步骤做各配置文件的检查并启动,启动ok后,在2个onos节点上分别执行nodes结果如下截图:
4.3 集群环境验证
4.3.1 使用mininet先连接到一台onos
1 |
mn --switch=ovsk --controller remote,ip=172.72.72.32,port=6633 --topo=linear,4 --mac |
在使用如下命令修改网桥信息:
在onos控制台查看交换机情况:
执行如下命令:
1 |
onos>balance-masters |
再次查看:
打开onos的web界面可以发现2个onos控制器集群:
在mininet上pingall可ping通: