zoukankan      html  css  js  c++  java
  • Linux Bond的模式与原理。

    原理:

      多块网卡虚拟成一张,实现冗余;多张网卡对外显示一张,具有同一个IP;网络配置都会使用Bonding技术做网口硬件层面的冗余,防止单个网口应用的单点故障。

      对于多物理网卡的 Bond 网卡而言,其中一块物理网卡会被设置为 Master(主设备),其他的网卡都是 Slave(从设备),Bond 网卡的 MAC 地址取自标志为 Master 的

      物理 网卡,然后将这个 MAC 地址复制到其他物理网卡上;

    工作模式:

    • 主备模式下 , 只有主网卡 eth0 工作,eth1 作为备份网卡是不工作的,只有当一个网络接口失效时 ( 例如主交换机掉电等 ),为了不会出现网络中断,系统会按照配置指定的网卡顺序启动工作,保证机器仍能对外服务,起到了失效保护的功能。
    • 负载均衡模式下,由于两块网卡都正常工作,它能提供两倍的带宽,在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用。

    不足:

    1. 我们先看主备模式
    主备模式下,Linux Bonding实现会将Bond的两个slave网口的MAC地址改为Bond的MAC地址,而Bond的MAC地址是Bond创建启动后,主用slave网口的MAC地址。

    当主用网口故障后,Bond会切换到备用网口,切换过程中,上层的应用是无感知不受影响的,因为Bond在驱动层,会接管上层应用的数据包,缓存起 来等备用网卡起来后再通过备用网卡发送出去。当然,前提是切换时间很短,否则缓冲区是会溢出的,溢出后就开始丢包了。

    2. 再看负载均衡模式
    负载均衡模式下,Linux Bonding实现可以保持两个slave网口的MAC地址不变,Bond的MAC地址是其中一个网卡的,Bond MAC地址的选择是根据Bond自己实现的一个算法来的,具体如何选择还没有研究。

    当然,这里要重点说明的是,Bond负载均衡模式下,要求交换机做配置,是的两个slave网口能够互通,否则的话,丢包会很厉害,基本没法使用。这个是因为Bond的负载均衡模式算法,会将包在两个网口之间传输以达到负载均衡。
    由于负载均衡模式下,两个slave有独立的MAC地址,你可能会想,我能否给slave网口再绑定一个IP地址,用作其他用途。
    这种方法是实现不了的。
    负载均衡模式下,两个slave网口在操作性系统上看到是两个独立的MAC地址,但是当你指定一个MAC地址发送包的时候,实际上发生的现象,不是你期望的。你指定MAC地址1发包,这个数据包可能到MAC地址2出去了。
    这个是因为Bond对这两个网口做了手脚,改了网口的驱动。看起来他们有独立的MAC地址,实际上他们的MAC地址不是独立的,只能给Bond使用。

    不足
    从上面的介绍中,很容易看到Bond的一点不足:
    Bond更改了网口的驱动,其网口不能被用作其他用途。

    Bond还有一点不足就是其故障监测上面:
    Bond默认只能做网口MII监测不能做链路监测(链路是指本机到网关的路径),也就是只能监测网口是否连接(网口是否亮);当然Bond也支持ARP协议的链路监测,但是ARP链路监测在一些场景下,太消耗资源,得不偿失。我们曾经在实际应用中使用过,效果确实不好。

  • 相关阅读:
    button的相关属性
    NSStringUIImage~NSData的相互转换以及中文转码
    网络请求 post 的接受请求头的代理方法
    UIImage
    通知NSNotificationCenter
    【LeetCode每日一题】2020.6.18 1028. 从先序遍历还原二叉树
    【《你不知道的JS(上卷②)》】三、对象
    【LeetCode每日一题】2020.6.17 1014. 最佳观光组合
    【LeetCode每日一题】2020.6.16 297. 二叉树的序列化与反序列化
    【《你不知道的JS(上卷②)》】二、this详解
  • 原文地址:https://www.cnblogs.com/Lijcyy/p/12255047.html
Copyright © 2011-2022 走看看