ONOS的集群实验

任务目的

1、了解ONOS集群实现原理、设计特性和意义。
2、掌握安装、部署ONOS集群的方法,能够独立解决实验过程中遇到的问题。

任务环境

设备名称 软件环境(镜像) 硬件环境
控制器 Ubuntu 14.04桌面版
ONOS 1.7.1
CPU:2核 内存:4G 磁盘:30G
主机 Ubuntu 14.04桌面版
Mininet 2.2.0
CPU:1核 内存:2G 磁盘:20G

注:系统默认的账户为root/root@openlab,openlab/user@openlab。

任务内容

1、安装配置ONOS集群环境。
2、使用Mininet环境模拟工具验证ONOS集群环境。

实验原理

ONOS支持集群模式,控制器之间彼此分享各自的运行状态,当底层OpenFlow交换机连接多个控制器时,由交换机确定主备控制器,这对于容错和高可用性是非常有用的。
通常,一套ONOS集群会包含多个ONOS实例(或节点),每个节点拥有一个唯一的NodeID,每一个节点都可以感知网络的一部分状态,本地的状态分段由节点管理,在集群中以事件传播。事件被Store生成,它们通过分布式储存与集群中的所有节点共享。
除了分发数据,ONOS集群还要负责以下的任务:

  • 检测和处理集群节点的加入和离开(由Cluster Subsystem管理)
  • 为每一个设备提供一个主控制器
    ONOS集群协调的一个重要工具便是Store,Store生成事件,事件被分布式储存持久化,在集群中共享。
    根据具体服务的需求,储存的内容可以有不同的特征,如强一致性或最终一致性,这使得每个服务的储存根据需求采用合适的分布机制。
    目前ONOS主控部分采用Hazelcast以达到强一致性,而Device、Link等部分的管理使用乐观的复制技术辅以gossip协议以确保最终一致性。
    如果两个不同节点上的子系统是相同的,子系统将会直接通过Store与另一个进行同步。但是同步的只是一部分的状态,如,对于DeviceStore,它只知道设备的状态而不了解其他无关的信息。目前除了拓扑管理这部分,其他所有服务都要访问分布式储存。
    下图展示了两个子系统间的同步:
    ONOS的集群实验_第1张图片
    设备可以自由地连接到一个或多个集群中的节点,node可以有以下几种角色:
  • NONE:这意味着node并不了解该设备,或仅仅是无法与其交互
  • STANDBY:此时node已经有对设备的认识,并可以读取其状态,但无法管理、控制该设备
  • MASTER:此时node认识设备并对其有完全的控制权

实验步骤

一、配置ONOS集群

说明:本实验中控制器1的IP地址为192.168.1.3,控制器2的IP地址为192.168.1.4。

步骤1 由于本次实验使用已经安装好的ONOS的镜像,在实验之前需要把后台启动的进程切换为前台启动。登录控制器1,执行以下命令:

$ su root
# ps -ef|grep karaf
$ kill -9 进程号

ONOS的集群实验_第2张图片

步骤2 打开ONOS控制器,执行以下命令:

$ source /etc/profile
$ karaf clean

ONOS的集群实验_第3张图片

步骤3 查看端口号6633是否处于监听状态,确保进程启动成功,如下图所示。


控制器2按照上述方法进行同样的设置。

步骤4 在控制器1中设置ONOS集群,集群控制器IP地址分别为192.168.1.3/192.168.1.4。

$ cd onos-1.7.1/bin
$ sudo ./onos-form-cluster 192.168.1.3 192.168.1.4

步骤5 登录ONOS Web页面查看集群显示情况,Web地址为http://127.0.0.1:8181/onos/ui/index.html ,账号为:onos/rocks,如下图所示。

ONOS的集群实验_第4张图片

三、集群环境验证

步骤1 Mininet连接集群环境。登录Mininet实验机器,构建实验topo连接控制器1,模拟4个主机和4个交换机。执行以下命令:

$ sudo mn --switch=ovsk --controller=remote,ip=192.168.1.3,port=6633 --topo=linear,4 --mac

ONOS的集群实验_第5张图片

步骤2 打开新的命令窗口,设置交换机连接两台控制器。执行以下命令:

$ sudo ovs-vsctl set-controller s1 tcp:192.168.1.3:6633 tcp:192.168.1.4:6633
$ sudo ovs-vsctl set-controller s2 tcp:192.168.1.3:6633 tcp:192.168.1.4:6633
$ sudo ovs-vsctl set-controller s3 tcp:192.168.1.3:6633 tcp:192.168.1.4:6633

ONOS的集群实验_第6张图片

步骤3 登录ONOS控制器界面查看已经连接到的交换机情况,如下图所示。

ONOS的集群实验_第7张图片
由上图可知,可知目前所有交换机都是连接在控制器1上,没有交换机连接到控制器2上。

步骤4 登录控制器1,在ONOS控制台执行以下命令平衡交换机比例。

$ balance-masters
$ masters

ONOS的集群实验_第8张图片

步骤5 再次查看ONOS Web界面的集群情况,如下图所示。

ONOS的集群实验_第9张图片
可以看出此时两台控制器分别控制两台交换机,主备情况可以用命令roles查看:

步骤6 Mininet中主机可以成功ping通,如下图所示。

你可能感兴趣的:(SDN)