Centos 7.6 双网卡绑定实现高可用

                                     作者:尹正杰

版权声明:原创作品, 谢绝转载!否则将追究法律责任。

一.Bond模式概述

  当linux系统上有多个单独网卡,又想充分利用这些网卡,同时对外提供一个统一的网络地址,以使得增大网络的吞吐量,同时也提高网络的可用性,这时就需要bond来帮助我们解决这个问题。
  Linux网卡绑定mode共有七种(~) bond0、bond1、bond2、bond3、bond4、bond5、bond6,接下来我们一起简单看下这7中模式的工作原理概述。

1>.bond0

即:(balance-rr) Round-robin policy(平衡抡循环策略)

bond0工作原理:
  传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降

2>.bond1(试验咱们就使用这种模式来模拟)

即: (active-backup) Active-backup policy(主-备份策略)

bond1工作原理:
  只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有N个网络接口的情况下,资源利用率为1/N

3>.bond2

即:(balance-xor) XOR policy(平衡策略)
bond2工作原理:
  基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力

4>.bond3

即:broadcast(广播策略)
bond3工作原理:
  在每个slave接口上传输每个数据包,此模式提供了容错能力。

5>.bond4(我们在生产环境用的就是这种bond模式)

即:(.3ad) IEEE .3ad Dynamic link aggregation(IEEE .3ad 动态链接聚合)

bond4工作原理:
  创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43..4章节提及的包乱序问题。不同的实现可能会有不同的适应性。
  必要条件:
    条件1:ethtool支持获取每个slave的速率和双工设定
    条件2:switch(交换机)支持IEEE .3ad Dynamic link aggregation
    条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

6>.bond5

即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)

bond5工作原理:
  不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
  该模式的必要条件:ethtool支持获取每个slave的速率

7>.bond6

即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

bond6工作原理:
  该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。
  来自服务器端的接收流量也会被均衡。当本机发送ARP请求时,bonding驱动把对端的IP信息从ARP包中复制并保存下来。当ARP应答从对端到达时,bonding驱动把它的硬件地址提取出来,并发起一个ARP应答给bond中的某个slave。使用ARP协商进行负载均衡的一个问题是:每次广播ARP请求时都会使用bond的硬件地址,因此对端学习到这个硬件地址后,接收流量将会全部流向当前的slave。这个问题可以通过给所有的对端发送更新 (ARP应答)来解决,应答中包含他们独一无二的硬件地址,从而导致流量重新分布。当新的slave加入到bond中时,或者某个未激活的slave重新 激活时,接收流量也要重新分布。接收的负载被顺序地分布(round robin)在bond中最高速的slave上
当某个链路被重新接上,或者一个新的slave加入到bond中,接收流量在所有当前激活的slave中全部重新分配,通过使用指定的MAC地址给每个 client发起ARP应答。
  下面介绍的updelay参数必须被设置为某个大于等于switch(交换机)转发延时的值,从而保证发往对端的ARP应答不会被switch(交换机)阻截。
  必要条件:
    条件1:ethtool支持获取每个slave的速率;
    条件2:底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。如果curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管

  其实mod=6与mod=0的区别:mod=,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=,会发现第一个口流量很高,第2个口只占了小部分流量。

二.配置虚拟机的NAT网关地址

1>.点击编辑

2>.自定义NAT的网段

3>.自定义NAT的网关地址

4>.确认NAT配置后点击"应用"或者"确定"按钮可以是配置生效

三.配置bound

1>.查看并加载bound

2>.修改配置文件

3>.安装ifconfig命令的安装包

4>.检查ifconfig命令是否可用

 

四.验证BOND配置

1>.检查宿主机和guest的连通性

2>.查看bond的工作状态

[root@node100.yinzhengjie.org.cn ~]# cat /proc/net/bonding/bond0       #可以执行这条命令查看网卡状态
Ethernet Channel Bonding Driver: v3.7.1 (April , ) Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens33
MII Status: up
MII Polling Interval (ms):
Up Delay (ms):
Down Delay (ms): Slave Interface: ens33
MII Status: up
Speed: Mbps
Duplex: full
Link Failure Count:
Permanent HW addr: :0c::::
Slave queue ID: Slave Interface: ens34
MII Status: up
Speed: Mbps
Duplex: full
Link Failure Count:
Permanent HW addr: :0c::::9c
Slave queue ID:
[root@node100.yinzhengjie.org.cn ~]#

3>.模拟一块网卡出现故障

4>.模拟让两块网卡都出现故障,发现IP无法ping通啦发现问题,如果我先关闭的是ens33的话,网卡的高可用配置是无效的,可能时虚拟机的问题,在物理服务器上并不存在这种情况!

