【SDN控制器】基于docker的onos控制器集群搭建

一、实验目的

利用Docker工具在虚拟机中搭建ONOS控制器集群;配置环境,使得另一台虚拟机的Mininet能够连接容器内的ONOS。

二、实验工具:

  1. Docker软件,版本18.06.0-ce
  2. ONOS的Docker镜像:onosproject/onos
  3. Mininet软件,版本2.2.1

三、实验设备与环境

虚拟机操作系统: Ubuntu server 16.04.4 LTS 64位

四、实验内容

  • 利用Docker工具搭建ONOS控制器集群;
  • 另一台虚拟机的Mininet连接容器内的ONOS控制器。

五、实验步骤

1. 查看与onos相关的镜像

sudo docker search onos

2. 拉取想要的onos镜像,这里选择第一个镜像onosproject/onos,并选择版本1.12.1
sudo docker pull onosproject/onos:1.12.1
3.创建三个onos控制器容器
sudo docker run -i -t -P --name onos-1 onosproject/onos:1.12.1 /bin/bash
sudo docker run -i -t -P --name onos-2 onosproject/onos:1.12.1 /bin/bash
sudo docker run -i -t -P --name onos-3 onosproject/onos:1.12.1 /bin/bash

(默认加入到docker的docker0网络,bridge模式)
可以使用-p参数指定容器端口映射到宿主机的实际物理机的端口号:

sudo docker run -d -i -t -p 6654:6653 -P --name onos-1 onosproject/onos:1.12.1 /bin/bash

其中,6654为物理机端口,6653为onos容器的端口号。
注意-P参数也不能漏掉,表示未指定端口映射的容器端口采用随即映射。
若想后台运行,加上-d参数。

4. 查看已创建的控制器信息(ID、创建时间、端口映射情况、状态等)
sudo docker ps -a
5. 查看容器的IP地址,用于与mininet建立连接
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <容器ID>

查看后,IP分别为172.17.0.2、172.17.0.3、172.17.0.4

6. 登录到容器onos-1,目的:建立三控制器的集群

进入同一个界面同一个进程,可能会失败(阻塞);进入onos>界面

sudo docker attach <容器ID/容器名>

创建新的子进程;进入bash-4.4界面

sudo docker exec -it <容器ID/容器名> /bin/bash

进入到onos-form-cluster所在的目录

cd bin

执行集群命令

./onos-form-cluster 172.17.0.2 172.17.0.3 172.17.0.4

其中172.17.0.2 172.17.0.3 172.17.0.4分别为三个容器的IP地址。

7. 进入onos-1的CLI界面,目的:激活服务
ssh -p 8101 [email protected] -o UserKnownHostsFile=/dev/null 
8.激活openflow与访fwd服务
onos> app activate org.onosproject.openflow
onos> app activate org.onosproject.fwd

可以继续利用GUI观察三个控制器的集群
在浏览器输入

http://192.168.1.121:32784/onos/ui/index.html

其中192.168.1.121为宿主机IP地址;32784为容器的8181端口映射到宿主机的端口号

9、另一台主机的mininet连接onos容器,搭建拓扑
  • 启动mininet所在的虚拟机
  • 在mininet所在的虚拟机中添加一条路由表项,使得发往172.17.0.0/16网段的数据包由192.168.1.121(docker宿主机)转发
sudo route add -net 172.17.0.0/16 gw 192.168.1.121 eth0

(但是重启后会丢掉)
其中192.168.1.121为onos容器所在宿主机的IP地址;eth0为onos容器(docker)所在虚拟机的网卡(与宿主机同一网段)

  • 启动mininet,创建拓扑,并连接到多个控制器(采用openflow1.3协议交互)
sudo mn --switch=ovsk,protocols=OpenFlow13 --controller remote,ip=172.17.0.2 --controller remote,ip=172.17.0.3 --controller remote,ip=172.17.0.4
  • 打开浏览器登录onos-1的GUI界面,查看连接情况
http://192.168.1.121:32779/onos/ui/index.html

你可能感兴趣的:(【SDN控制器】基于docker的onos控制器集群搭建)