一、应用环境


目前大部分网关或服务器设备常采用双链路同时接入多条ISP链路的方式来满足网络的负载均衡和主备切换等,实现该功能常用的方法是利用策略路由技术,根据链路的网络状况和权重配置在路由时动态选择不同的链接发送数据,从而实现多路的负载分担。

针对于点到点隧道模式的连接如vxlan,由于其采用四层UDP封装的方式,在端口和IP地址固定的情况下,采用策略路由无法有效的散列到不同链路上。

本文描述了在具有双物理链路的设备上,如何在Openvswitch中针对vxlan隧道实现负载均衡策略的实现方法,并搭建测试环境进行方案有效性的验证。

Open vSwitch(Open Source Virtual Switch) 是一款基于软件实现的开源虚拟交换机。

二、实验组网


两台设备server1和server2通过交换机相互通信,分别在两台设备上运行Openvswitch,通过建立vxlan隧道对接入的VM1和VM2进行二层跨域组网,其中server1上存在两个物理链路和serve2进行通信,通过本文的负载均衡方案,能够使vxlan隧道报文负载分担到两条物理链路上,组网如下图所示:

三、实验原理


在OVS中建立两个vxlan端口,每个vxlan端口绑定对应的链路出接口,并建立group table,类型设置为select,把两个vxlan端口加入group中的bucket中,通过流表建立其它端口和group的转发关系,通过group对数据流的随机散列,从而实现对物理链路的负载均衡,下图给出了OVS中的网络结构:

四、实验过程


在server1上的配置

1、安装openvswitch软件

yum install openvswitch
systemctl enable openvswitch.service
systemctl start openvswitch.service
systemctl status openvswitch.service

查看ovs运行情况 ps -ea | grep ovs

查看ovs版本 ovs-appctl --version

查看 OVS 支持的 OpenFlow 协议的版本 ovs-appctl --version

2、创建ovs桥(即ovs交换机)

ovs-vsctl add-br br-local

列出所有网桥 ovs-vsctl list-br

3、设置ovs桥支持的openflow版本

ovs-vsctl set bridge br-local protocols=OpenFlow13

4、把if1接口加入桥端口中,用于VM1接入ovs桥中

ovs-vsctl add-port br-local if1

5、创建vxlan0和vxlan1,并分别绑定两个链路接口

ovs-vsctl add-port br-local vxlan1 -- set interface vxlan1 type=vxlan  options:remote_ip=10.1.80.14 option:local_ip=10.1.80.13  options:key=100
ovs-vsctl add-port br-local vxlan2 -- set interface vxlan2 type=vxlan options:remote_ip=10.1.80.14 option:local_ip=10.1.80.15 options:key=100

其中option:local_ip用于绑定对应IP的网络接口,对端地址option:remote_ip为server2的IP地址,查看vxlan端口配置:

6、创建group,并把vxlan1和vxlan2加入group中

ovs-ofctl -O OpenFlow13 add-group br-local  group_id=5566,type=select,bucket=output:2,bucket=output:3

其中bucket表示加入group的端口号,vxlan1和vxlan2在br-local中的端口号分别为2和3(ovs-ofctl show br-local -O OpenFlow13命令可以查看,也可以在创建vxlan端口时通过ofport_request指定),查看group的配置:

7、创建入口为if1转发到group的流表

在server2上的配置

1、2中不需要负载均衡,主要是vxlan的配置需要和server1中的两条链路对应:

ovs-vsctl add-port br-local vxlan1 -- set interface vxlan1 type=vxlan  options:remote_ip=10.1.80.13  options:key=100
ovs-vsctl add-port br-local vxlan1 -- set interface vxlan1 type=vxlan options:remote_ip=10.1.80.15 options:key=100

server2中采用默认流表,不需要流表配置

