基于Floodlight网络负载均衡研究与实践2

时间:2021-10-28 12:43:59  来源:网友投稿

 基于 Floodlight 的负载均衡的实现 摘要:本文基于 SDN 网络架构构建了一个虚拟网络,使用 Floodlight 作为该虚拟网络的控制器,通过调用 Floodlight 控制器的 restful API 实现了服务器之间的负载均衡。

 前言:

 1 研究背景

 SDN 2 Floodlight 功能分析 3 实验过程及实验数据分析 3.1 网络拓扑结构

  3.2 实验平台搭建 本文通过采用 mininet 虚拟出主机设备,使用 open vSwitch 虚拟交换机作为 OpenFlow 交换机连接不同的主机设备,使用 FloodLight 作为网络控制器。

 (1)mininet 的安装 https://github.com/mininet/mininet/downloads 网站提供了 mininet VM,这是一个操作系统镜像文件,解压之后,可以直接在虚拟机中进行加载。本文采用了 virtualBox 作为虚拟机。

 (2)open vSwitch 的安装 Mininet 中自带有 open vSwitch,可以使用 mininet 自带的 open vSwitch,也可以另外安装 open vSwitch 作为网络互连设备。安装过程如下:

 (3)FloodLight 控制器的安装 运行终端系统,进行如下操作安装 floodlight, sudo apt-get install build-essential default-jdk ant python-dev git clone git://github.com/floodlight/floodlight.git

 cd floodlight git checkout stable ant java -jar target/floodlight.jar #运行 Floodlight

 3.3 Floodlight 控制器的 RESTFUL API 调用 通过调用 RESTFUL API,实现负载均衡。首先调用 quantum/v1.0/vips 设置 vip 的 id 和 vip名称以及对外显示的 IP 地址和端口号,传递的参数有 id 值,name 值,protocol 值,address值,port 值。其次调用 quantum/v1.0/pools 设置地址池名称以及该地址池所对应的 vip 的 id值。再次通过调用 quantum/v1.0/members/往地址池中添加具体的服务器地址,即将 ip 地址为 10.0.0.1 和 ip 地址为 10.0.0.2,端口号为 80 的服务器添加到地址池中,形成一个服务器集群,这个服务器集群对外的统一地址为 10.0.0.100,端口号为 80。当一个集群中某台服务器处于繁忙或奔溃状态,马上切换到集群中的另一台服务器,对用户而言是透明的,从而实现负载均衡的目的。

 #!/bin/sh curl -X POST -d "{"id":"1","name":"vip1","protocol":"tcp","address":"10.0.0.100","port":"80"}" http://localhost:8080/quantum/v1.0/vips/ curl -X POST -d "{"id":"1","name":"pool1","protocol":"tcp,"vip_id":"1"}" http://localhost:8080/quantum/v1.0/pools/ curl -X POST -d "{"id":"1","address":"10.0.0.1","port":"80","pool_id":"1"}" http://localhost:8080/quantum/v1.0/members/ curl -X POST -d "{"id":"2","address":"10.0.0.2","port":"80","pool_id":"1"}" http://localhost:8080/quantum/v1.0/members/

  3.4 数据分析 运行命令:sudo mn --controller= remote, ip=127.0.0.1 --topo single,3 运行结果如图所示。其中h1、h2 和 h3 为主机,s1 为 openflow 交换机。h1、h2 和 h3 连接在 s1 上。

  网络结构建设 主机 h1,h2,h3 的配置信息如图。

  H1 的配置信息

  H2 的配置信息

 H3 的配置信息

 H1 和 h2 启动 WEB 服务

 H1 启动 web 服务

  H2 启动 web 服务 负载均衡 通过 REST API 实现服务器之间的负载均衡,进行流表配置,当一台服务器过载,将请求自动转到另一台服务器上。编写脚本如下图所示。

 调用 rest API 实现负载均衡

 运行脚本程序 运行脚本程序以后得到的结果如下图所示

 执行脚本程序运行结果可见,vip 地址为 167772260,服务器 h1 的地址为 167772161,服务器 h2 的地址为 167772162。

  H3 访问网站 H3 使用 wget -O - 10.0.0.100 命令不停地发送 web 请求,使用 http://127.0.0.1/ui/index.html 查看 floodlight 控制器中记录的流表信息,如图所示,可见服务器 h1 与 h2 之间在轮换处理请求,

  H3 多次访问网站,查看 http://localhost:8080/ui/index.html,结果如下图所示,从发 flows(2)结果可见实现了负载均衡 。

 4 总结

推荐访问:负载均衡 实践 研究