• Linux下通过bonding技术实现网络负载均衡


    有时候一些重要的文件服务器除了在应用层实现高可用和负载均衡外,还需要在硬件(网卡)、物理线路上来保证网络的的高可用及负载均衡。

    Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余,bonding在Linux内核2.4.12以后就已经默认支持,你可以通过如下方法查看内核是否支持bonding,否则你需要将它编译到内核。

    [root@localhost ~]# modprobe -l | grep bonding
    /lib/modules/2.6.18-164.el5PAE/kernel/drivers/net/bonding/bonding.ko

    如果有返回结果,就说明内核支持,下面就简单介绍下实施步骤。



    实施步骤如下:

    1、创建网卡bond0文件
    [root@localhost network-scripts]# more ifcfg-bond0
    # Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet
    DEVICE=bond0
    BOOTPROTO=none
    ONBOOT=yes
    NETMASK=255.255.255.0
    IPADDR=192.168.100.11
    GATEWAY=192.168.100.1
    TYPE=Ethernet


    2、修改ifcfg-eth0文件
    [root@localhost network-scripts]# more ifcfg-eth0
    # Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet
    DEVICE=eth0
    USERCTL=no
    BOOTPROTO=none
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    TYPE=Ethernet


    3、修改ifcfg-eth0文件
    [root@localhost network-scripts]# more ifcfg-eth1
    # Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet
    DEVICE=eth1
    USERCTL=no
    BOOTPROTO=none
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    TYPE=Ethernet


    4、修改/etc/modprobe.conf配置文件
    目的是将新添加的bond0设备加入modprobe.conf中,以便kernel识别。

    [root@localhost network-scripts]# more /etc/modprobe.conf
    alias bond0 bonding
    options bond0 miimon=100 mode=1

    注:
    miimon:是用来进行链路监测的 ,例如miimon=100,单位是毫秒,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路。
    mode:为工作模式,可设置为高可用还是负载均衡,0为负载均衡(默认值),需根据交换机提供的工作模式选择,1为主备模式(也就是说只有一块网卡工作,另一块做备份)。

    如果你要更改mode,记得一定要重新启动机器,切记切记!!!


    5、将bonding生效(或完成上述步骤后重新启动电脑)
    [root@localhost ~]# ldconfig
    [root@localhost ~]# /etc/init.d/network restart


    6、查看bonding状态
    [root@localhost ~]# cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: eth0
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0

    Slave Interface: eth0
    MII Status: up
    Link Failure Count: 0
    Permanent HW addr: 00:1e:c9:b6:ac:cf

    Slave Interface: eth1
    MII Status: up
    Link Failure Count: 0
    Permanent HW addr: 00:1e:c9:b6:ac:d1

    你也可以down掉 eth0 借口,再看看情况:

    [root@localhost ~]# ifdown eth0
    [root@localhost ~]#
    [root@localhost ~]#
    [root@localhost ~]# cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: eth1
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0

    Slave Interface: eth1
    MII Status: up
    Link Failure Count: 0
    Permanent HW addr: 00:1e:c9:b6:ac:d1



    在测试中分别测试了高可用环境和负载均衡环境,网络故障的切换速度很快,对数据包的传输没有任何影响,在负载均衡下,整个机器的网路吞吐量比单网卡翻了一倍,你可以使用cacti来监控网络流量状况。

    官方说明文档:http://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/Documentation/networking/bonding.txt

  • 相关阅读:
    Mach-O详解(一) - 破题
    【CVPR2022】NFormer: Robust Person Re-identification with Neighbor Transformer
    MySQL 开启 binlog 日志
    如何使用 GPU 访问运行 Docker Compose 容器
    docker登陆mysql,密码正确却提示错误
    [C++11]可变参数模板和参数包展开
    机器学习笔记 - Ocr识别中的CTC算法原理概述
    【如何学习Python自动化测试】—— 时间等待
    CentOS上搭建SVN并自动同步至web目录
    RHEL8.5 保姆级k8s安装部署
  • 原文地址:https://blog.csdn.net/vempire/article/details/127631495