关于VXLAN的认识-----ovs+vxlan多链路负载分担的实现方法的更多相关文章

  1. 【Network】OVS VXLAN/GRE 实践

    参考资料: OVS/VXLAN/GRE参考 ovs vxlan IP overray_百度搜索 OVS操作总结-Neutron-about云开发 OpenStack OVS GRE/VXLAN网络_z ...

  2. neutron ovs+vxlan

    title: Neutron ovs+vxlan date: 2017-04-26 23:37 tags: Network 主机网卡配置 controller: ens160:192.168.11.1 ...

  3. OVS+VXLAN实现两个宿主机上的VM间的通信

    一.组网图 说明: 1.使用网络命名空间表示vm1和vm2. 因为我没有两台物理服务器. 2.使用virtualbox 的两条虚机模拟作为host1和host2. 二.配置指导 1.创建网桥 br0 ...

  4. VXLAN 基础教程:VXLAN 协议原理介绍

    VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术.它是一种 Overlay(覆盖网络)技术,通过三层的网络来搭建虚拟 ...

  5. apache与tomcat负载集群集成方法配置

    apache与tomcat负载集群集成方法有3种jk.jk_proxy.http_proxy apache:httpd-2.2.17-win32-x86-no_ssl.msi tomcat:apach ...

  6. 如何设置nginx日志格式来查看负载分担结果

     转载:http://www.cnblogs.com/LoveJulin/p/5082363.html nginx配置好负载分担后,测试的时候,如何查看负载分担情况:通过设置nginx日志显示: ng ...

  7. 华为S5700系列交换机AR配置静态IP双链路负载分担

    适用于:有多个以太WAN口的机型. 业务需求: 运营商1分配的接口IP为100.100.1.2,子网掩码为255.255.255.252,网关IP为100.100.1.1. 运营商2分配的接口IP为2 ...

  8. HCNA配置手工负载分担模式链路聚合

    一.配置手工负载分担模式链路聚合 链路聚合(Link Aggregation)是将—组物理接口捆绑在一起作为一个逻辑接口来增加带宽的一种方法,又称为多接口负载均衡组(Load Sharing Grou ...

  9. EIGRP-16-其他和高级的EIGRP特性-2-非等价负载分担

    与大多数内部路由协议不同的是, EIGRP能够将流量负载分到多条非等价路径上,而不仅仅使用去往目的地最近距离的那一条路径.提供这项功能的特性称为非等价负载分担.   非等价负载分担的核心概念是可行后继 ...

随机推荐

  1. (贪心)P1223 排队接水 洛谷

    题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行,第一行为n:第二行分别 ...

  2. Qt ------ linux(ubuntu) 下用 linuxdeployqt 打包发布程序

    https://github.com/probonopd/linuxdeployqt/releases 1.下载linuxdeployqt 2.把下载的文件放入 /usr/local/bin 内,并执 ...

  3. mysql数据库连接useSSL=true

    web应用中连接mysql数据库时控制台会出现这样的提示: Establishing SSL connection without server's identity verification is ...

  4. 启动oracle的步骤

    启动oracle的步骤 Linux下启动oracle分为以下两步: 1.1.启动lsnrctl监听. 1.2.启动数据库实例. 启动oracle监听 首先登陆服务器,切换到oracle用户. [adm ...

  5. List数组

    大家好,我是蜀云泉.我的博文之中存在的不足之处希望大家包涵. 今天学习unity时,在实现某个功能的脚本中发现了List数组.关于List数组的问题我在学C#时已经接触了一点,但是我比较粗心和浮躁以前 ...

  6. Dubbo管控台安装(zookeeper单机版)

    1. zookeeper安装(单机版):http://www.cnblogs.com/wangfajun/p/5251159.html  √ 注意:我这里的dubbo-admin.war是2.5.3版 ...

  7. shop++之language

    shop++商城改造此次感悟最深的就是封装.有些东西要整明白就得花点时间. 代码中经常用到这种,我照葫芦画瓢竟然没有用. 天啦,竟然是自己没有定义,还以为是什么高级自动的玩意呢? 文件结构如下: 后面 ...

  8. HDU - 6313 Hack It(构造)

    http://acm.hdu.edu.cn/showproblem.php?pid=6313 题意 让你构造一个矩阵使得里面不存在四个顶点都为1的矩形,并且矩阵里面1的个数要>=85000 分析 ...

  9. Openresty 学习笔记(三)扩展库之neturl

    github地址:https://github.com/golgote/neturl 最近在搞一个视频加密播放,中间使用要用lua 匹配一个域名,判断该域名是否正确 PS:使用PHP很好做,lua 的 ...

  10. 在浏览器窗口中加载新的url

    通常,在前端页面中如果需要跳转到指定页面,可以通过<a>标签进行跳转.而在某些情况下,比如ajax调用之后想直接跳转到指定页面,想跳转页面不能再用<a>标签实现.此时,可以通过 ...