精华内容
下载资源
问答
  • Linux网口绑定

    千次阅读 2016-04-06 11:08:22
    Linux网口绑定     通过网口绑定(bond)技术,可以很容易实现网口冗余,负载均衡,从而达到高可用高可靠的目的。 前提约定: 2个物理网口分别是:eth0,eth1 绑定后的虚拟口是:bond0 服务器IP是:192.168.0....

    Linux网口绑定

     

     

    通过网口绑定(bond)技术,可以很容易实现网口冗余,负载均衡,从而达到高可用高可靠的目的。

    前提约定:
    2个物理网口分别是:eth0,eth1
    绑定后的虚拟口是:bond0
    服务器IP是:192.168.0.100

    第一步,配置设定文件:
    /etc/sysconfig/network-scripts/ifcfg-bond0

    DEVICE=bond0BOOTPROTO=noneONBOOT=yesIPADDR=192.168.0.100NETMASK=255.255.255.0NETWORK=192.168.0.0BROADCAST=192.168.0.255

    /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0BOOTPROTO=noneMASTER=bond0SLAVE=yes

    /etc/sysconfig/network-scripts/ifcfg-eth1

    DEVICE=eth1BOOTPROTO=noneMASTER=bond0SLAVE=yes

    第二步,修改modprobe相关设定文件,并加载bonding模块:
    1.在这里,我们直接创建一个加载bonding的专属设定文件/etc/modprobe.d/bonding.conf

    [root@test ~]# vi /etc/modprobe.d/bonding.conf#追加alias bond0 bondingoptions bonding mode=1 miimon=200

    2.加载模块(重启系统后就不用手动再加载了)

    [root@test ~]# modprobe bonding

    3.确认模块是否加载成功:

    [root@test ~]# lsmod | grep bondingbonding               100065  0

    第三步,重启一下网络,然后确认一下状况:

    [root@test ~]# /etc/init.d/network restart[root@test ~]# cat /proc/net/bonding/bond0Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008) Bonding Mode: fault-tolerance (active-backup)Primary Slave: NoneCurrently Active Slave: eth0 MII Status: upMII Polling Interval (ms): 200Up Delay (ms): 0Down Delay (ms): 0 Slave Interface: eth0MII Status: upLink Failure Count: 0Permanent HW addr: 00:16:36:1b:bb:74 Slave Interface: eth1MII Status: upLink Failure Count: 0Permanent HW addr: 00:16:36:1b:bb:80[root@test ~]# ifconfig | grep HWaddrbond0     Link encap:Ethernet  HWaddr 00:16:36:1B:BB:74eth0      Link encap:Ethernet  HWaddr 00:16:36:1B:BB:74eth1      Link encap:Ethernet  HWaddr 00:16:36:1B:BB:74

    从上面的确认信息中,我们可以看到3个重要信息:
    1.现在的bonding模式是active-backup
    2.现在Active状态的网口是eth0
    3.bond0,eth1的物理地址和处于active状态下的eth0的物理地址相同,这样是为了避免上位交换机发生混乱。

    任意拔掉一根网线,然后再访问你的服务器,看网络是否还是通的。

    留心:前面只是2个网口绑定成一个bond0的情况,如果我们要设置多个bond口,比如物理网口eth0和eth1组成bond0,eth2和eth3组成bond1,
    那么网口设置文件的设置方法和上面第1步讲的方法相同,只是/etc/modprobe.d/bonding.conf的设定就不能像下面这样简单的叠加了:

    alias bond0 bondingoptions bonding mode=1 miimon=200alias bond1 bondingoptions bonding mode=1 miimon=200

    正确的设置方法有2种:
    第一种,你可以看到,这种方式的话,多个bond口的模式就只能设成相同的了:

    alias bond0 bondingalias bond1 bondingoptions bonding max_bonds=2 miimon=200 mode=1

    第二种,这种方式,不同的bond口的mode可以设成不一样:

    alias bond0 bondingoptions bond0 miimon=100 mode=1install bond1 /sbin/modprobe bonding -o bond1 miimon=200 mode=0

    仔细看看上面这2种设置方法,现在如果是要设置3个,4个,甚至更多的bond口,你应该也会了吧!

    后记:简单的介绍一下上面在加载bonding模块的时候,options里的一些参数的含义:

    miimon      监视网络链接的频度,单位是毫秒,我们设置的是200毫秒。max_bonds   配置的bond口个数mode        bond模式,主要有以下几种,在一般的实际应用中,0和1用的比较多,如果你要深入了解这些模式各自的特点就需要靠读者你自己去查资料并做实践了。0或balance-rr         轮转策略,提供负载均衡和耐故障功能,按顺序轮流把包发给包含在bond口内的网口。1或active-backup      主备策略,提供高耐故障功能,逻辑简单,一个处于激活状态,一个失败,另外一个自动激活。2或balance-xor        XOR策略,提供负载均衡和耐故障功能。3或broadcast          广播策略,耐故障功能。把数据以广播的方式,发给包含在该bond口内的所有网口。4或802.3ad            IEEE 802.3ad动态链接集合。5或balance-tlb        自动适应传输负载均衡策略。6或balance-alb        自动适应负载均衡策略。

    展开全文
  • Centos实现网口绑定

    2020-05-18 20:00:53
    Linux的网口绑定(bond) 同一主机,不同的网口,配置不同网段的IP,不要配置相同网段的IP、 centos6 配置bond的方法: 1、查看有哪些网口 ifconfig -a  2、选择2个自己需要绑定的网口  3、配置网口的配置文件 ...

    Linux的网口绑定(bond)

    同一主机,不同的网口,配置不同网段的IP,不要配置相同网段的IP、
    

    centos6 配置bond的方法:

    1、查看有哪些网口 ifconfig -a
      2、选择2个自己需要绑定的网口
      3、配置网口的配置文件

    配置文件所有目录:

    /etc/sysconfig/network-scripts
    

    网口配置文件名规则:以ifcfg-开头,然后接着是网口名
      例如:eth0的配置文件名是 ifcfg-eth0
      如果没有配置文件,则需要创建网口配置文件(需要eth0和eth1)
        cd /etc/sysconfig/network-scripts/
    创建eth0的配置文件

    	# cat ifcfg-eth0
      DEVICE=eth0 #网口名
      ONBOOT=yes #LINUX在启动时激活该网口
      BOOTPROTO=none #使用什么协议激活网口,none不使用任何协议,如果是静态IP,需要设置为static;如果是动态获取IP,需要设置为dhcp 动态主机配置协议(Dynamic host configuration protocol)
      MASTER=bond0 #指定虚拟网口的名字
      SLAVE=yes #备用
     
      #cp ifcfg-eth0 ifcfg-eth1
      # cat ifcfg-eth1
      DEVICE=eth1 #网口名
      ONBOOT=yes #LINUX在启动时激活该网口
      BOOTPROTO=none   #使用什么协议激活网口,none不使用任何协议,如果是静态IP,需要设置为static;如果是动态获取IP,需要设置为dhcp 动态主机配置协议(Dynamic host configuration protocol)
      MASTER=bond0 #指定虚拟网口的名字
      SLAVE=yes #备用
     
      # cat ifcfg-bond0
      DEVICE=bond0
      ONBOOT=yes
      BOOTPROTO=static
      IPADDR=172.16.1.3
      NETMASK=255.255.0.0
    4、配置bonding
      在/etc/modprobe.d/dist.conf(没有该文件就创建) 增加以下2行
      alias bond0 bonding
      options bond0 miimon=100 mode=1
    

    5、重启OS :reboot
      (如果查看bond0没有IP,则使用命令service network restart)

    6、如果查看当前哪个网口是主用网口

    cat /proc/net/bonding/bond0
    

    注意:网口切换后,使用ifconfig bond0
        //查看到的MAC地址还是切换前的MAC地址,这是正常的。为了防止IP对应MAC地址混乱。

    展开全文
  • 网口绑定bond配置

    2018-06-29 11:08:07
    本文不但有详细的bond原理和bond工作资料的介绍,还有华为、华三、思科等交换机厂家对于的配置说明。
  • Linux 配置bond网口绑定

    2019-09-30 17:22:26
    使用网口绑定bond技术,绑定linux服务器的多个网口,可以很容易实现网口冗余,负载均衡,从而达到高可用高可靠的目的。

    linux网口绑定(bond)

    通过网口绑定(bond)技术,可以很容易实现网口冗余,负载均衡,从而达到高可用高可靠的目的。

    bond的类型

    网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6

    常用的有三种

    mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。

    mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

    mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。

    配置案例

    物理网口:eth0、eth1

    虚拟网口:bond0

    配置bond

    vim /etc/sysconfig/network-scripts/ifcfg-bond0
    
    DEVICE=bond0
    BOOTPROTO=none
    ONBOOT=yes
    IPADDR=192.168.1.101
    NETMASK=255.255.255.0
    NETWORK=192.168.1.0
    BROADCAST=192.168.1.255    //BROADCAST广播地址
    USERCTL=no
    BONDING_OPTS="mode=1 miimon=100"		//mode:bond的模式,miimon:监测相应的时间,这里是100ms
    

    配置eth0、eth1

    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    
    DEVICE=eth0
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    
    vim /etc/sysconfig/network-scripts/ifcfg-eth1
    
    DEVICE=eth1
    ONBOOT=yes
    NM_CONTROLLED=no
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    

    修改modprobe相关设定文件,并加载bonding模块

    vim /etc/modprobe.d/bonding.conf
    
    alias bond0 bonding
    
    #options bonding max_bonds=2 miimon=200 mode=1	//如果在网卡配置文件中添加过bond选项,可忽略
    #选项:
    #miimon:监视网络链接的频度,单位是毫秒,我们设置的是200毫秒。
    #max_bonds:配置的bond口个数
    #mode:bond模式,主要有以下几种,在一般的实际应用中,0和1用的比较多,
    

    加载模块(重启系统后就不用手动再加载了)

    modprobe bonding		//加载模块
    
    lsmod | grep bonding	//查看是否加载成功
    

    重启网络服务

    /etc/init.d/network restart
    

    查看bond状态

    cat /proc/net/bonding/bond0
    
    
    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
    
    Bonding Mode: fault-tolerance (active-backup)	//**active-backup(主备)模式**
    Primary Slave: None
    Currently Active Slave: eth1	//**active状态的网口是eth1**
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    
    Slave Interface: eth0
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 1
    Permanent HW addr: 00:0c:29:8a:f3:88
    Slave queue ID: 0
    
    Slave Interface: eth1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:0c:29:8a:f3:92
    Slave queue ID: 0
    

    任意关掉一个网口,看看网络是否仍然连通
    如果不通,有可能是因为网关,需增加默认网关

    vim /etc/rc.d/rc.local
    
    ifenslave bond0 eth0 eth1
    route add default gw 192.168.1.1
    

    处于active状态下时eth0、eth1、bond1的物理地址都会相同,这样是为了避免上位交换机发生混乱。

    ifconfig | grep HWaddr
    
    bond0     Link encap:Ethernet  HWaddr 00:0C:29:8A:F3:88  
    eth0      Link encap:Ethernet  HWaddr 00:0C:29:8A:F3:88  
    eth1      Link encap:Ethernet  HWaddr 00:0C:29:8A:F3:88 
    

    七种bond模式说明

    第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)

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

    第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略)

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

    第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略)

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

    第四种模式:mod=3,即:broadcast(广播策略)

    特点:在每个slave接口上传输每个数据包,此模式提供了容错能力

    第五种模式:mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)

    特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。

    外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的 是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应 性。

    必要条件:

    条件1:ethtool支持获取每个slave的速率和双工设定

    条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation

    条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

    第六种模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)

    特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

    该模式的必要条件:ethtool支持获取每个slave的速率

    第七种模式:mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

    特点:该模式包含了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=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量

    展开全文
  • 文档详细介绍了如何在Ubuntu 上使用模式active-backup模式进行网口绑定的过程,希望对遇到相同场景的人有所帮助
  • Ubuntu服务器使用active-backup模式进行网口绑定 简介 在这次阿拉善的出差过程中,自己也在疲惫的工作中学到一些可以在以后的工作中使用或者自己觉得重要的东西,昨天晚上已经总结过XShell快速命令配置使用,在阿拉善...

    Ubuntu服务器使用active-backup模式进行网口绑定

    简介

    在这次阿拉善的出差过程中,自己也在疲惫的工作中学到一些可以在以后的工作中使用或者自己觉得重要的东西,昨天晚上已经总结过XShell快速命令配置使用,在阿拉善出差的9天中,还有另外两个主题的工作内容需要总结。

    • Ubuntu服务器使用active-backup(模式1)模式进行网口绑定
    • Ubuntu服务器使用动态链接聚合(模式4)模式进行网口绑定
    • CPU核数变为1如何解决

    在9天的出差过程中,虽然被搞得很疲惫,但自己依然从过程中学到了一些东西,通过把这些东西总结,并输出博客上,加深理解,防止在以后的工作中遇到相同的场景而束手无策。毕竟经验是需要积攒的。不要让一个问题在第一次遇到时是一个问题,在第二次遇到时,依然是一个问题,这样,我们便在不同的不断的小进步,当积少成多,量变导致质变,会很客观的。

    在操作是,主要是参考Ubuntu 网口绑定进行实践的

    为什么要进行网口绑定

    绑定,也称为端口聚合或链路聚合,意味着将多个网络接口(NIC)组合到单个链路,从而提供高可用性(容错),负载平衡,最大吞吐量或这些组合。 说白了,也是客户要求,通过这种网口绑定的机制实现高性能、可靠性,没有办法,只能去实现了。

    网口绑定的模式

    • 0:(balance-rr) Round-robin policy: (平衡轮询策略):传输数据包顺序是依次传输,直到最后一个传输完毕,此模式提供负载平衡和容错能力。
    • 1:(active-backup) Active-backup policy:(活动备份策略):只有一个设备处于活动状态。一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。此模式提供了容错能力
    • 2:(balance-xor) XOR policy:(平衡策略):传输根据[(源MAC地址xor目标MAC地址)mod设备数量]的布尔值选择传输设备。 此模式提供负载平衡和容错能力。
    • 3:(broadcast) Broadcast policy:(广播策略):将所有数据包传输给所有设备。此模式提供了容错能力。
    • 4:(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。
    • 5:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设 备传不通就用另一个设备接管当前设备正在处理的mac地址。
    • 6:(balance-alb) Adaptive load balancing: (适配器负载均衡):包括mode5,由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。

    材料

    ifenslave

    负载均衡软件fenslave,它是一款linux下的负载均衡工具,可以将数据包有效的分配到bonding驱动。

    网口绑定配置过程

    总览

    配置的主要步骤如下所示:

    配置步骤

    安装ifenslave

    负载均衡软件fenslave,它是一款linux下的负载均衡工具,可以将数据包有效的分配到bonding驱动。

    安装如果在联网环境下,可以采用

    apt-get install ifenslave
    

    如果是在离线环境下,可以在ifenslave 2.7ubuntu1 (amd64 binary) in ubuntu xenial下载ifenslave的安装包和源码包。

    在此需要简单的说明一下,在安装该可执行程序时,由于自己不知道ifenslave是否依赖其他文件,因此在网站上查看该软件包,不知为何就觉得一定依赖很多文件,因此就直接下载了源码包(并不明白为什么自己会先入为主),然后自己花时间通过光盘把源码包导入到服务器上,虽然解压就可以使用,但由于不知道应该把可执行文件放置在何处,这种方式不得不作罢。

    我同事说,或许可以直接安装了,这样可以按照程序自己设定的位置去自动放置应该位于的位置。因此自己就转向了这个思路,自己采用源码安装的思路是因为自己觉得很有可能,这个软件在安装时会需要依赖其他的软件,一旦产生依赖树,依赖爆炸的问题就没有办法解决了。然而实际上,这种问题并不存在,而是自己这种自己吓唬自己的思维方式限制了自己,导致自己浪费了一些时间,自己很明显应该先去验证是否真的存在依赖爆炸的问题,就像上图中,ifenslave2.7依赖了命令ifupdown(>=0.7.46),自己可以通过

    dpkg -l | grep ifupdown
    
    sqh@sqh-virtual-machine:~$ dpkg -l | grep -E "ifupdown|iproute2"
    ii  ifupdown  0.8.10ubuntu1.4         amd64   high level tools to configure network interfaces
    ii  iproute2  4.3.0-1ubuntu3.16.04.4  amd64   networking and traffic control tools
    sqh@sqh-virtual-machine:~$
    

    这就表明,ifupdown所需要的依赖,系统已经预先安装,因此可以放心的直接下载可执行deb包进行安装。

    离线压缩包

    可以在ifenslave 2.7ubuntu1 (amd64 binary) in ubuntu xenial下载ifenslave的安装包和源码包。

    在获取离线压缩包ifenslave_2.7ubuntu1_all.deb,使用dpkg -i 即可实现安装。

    dpkg -i ifenslave_2.7ubuntu1_all.deb
    

    配置内核管理

    介绍一下几个命令lsmodmodinfomodprobe

    lsmod主要是显示系统当前加载了那些内核模块。

    NAME
           lsmod - Show the status of modules in the Linux Kernel
    
    SYNOPSIS
           lsmod
    
    DESCRIPTION
           lsmod is a trivial program which nicely formats the contents of the /proc/modules, showing what kernel modules are currently loaded.
           简言之,lsmod就是表示系统加载了那些内核。
           
    

    modinfo则用于提取内核模块的信息。可以通过该命令查看内核模块是否已经存在,并且被系统所支持

    MODINFO(8)                                         modinfo                                        MODINFO(8)
    
    NAME
           modinfo - Show information about a Linux Kernel module
    
    SYNOPSIS
    MODINFO(8)                                         modinfo                                        MODINFO(8)
    
    NAME
           modinfo - Show information about a Linux Kernel module
    
    SYNOPSIS
           modinfo [-0] [-F field] [-k kernel] [modulename|filename...]
    
           modinfo -V
    
           modinfo -h
    
    DESCRIPTION
           modinfo extracts information from the Linux Kernel modules given on the command line. If the module
           name is not a filename, then the /lib/modules/version directory is searched, as is also done by
           modprobe(8) when loading kernel modules.
    
           modinfo by default lists each attribute of the module in form fieldname : value, for easy reading.
           The filename is listed the same way (although it's not really an attribute).
    
           This version of modinfo can understand modules of any Linux Kernel architecture.
    
    

    modprobe的主要作用从Linux内核中添加和移除模块。

    MODPROBE(8)                                       modprobe                                       MODPROBE(8)
    
    NAME
           modprobe - Add and remove modules from the Linux Kernel
    
    

    因此我的思路也是一样的,首先判断内核模块是否存在。

    注意:通过modinfo可以查看内核模块支持的参数,从下属的命令中,可以看到bonding的重要参数包括

    miimon(Link check interval in milliseconds (int))、mode(Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp))、primary(Primary network device to use (charp))等重要参数

    sqh@sqh-virtual-machine:~$ modinfo bonding
    filename:       /lib/modules/4.15.0-46-generic/kernel/drivers/net/bonding/bonding.ko
    author:         Thomas Davis, tadavis@lbl.gov and many others
    description:    Ethernet Channel Bonding Driver, v3.7.1
    version:        3.7.1
    license:        GPL
    alias:          rtnl-link-bond
    srcversion:     10478C9FE27D36218C487F5
    depends:        
    retpoline:      Y
    intree:         Y
    name:           bonding
    vermagic:       4.15.0-46-generic SMP mod_unload 
    parm:           max_bonds:Max number of bonded devices (int)
    parm:           tx_queues:Max number of transmit queues (default = 16) (int)
    parm:           num_grat_arp:Number of peer notifications to send on failover event (alias of num_unsol_na) (int)
    parm:           num_unsol_na:Number of peer notifications to send on failover event (alias of num_grat_arp) (int)
    parm:           miimon:Link check interval in milliseconds (int)
    parm:           updelay:Delay before considering link up, in milliseconds (int)
    parm:           downdelay:Delay before considering link down, in milliseconds (int)
    parm:           use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int)
    parm:           mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp)
    parm:           primary:Primary network device to use (charp)
    parm:           primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp)
    parm:           lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp)
    parm:           ad_select:802.3ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp)
    parm:           min_links:Minimum number of available links before turning on carrier (int)
    parm:           xmit_hash_policy:balance-xor and 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3, 3 for encap layer 2+3, 4 for encap layer 3+4 (charp)
    parm:           arp_interval:arp interval in milliseconds (int)
    parm:           arp_ip_target:arp targets in n.n.n.n form (array of charp)
    parm:           arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp)
    parm:           arp_all_targets:fail on any/all arp targets timeout; 0 for any (default), 1 for all (charp)
    parm:           fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp)
    parm:           all_slaves_active:Keep all frames received on an interface by setting active flag for all slaves; 0 for never (default), 1 for always. (int)
    parm:           resend_igmp:Number of IGMP membership reports to send on link failure (int)
    parm:           packets_per_slave:Packets to send per slave in balance-rr mode; 0 for a random slave, 1 packet per slave (default), >1 packets per slave. (int)
    parm:           lp_interval:The number of seconds between instances where the bonding driver sends learning packets to each slaves peer switch. The default is 1. (uint)
    
    

    由此,我们可以看到,Ubuntu 16.04支持模块bonding。

    可以执行命令

    sqh@sqh-virtual-machine:~$ lsmod | grep modinfo
    sqh@sqh-virtual-machine:~$ lsmod | grep bonding
    sqh@sqh-virtual-machine:~$ modprobe bonding
    modprobe: ERROR: could not insert 'bonding': Operation not permitted
    sqh@sqh-virtual-machine:~$ su 
    Password: 
    root@sqh-virtual-machine:/home/sqh# modprobe bonding
    root@sqh-virtual-machine:/home/sqh# lsmod | grep bonding
    bonding               163840  0
    root@sqh-virtual-machine:/home/sqh# 
    
    

    从上面可以看到,确实只有在使用root用户加载了bonding模块之后,lsmod才能看到该模块。

    配置开机自动加载模块

    配置系统开机自动加载模块

    sudo vim /etc/modules
    
    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.
    bonding
    

    配置interfaces

    配置网口绑定一个较为重要的内容,就是在配置文件**/etc/network/interfaces**中配置网口绑定的模式和检测率

    # interfaces(5) file used by ifup(8) and ifdown(8)
    auto lo
    iface lo inet loopback
    
    
    #auto enp96s0f0 
    #iface enp96s0f0 inet static
    #address 66.10.66.168
    #netmask 255.255.255.0
    #gateway 66.10.66.1
    
    #auto enp96s0f1
    #iface enp96s0f1 inet static
    #address 9.9.9.246
    #netmask 255.255.255.0
    #gateway 9.9.9.1
    
    auto enp96s0f0
    iface enp96s0f0 inet manual
    bond-master bond0
    bond-primary enp96s0f0
    
    auto enp96s0f1
    iface enp96s0f1 inet manual
    bond-master bond0
    
    
    auto bond0
    iface bond0 inet static
    address 66.10.66.168
    netmask 255.255.255.0
    gateway 66.10.66.1
    bond-mode active-backup
    bond-miimon 100
    bond-slaves none
    

    重启网络

    /etc/init.d/networing restart
    /etc/init.d/network-manager restart
    

    如果能够正常的重启网络,则不需要重启,否则需要通过reboot命令重启网络。

    查看结果

    /proc/net/bonding/bond0

    在配置完interfaces之后,通过重启网络或者重启服务器,如果能够正常运行,可以看到下面的结果

    root@ubuntu-desktop:~# cat /proc/net/bonding/bond0
    Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
    Bonding Mode: fault-tolerance (active-backup)(容错能力)
    Primary Slave: None
    Currently Active Slave: enp96s0f0
    
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    
    Slave Interface: enp96s0f1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:11:0a:57:5f:4e
    Slave queue ID: 0
    Slave Interface: eth2
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 00:11:0a:57:5f:4f
    Slave queue ID: 0
    

    ifconfig命令

    root@ubuntu-desktop:~# ifconfig
    
    bond0     Link encap:Ethernet  HWaddr 00:11:0a:57:5f:4e  
    
              inet addr:192.168.4.200  Bcast:192.168.4.255  Mask:255.255.255.0
    
              inet6 addr: fe80::211:aff:fe57:5f4e/64 Scope:Link
    
              UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
    
              RX packets:78 errors:0 dropped:2 overruns:0 frame:0
    
              TX packets:125 errors:0 dropped:0 overruns:0 carrier:0
    
              collisions:0 txqueuelen:0
    
              RX bytes:7645 (7.6 KB)  TX bytes:18267 (18.2 KB)
    
    enp96s0f0 Link encap:Ethernet  HWaddr 00:11:0a:57:5f:4e  
    
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
    
              RX packets:76 errors:0 dropped:0 overruns:0 frame:0
    
              TX packets:125 errors:0 dropped:0 overruns:0 carrier:0
    
              collisions:0 txqueuelen:1000
    
              RX bytes:7525 (7.5 KB)  TX bytes:18267 (18.2 KB)
    
    enp96s0f1 Link encap:Ethernet  HWaddr 00:11:0a:57:5f:4e  
    
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
    
              RX packets:2 errors:0 dropped:2 overruns:0 frame:0
    
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    
              collisions:0 txqueuelen:1000
    
              RX bytes:120 (120.0 B)  TX bytes:0 (0.0 B)
    

    通过对命令可以看到,虚拟出来的网卡bond0和两个物理网卡的Mac地址都变成同一个了,

    00:11:0a:57:5f:4e

    这也就表示在Ubuntu16.04服务器使用active-backup模式配置端口绑定已经成功了。

    验证

    验证的方式较为简单,当enp96s0f1和enp96s0f0两个网卡组合成模式1的网口绑定时,表示两个网卡形成主备模式,当网卡enp96s0f0故障时,可以直接把网线插入另一个网卡,系统仍然工作,就好像两个网卡是一个一样。

    总结

    通过本文,详细介绍了使用active-backup模式配置Ubutun服务器的过程,算是情景在现吧,这样当再次出现相同情景时,只要按部就班,就能自信的完成网口绑定的工作了。虽然现在总结了一上午挺累的,但还是挺开心的。

    参考

      2020年5月24日 12点37分于奥克斯时代未来之城
    
    展开全文
  • Ubuntu服务器使用动态链接聚合模式进行网口绑定 简介 在这次阿拉善的出差过程中,自己也在疲惫的工作中学到一些可以在以后的工作中使用或者自己觉得重要的东西,昨天晚上已经总结过XShell快速命令配置使用,在阿拉善...
  • linux网口绑定

    2015-07-09 12:19:38
    刚在一台IBM Xserver服务器上装了RedHat Linux Enterprise AS 4,为了提高网络的可靠性配置双网卡绑定。 一、环境描述 我的RedHat Linux Enterprise AS 4安装双口的Intel千兆网卡,通过ifconfig -a命令看到eth0...
  • 网口绑定bond

    2019-09-18 05:45:03
    根据选择的绑定模式,通道绑定使两个或者更多个网络接口作为一个网络接口,从而增加带宽或者提供冗余性模式0(平衡轮循) - 轮循策略,所有 接口都采用轮循方式在所有slave中传输封包,任何slave都可以接收模式1...
  • LINUX的网口绑定(bond)  同一主机,不同的网口,配置不同网段的IP!不要配置相同网段的IP。 centos6 配置bond的方法:  1、查看有哪些网口 ifconfig -a  2、选择2个自己需要绑定的网口  3、配置网口的...
  •   适用于需要进行冗余网卡绑定的操作,例如需要配置双网卡绑定主从模式的情况。 2.原理概述   网卡 bond 是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的...
  • 网口绑定的方法

    千次阅读 2014-11-14 16:36:26
    一、Linux下网口ba 设置绑定模式 1、在/etc/sysconfig/network-scripts/目录下创建一个设备名为"bond0"的接口配置文件,配置IP地址等信息   # vi ifcfg-bond0 DEVICE=bond0 IPADDR=192.168.241.57 NETMASK=255.255....
  • 网口绑定: 那么网口设置文件的设置方法在/etc/modprobe.d/bonding.conf的设定就不能像下面这样简单的叠加了: alias bond0 bonding options bonding mode=1 miimon=200 alias bond1 bonding options bonding...
  • 中标麒麟IP地址绑定网口方式

    千次阅读 2020-09-08 10:38:50
    中标麒麟IP地址绑定网口方式 中标麒麟系统使用多个网口不同IP的时候,遇到一个问题。有时IP回随着网卡的从新启动变得不一致。 白话说就是,网口对应的IP乱跳。 解决方式: 第一步:关闭网络管理服务,不用再开启。...
  • 1、关闭和停止NetworkManager服务systemctl stop NetworkManager.service # 停止NetworkManager服务systemctl disable NetworkManager.service # 禁止开机启动NetworkManager服务ps: 一定要关闭,不关会对做bonding...
  • Ubuntu 多网口绑定bond

    万次阅读 2015-11-12 10:20:29
     5:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设备传不通就用另一个设备...
  • DELL R620 CentOS 6.6 网口绑定(实战)

    千次阅读 2015-01-08 19:08:57
    CentOS 6.6 网口绑定(实战) 环境 DELLR620 四个网口名称分别为 em1 em2 em3 em4 目标:em1 em2绑定 为bond0 IP地址为192.168.11.136   第一步: 在/etc/sysconfig/network-scripts/目录 创建ifcfg-bond0文件 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,727
精华内容 2,290
关键字:

网口绑定方式