5>.两块虚拟网卡down掉后,bond0 尽管配置了IP地址也是无法ping通的,因为bond 0只是虚拟网卡,而真正负责工作的是ens33和ens37这两块网卡

Centos 7.6 双网卡绑定实现高可用的更多相关文章

  1. Centos 7.2 双网卡绑定之踩坑

    线上服务器,安装centos7.2 x64最小化安装,需要做链路聚合,双网卡绑定.在centos 6.x 和 centos 7上测试都OK,于是直接开搞. 说明下,以下环境是在虚拟机中实现的: 系统: ...

  2. CentOS 6.X 双网卡绑定配置

    相关环境 主机:Dell PowerEdge R720服务器(背板有4个GE网口) 操作系统:CentOS(RHEL)6.X 网线连接 使用6类网线 将Dell R720 GE网口 0,与交换机A相连 ...

  3. CentOS 6.9下双网卡绑定单个IP地址及装网卡绑定到一个网桥(转)

    说明:经过查阅,原来双网卡绑定一个IP的专业名词叫做bond,可以实现负载均衡:如果想要实现两张网卡绑定到一个网桥,基本思路是两张网卡设置同一个网桥是行不通的,但如果先实现bond,然后将bond绑定 ...

  4. centos 6.4系统双网卡绑定配置详解

    Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡(需要交换机支持),这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作. ...

  5. 做双网卡绑定_______物理机在双网卡的情况下做多IP绑定

    公司的环境是这样的: 一台物理机需要做双网卡绑定,同时呢,在双网卡绑定的同时还要做多IP. 其实整个过程可以分为两个步骤: 第一个,物理机先做双网卡. 第二个,在bond上做多IP实例. 双网卡绑定的 ...

  6. linux中配置双网卡的目的?如何实现双网卡绑定,以实现负载均衡?

    配置双网卡的目的:========================== 1.你想做路由器,网关 2.实现冗余 3.负载均衡     linux 主机安装双网卡,共享一个IP地址,对外提供访问,实际 同 ...

  7. Linux双网卡绑定bond详解--单网卡绑定多个IP

    Linux双网卡绑定bond详解 1 什么是bond 网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术.Kernels 2.4.12及 ...

  8. (转)深度分析Linux下双网卡绑定七种模式

    现在一般的企业都会 使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在 网卡产商也会出一些针对window ...

  9. Linux下双网卡绑定(bonding技术)

    Linux网卡绑定探析   2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的 ...

随机推荐

  1. 【翻译】Flink Table Api & SQL —Streaming 概念 —— 表中的模式匹配 Beta版

    本文翻译自官网:Detecting Patterns in Tables Beta  https://ci.apache.org/projects/flink/flink-docs-release-1 ...

  2. 查看appPackage和appActivity的多种方法

    一.通过adb shell 查看 adb shell dumpsys activity | grep 包名 列如: C:\Users\admin>adb shell root@shamu:/ # ...

  3. Netty实现SSL双向验证完整实例

    Netty实现SSL双向验证完整实例 博客分类: netty nettyssl自签证书  一.证书准备 要使用ssl双向验证,就必须先要生成服务端和客户端的证书,并相互添加信任,具体流程如下(本人调试 ...

  4. Lyrics of the song 99 Bottles of Beer

    99 bottles of beer on the wall, 99 bottles of beer.Take one down and pass it around, 98 bottles of b ...

  5. Java中缓存的介绍

    一.什么是缓存1.Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2.凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之 ...

  6. SpringBoot系列教程JPA之update使用姿势

    原文: 190623-SpringBoot系列教程JPA之update使用姿势 上面两篇博文拉开了jpa使用姿势的面纱一角,接下来我们继续往下扯,数据插入db之后,并不是说就一层不变了,就好比我在银行 ...

  7. php imagick 获取psd图层信息

    php imagick 获取psd图层信息<pre><?php$projectname = 'test';$im = new Imagick("test.psd" ...

  8. 01 Struts2框架学习(了解一下,已过时)

    1.框架介绍 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面. 特点:封装了很多细节,程序员在使用的时候会非常简单. 早前,有三大框架strut ...

  9. SQL——AND、OR运算符

    一.AND.OR运算符基本说明 AND : 所有条件成立,则筛选出这条记录. OR : 只要其中一个条件成立,则筛选出这条记录. 演示student表: 二.AND运算符使用 查询name = '小明 ...

  10. POJ 1661 Help Jimmy(C)动态规划

    没刷过 POJ,这题是论坛有人问的,我才看看. 我发现 POJ 注册很奇怪,账号总是登不上去,弄的我还注册两个.Emmm 首次体验很差,还好我不在 POJ 刷题. 题目链接:POJ 1661 Help ...