zoukankan      html  css  js  c++  java
  • Linux下双网卡绑定(bonding技术)

    http://www.cnblogs.com/qmfsun/p/3810905.html

    Linux网卡绑定探析

     

    2013-08-20 15:39:31

    现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景。linux操作系统下自带的网卡绑定模式,Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个网络接口设置来使用,用于网络负载均衡及网络冗余。当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(windows操作系统没有网卡绑定功能 需要第三方支持)。

    我们公司是做分布式文件系统的,很多项目都用到网卡绑定来提高性能。在网络找了很多资料,也做了大量的测试,下面就网卡绑定谈一下自己的看法。

    一、 Bonding的应用

    1、 网络负载均衡

    对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多个用户同时使用的情况下,网络压力是极大的,为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是bonding 。

    2、 网络冗余

    对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗余的支持。把网个网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡也能提供正常的服务。

    二、 Bonding的原理

    什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接 收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的 Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。

    三、 Bonding的模式

    linux有七种网卡绑定模式:

    模式代号

    模式名称

    模式方式

    说明

    0

    (balance-rr) Round-robin policy

    轮询策略

    该策略是按照设备顺序依次传输数据包,直到最后一个设备。这种模式提供负载均衡和容错能力。

    1

    (active-backup) Active-backup policy

    主备策略

    该策略只有一个设备处于活动状态。 一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见的。 此模式提供了容错能力。

    2

    (balance-xor) XOR policy

    异或策略

    该策略是根据MAC地址异或运算的结果来选择传输设备,提供负载均衡和容错能力。

    3

    Broadcast policy

    广播策略

    该策略将所有数据包传输给所有接口通过全部设备来传输所有数据,提供容错能力。

    4

    (802.3ad) IEEE 802.3ad Dynamic link aggregation

    动态链接聚合

    该策略通过创建聚合组来共享相同的传输速度,需要交换机也支持 802.3ad 模式,提供容错能力。

    5

    (balance-tlb) Adaptive transmit load balancing

    适配器传输负载均衡

    该策略是根据当前的负载把发出的数据分给每一个设备,由当前使用的设备处理收到的数据。本策略的通道联合不需要专用的交换机支持,提供负载均衡和容错能力。

     

    6

    (balance-alb) Adaptive load balancing

    适配器负载均衡

    该策略在IPV4情况下包含适配器传输负载均衡策略,由ARP协商完成接收的负载,通道联合驱动程序截获ARP在本地系统发送出的请求,用其中一个设备的硬件地址覆盖从属设备的原地址。

     

     

     

    1.编辑虚拟网卡band0的配置文件ifcfg-bond0,加入以下内容:

    2、编辑各个网卡的配置文件,这里用eth1和eth2。

    3、修改/etc/modprobe.conf 文件,加入以下内容:

    注: 
    (1)、miimon 是链路监测的时间间隔单位是毫秒,miimon=100的意思就是,每100毫秒检测网卡和交换机之间是否连通,如不通则使用另外的链路。 
    (2)、mode=0 表示负载均衡方式,两块网卡都工作,需要交换机作支持。 
              mode=1 表示冗余方式,网卡只有一个工作,一个出问题启用另外的。 
              mode=6 表示负载均衡方式,两块网卡都工作,不需要交换机作支持。

    4、重启网络:

    5、查看bond0的工作状态:

    6、查看绑定后的结果:

    总之,网卡绑定就是多张网卡逻辑上作为一张网卡用。可分为,负载均衡绑定和冗余绑定两种。

     

     

    Redhat Linux网卡配置与绑定

     

    Redhat Linux的网络配置,基本上是通过修改几个配置文件来实现的,虽然也可以用ifconfig来设置IP,用route来配置默认网关,用hostname来配置主机名,但是重启后会丢失。

    相关的配置文件

    /ect/hosts 配置主机名和IP地址的对应
    /etc/sysconfig/network 配置主机名和网关
    /etc/sysconfig/network-scripts/ifcfg-eth0 eth0配置文件,eth1则文件名为ifcfg-eth1,以此类推

    一、网卡配置

    假设我们要配置主机名为test,eth0的IP地址192.168.168.1/24,网关地址192.168.168.250

    则/etc/sysconfig/network文件内容如下:

    NETWORKING=yes
    HOSTNAME=test
    GATEWAY=192.168.168.250

    eth0对应的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0内容如下:

    DEVICE=eth0
    BOOTPROTO=static
    IPADDR=192.168.168.1
    NETMASK=255.255.255.0
    TYPE=Ethernet
    ONBOOT=yes

    二、单网卡绑定多个IP

    有时,我们需要在一块网卡上配置多个IP,例如,在上面的例子中,我们还需要为eth0配置IP 192.168.168.2和192.168.168.3。那么需要再在/etc/sysconfig/network-scripts下新建两个配置文件:

    ifcfg-eth0:0内容如下:

    DEVICE=eth0:0
    BOOTPROTO=static
    IPADDR=192.168.168.2
    NETMASK=255.255.255.0
    ONBOOT=yes

    ifcfg-eth0:1内容如下:

    DEVICE=eth0:1
    BOOTPROTO=static
    IPADDR=192.168.168.3
    NETMASK=255.255.255.0
    ONBOOT=yes

    三、多个网卡绑定成一块虚拟网卡

    为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断。比如我们可以将eth0和eth1绑定成虚拟网卡bond0

    首先在/etc/sysconfig/network-scripts/下创建虚拟网卡bond0的配置文件ifcfg-bond0,内容如下

    DEVICE=bond0
    BOOTPROTO=none
    BROADCAST=192.168.168.255
    IPADDR=192.168.168.1
    NETMASK=255.255.255.0
    NETWORK=192.168.168.0
    ONBOOT=yes
    TYPE=Ethernet
    GATEWAY=192.168.168.250
    USERCTL=no

    然后分别修改eth0和eth1的配置文件
    ifcfg-eth0内容:

    DEVICE=eth0
    BOOTPROTO=none
    ONBOOT=yes
    USERCTL=no
    MASTER=bond0
    SLAVE=yes

    ifcfg-eth1内容

    DEVICE=eth1
    BOOTPROTO=none
    ONBOOT=yes
    USERCTL=no
    MASTER=bond0
    SLAVE=yes

    因为linux的虚拟网卡是在内核模块中实现的,所以需要安装的时候已经装好该module。在/etc/modules.conf文件中添加如下内容(如果没有该文件,则新建一个):

    alias bond0 bonding
    options bond0 miimon=100 mode=1 primary=eth0

    其中miimon=100表示每100ms检查一次链路连接状态,如果不通则会切换物理网卡
    mode=1表示主备模式,也就是只有一块网卡是active的,只提供失效保护。如果mode=0则是负载均衡模式的,所有的网卡都是active,还有其他一些模式很少用到
    primary=eth0表示主备模式下eth0为默认的active网卡

    最后,在/etc/rc.local中加入

    modprobe bonding miimon=100 mode=1

    重启机器后可以看到虚拟网卡已经生效,可以通过插拔两个物理网卡的网线来进行测试,不过linux中网卡接管的时间好象比较长

     
     

    Linux系统下双网卡bonding的配置方法

    进入 /etc/sysconfig/network-scripts 目录下创建一个文件 ifcfg-bond0或cp ifcfg-eth0 ifcfg-bond0

    Vi  ifcfg-bond0 编辑内容如下

    DEVICE=bond0

    BOOTPROTO=static

    IPADDR=192.168.10.1

    NETMASK=255.255.255.0

    GATEWAY=192.168.10.254

    ONBOOT=yes

    TYPE=Ethernet

     

    VI   ifcfg-eth0  编辑内容如下

    DEVICE=eth0

    BOOTPROTO=static

    ONBOOT=yes

    MASTER=bond0

    SLAVE=yes

     

    VI  ifcfg-eth1  编辑内容如下

    DEVICE=eth1

    BOOTPROTO=static

    ONBOOT=yes

    MASTER=bond0

    SLAVE=yes

     

    编辑 vi /etc/ modprobe.conf

    在最后面加入

    alias bond0 bonding

    options bond0 miimon=100 mode=0

    说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份. bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用,Bond配置完成

     

    重启网络即可 service  network  restart

     

    查看 /proc/net/bonding/目录下bond0文件,能看到双网卡的运行状态

    -----------------------------------------------------

     

    linux双网卡绑定概念以及介绍:

     

    linux设置bond网卡绑定

    Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡;linux设置bond网卡绑定---有些用。
    Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项 技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。bonding技术的最早应用是在集群——beowulf上,为了提高集群节点间的数据传输而设计的。下面我们讨论一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。
    说了半天理论,其实配置很简单,一共四个步骤:
    实验的操作系统是Redhat Linux Enterprise 3.0
    绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。
    1.编辑虚拟网络接口配置文件,指定网卡IP
    vi /etc/sysconfig/ network-scripts/ ifcfg-bond0
    [root@rhas-13 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0
    2 #vi ifcfg-bond0
    将第一行改成 DEVICE=bond0
    # cat ifcfg-bond0
    DEVICE=bond0
    BOOTPROTO=static
    IPADDR=172.31.0.13
    NETMASK=255.255.252.0
    BROADCAST=172.31.3.254
    ONBOOT=yes
    TYPE=Ethernet
    这里要主意,不要指定单个网卡的IP 地址、子网掩码或网卡 ID。将上述信息指定到虚拟适配器(bonding)中即可。
    [root@rhas-13 network-scripts]# cat ifcfg-eth0
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    [root@rhas-13 network-scripts]# cat ifcfg-eth1
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    3 # vi /etc/modules.conf
    编辑 /etc/modules.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0
     
    加入下列两行
    alias bond0 bonding
    options bond0 miimon=100 mode=1
    说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。
    mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
    mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.
    bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用
    4 # vi /etc/rc.d/rc.local
    加入两行
    ifenslave bond0 eth0 eth1
    route add -net 172.31.3.254 netmask 255.255.255.0 bond0
    到这时已经配置完毕重新启动机器.
    重启会看见以下信息就表示配置成功了
    ................
    Bringing up interface bond0 OK
    Bringing up interface eth0 OK
    Bringing up interface eth1 OK
    ................
    下面我们讨论以下mode分别为0,1时的情况
    mode=1工作在主备模式下,这时eth1作为备份网卡是no arp的
    [root@rhas-13 network-scripts]# ifconfig 验证网卡的配置信息
    bond0 Link encap:Ethernet HWaddr 00:0E:7F:25 9:8B
    inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
    UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
    RX packets:18495 errors:0 dropped:0 overruns:0 frame:0
    TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:1587253 (1.5 Mb) TX bytes:89642 (87.5 Kb)
    eth0 Link encap:Ethernet HWaddr 00:0E:7F:25 9:8B
    inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
    UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
    RX packets:9572 errors:0 dropped:0 overruns:0 frame:0
    TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:833514 (813.9 Kb) TX bytes:89642 (87.5 Kb)
    Interrupt:11
    eth1 Link encap:Ethernet HWaddr 00:0E:7F:25 9:8B
    inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
    UP BROADCAST RUNNING NOARP SLAVE MULTICAST MTU:1500 Metric:1
    RX packets:8923 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:753739 (736.0 Kb) TX bytes:0 (0.0 b)
    Interrupt:15
    那也就是说在主备模式下,当一个网络接口失效时(例如主交换机掉电等),不回出现网络中断,系统会按照cat /etc/rc.d/rc.local里指定网卡的顺序工作,机器仍能对外服务,起到了失效保护的功能.
    在mode=0 负载均衡工作模式,他能提供两倍的带宽,下我们来看一下网卡的配置信息
    [root@rhas-13 root]# ifconfig
    bond0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
    inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
    UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
    RX packets:2817 errors:0 dropped:0 overruns:0 frame:0
    TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:226957 (221.6 Kb) TX bytes:15266 (14.9 Kb)
    eth0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
    inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
    UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
    RX packets:1406 errors:0 dropped:0 overruns:0 frame:0
    TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:113967 (111.2 Kb) TX bytes:7268 (7.0 Kb)
    Interrupt:11
    eth1 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
    inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
    UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
    RX packets:1411 errors:0 dropped:0 overruns:0 frame:0
    TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:112990 (110.3 Kb) TX bytes:7998 (7.8 Kb)
    Interrupt:15
    在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用.

    通过查看bond0的工作状态查询能详细的掌握bonding的工作状态
    [root@rhas-13 bonding]# cat /proc/net/bonding/bond0
    bonding.c:v2.4.1 (September 15, 2003)
    Bonding Mode: load balancing (round-robin)
    MII Status: up
    MII Polling Interval (ms): 0
    Up Delay (ms): 0
    Down Delay (ms): 0
    Multicast Mode: all slaves
    Slave Interface: eth1
    MII Status: up
    Link Failure Count: 0
    Permanent HW addr: 00:0e:7f:25:d9:8a
    Slave Interface: eth0
    MII Status: up
    Link Failure Count: 0
    Permanent HW addr: 00:0e:7f:25:d9:8b
    QuickLinux AS4 下网卡绑定实现负载均衡和失效保护
    Linux下的的负载平衡(说白了就是n块网卡邦定在一起当一个用速度变成原来的n倍)在linux下叫做bonding,理论就不说了,网上一大堆.网 上也有好多这样的文章但是大多都和实际配置过程有些不同,下面说说在2.6内核的quicklinux AS4 上具体的实现方法。
    第一步、编辑虚拟网络接口配置文件。
    建立 /etc/sysconfig/network-scripts/ifcfg-bond0 文件
    内容如下:
    DEVICE=bond0
    IPADDR=192.168.0.1
    NETMASK=255.255.255.0
    BROADCAST=192.168.0.255
    NETWORK=192.168.0.1
    ONBOOT=yes
    ip地址根据自己的需要配置(一个简单的方法就是拷贝一个ifcfg-eht0修改DEVICE=bond0)
    第二步、编辑真实网卡的配置文件(建议修改之前做好备份)
    /etc/sysconfig/network-scripts/ifcfg-eth*
    内容如下
    BOOTPROTO=none
    TYPE=Ethernet
    DEVICE=eth* (*与那个配置文件名中的相同)
    ONBOOT=yes
    MASTER=bond0
    slave=yes
    注意:真实网卡不能再设置ip地址了,按需要把所要绑定的真实网卡都按这个设置,主要是MASTER=bond0 和 slave=yes 一定不要弄错(简单的方法就是修改一个然后拷贝再修改)
    第三步、修改/etc/modprobe.conf 文件加入如下两行(建议做好备份)
    alias bond0 bonding
    options bond0 miimon=100 mode=0
    注:1、miimon 是链路监测的时间间隔单位是毫秒,miimon=100的意思就是,每100毫秒检测网卡和交换机之间是否连通,如不通则使用另外的链路。
    2、mode=0 表示负载均衡方式,两块网卡都工作。
    mode=1 表示冗余方式,网卡只有一个工作,一个出问题启用另外的。
    第四步、在/etc/rc.d/rc.local 加入如下一行(启动时执行此行命令)
    ifenslave bond0 eth0 eth1 …… eht*
    重新启动后负载平衡已经能正常工作。
    但是还有需要注意的,就是shorewall防火墙的设置,这个设置最好在配置负载平衡前进行,因为 shorewall在webmin下配置最简单,
    负载平衡启动后原来的设置的“网卡界面”里面的网卡就应该由eht* 改成了bond0 了 。不改设置全部通讯都会断掉。
    用service shorewall stop 也不能停掉防火墙,因为shorewall关掉后它就会启动“关闭规则(routerstopped)”。“关闭规则”默认的是不允许任何通讯。
    所以建议在配置负载平衡前建立防火墙规则。否则只能通过手工来改shorewall的配置文件了。
    以上的实现方法已经在QuickLinux as4 2.6.11-8内核下实现,网卡为双intel pro1000 速度相
    当令人满意,服务器双网卡和两台客户计算机所都连接到同一个普通交换机上,两台客户机网同时从
    SMB上用totle copy拷贝大文件速度都能达到10000KB/S以上。
    Linux下双网卡绑定实现负载均衡
    我们在这介绍的Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。
      bonding技术的最早应用是在集群——beowulf上,为了提高集群节点间的数据传输而设计的。下面我们讨论一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。说了半天理论,其实配置很简单,一共四个步骤: 实验的操作系统是Redhat Linux Enterprise 3.0。绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。

      双网卡邦定的拓朴图
    1.编辑虚拟网络接口配置文件,指定网卡IP:

    vi /etc/sysconfig/ network-scripts/ ifcfg-bond0
    [root@rhas-13 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0

    2、#vi ifcfg-bond0
    将第一行改成 DEVICE=bond0:

    # cat ifcfg-bond0
    DEVICE=bond0
    BOOTPROTO=static
    IPADDR=172.31.0.13
    NETMASK=255.255.252.0
    BROADCAST=172.31.3.254
    ONBOOT=yes
    TYPE=Ethernet

    这里要主意,不要指定单个网卡的IP 地址、子网掩码或网卡 ID。将上述信息指定到虚拟适配器(bonding)中即可。

    [root@rhas-13 network-scripts]# cat ifcfg-eth0
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    [root@rhas-13 network-scripts]# cat ifcfg-eth1
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp

    3、# vi /etc/modules.conf
    编辑 /etc/modules.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0.加入下列两行:

    alias bond0 bonding
    options bond0 miimon=100 mode=1

     

     

    1. Linux下的双网卡绑定  
    2. 将eth0,eth1绑定为bond0 ,节点内部通信用,使用192.168.1.0网段。  
    3. 将eth2,eth3绑定为bond1 ,对外服务,使用10.12*.*.0网段。注意将*替换成实际IP地址。  
    4.   
    5. 操作系统版本为:Red Hat Enterprise Linux AS release 4 (Nahant Update 7)  
    6.   
    7. <1>  
    8. 将eth0,eth1绑定为bond0  
    9.   
    10. vi /etc/sysconfig/network-scripts/ifcfg-bond0  
    11.   
    12. DEVICE=bond0  
    13. BOOTPROTO=none  
    14. ONBOOT=yes  
    15. TYPE=Ethernet  
    16. USERCTL=no  
    17. IPADDR=192.168.1.2  
    18. NETMASK=255.255.255.0  
    19. NETWORK=192.168.1.0  
    20. BROADCAST=192.168.1.255  
    21.   
    22.   
    23. vi /etc/sysconfig/network-scripts/ifcfg-eth0  
    24. DEVICE=eth0  
    25. BOOTPROTO=none  
    26. ONBOOT=yes  
    27. USERCTL=no  
    28. MASTER=bond0  
    29. SLAVE=yes  
    30. 注:不要有实际网卡的MAC地址。  
    31.   
    32. vi /etc/sysconfig/network-scripts/ifcfg-eth1  
    33. DEVICE=eth1  
    34. BOOTPROTO=none  
    35. ONBOOT=yes  
    36. USERCTL=no  
    37. MASTER=bond0  
    38. SLAVE=yes  
    39.   
    40.   
    41. <2>  
    42. 将eth2,eth3绑定为bond1  
    43.   
    44. vi /etc/sysconfig/network-scripts/ifcfg-bond1  
    45.   
    46. DEVICE=bond1  
    47. BOOTPROTO=none  
    48. ONBOOT=yes  
    49. TYPE=Ethernet  
    50. USERCTL=no  
    51. IPADDR=10.12*.*.61  
    52. NETMASK=255.255.255.0  
    53. NETWORK=10.12*.*.0  
    54. BROADCAST=10.12*.*.255  
    55. GATEWAY=10.12*.*.254  
    56.   
    57. vi /etc/sysconfig/network-scripts/ifcfg-eth2  
    58. DEVICE=eth2  
    59. BOOTPROTO=none  
    60. ONBOOT=yes  
    61. USERCTL=no  
    62. MASTER=bond1  
    63. SLAVE=yes  
    64.   
    65.   
    66. vi /etc/sysconfig/network-scripts/ifcfg-eth3  
    67. DEVICE=eth3  
    68. BOOTPROTO=none  
    69. ONBOOT=yes  
    70. USERCTL=no  
    71. MASTER=bond1  
    72. SLAVE=yes  
    73.   
    74.   
    75. <3>  
    76.   
    77. 添加内核模块:  
    78.   
    79. vi /etc/modprobe.conf  
    80. 添加  
    81. # BONDING  
    82. install bond0 /sbin/modprobe bonding -o bond0 mode=1 miimon=100  
    83. install bond1 /sbin/modprobe --ignore-install bonding -o bond1 mode=1 miimon=100  
    84.   
    85. note:  
    86. mode=0 : load balancing (round-robin)  
    87. mode=1 : fault-tolerance (active-backup)  
    88.   
    89.   
    90. 加入启动项  
    91. vi /etc/rc.d/rc.local  
    92. ifenslave bond0 eth0 eth1  
    93. ifenslave bond1 eth2 eth3  
    94.   
    95. 启动网卡  
    96. ifconfig bond0 192.168.1.2 up  
    97. ifenslave bond0 eth0 eth1  
    98.   
    99. ifconfig bond1 10.12*.*.61 up  
    100. ifenslave bond1 eth2 eth3  
    101.   
    102.   
    103. 重启网络服务或系统:  
    104. service network restart  
    105.   
    106.   
    107. 查看绑定网卡工作状况:  
    108. cat /proc/net/bonding/bond0  
    109. cat /proc/net/bonding/bond1  
    110.   
    111.   
    112. ************************************************************  
    113.   
    114. linux4.7上,使用如下方式配置,当设置两个或以上bond时,bond网卡的工作模式会有问题,并且第二个bond配置不工作:  
    115.   
    116. vi /etc/modprobe.conf  
    117. 添加  
    118. # BONDING  
    119. alias bond1 bonding  
    120. options bond1 mode=1 miimon=100  

     

     

    CentOS6.2网卡绑定配置

     

    下面主要介绍在CentOS6.2下使用系统自带的bonding进行网卡绑定的详细步骤,在此之前你可以看一下Linux网卡绑定探析,你也可以使用网卡绑定的脚本进行网卡绑定操作。

    注意:请在配置前关闭NetworkManager服务

    [root@h63 ~]# service NetworkManager status && service NetworkManager start

    网卡绑定一次可以绑定多个网卡,你可以使用ifconfig -a查看你的网卡信息,例如:

    [root@h63 ~]# ifconfig -a
    em1       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:03
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
              RX packets:48236002 errors:0 dropped:0 overruns:0 frame:0
              TX packets:16156472 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:4838973371 (4.5 GiB)  TX bytes:1301118550 (1.2 GiB)
              Interrupt:36 Memory:d6000000-d6012800

    em2       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:05
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
              RX packets:42385720 errors:0 dropped:0 overruns:0 frame:0
              TX packets:7283526 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:4307780986 (4.0 GiB)  TX bytes:466840625 (445.2 MiB)
              Interrupt:48 Memory:d8000000-d8012800

    em3       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:07
              BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
              Interrupt:32 Memory:da000000-da012800

    em4       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:09  
              BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
              Interrupt:42 Memory:dc000000-dc012800 

    这里有4个网卡,分别是em1、em2、em3和em4,我们把em1和em2做一个绑定,绑定模式为6(关于网卡绑定模式的介绍请看Linux网卡绑定探析),首先我给给网卡绑定后的设备起个名字bond0(名称可以自定义),并创建:

    [root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0

    DEVICE=bond0        #设备名称
    BOOTPROTO=static      #静态IP
    ONBOOT=yes          #自动启动
    IPADDR=172.16.16.63    #设备绑定的IP
    GATEWAY=172.16.23.254       #设备绑定的网关
    NETMASK=255.255.248.0    #设备绑定的掩码
    TYPE=Ethernet         #设备绑定的类型

    编辑需要绑定的网卡:

    [root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-em1

    DEVICE=em1
    BOOTPROTO=none
    ONBOOT=yes
    MASTER=bond0  #绑定后的设备名称
    SLAVE=yes
    TYPE=Ethernet

    [root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-em2

    DEVICE=em2
    BOOTPROTO=none
    ONBOOT=yes
    MASTER=bond0  #绑定后的设备名称
    SLAVE=yes
    TYPE=Ethernet

    说明:配置网卡时不要填写IP地址和MAC地址

    配置加载模式设置:

    [root@h63 ~]# vim /etc/modprobe.conf

    alias bond0 bonding
    options bond0 miimon=100 mode=6

    说明:mode是网卡绑定的模式,此处是模式6

    也可以在/etc/modprobe.d/下创建一个文件:

    [root@h63 ~]# vim /etc/modprobe.d/bond

    alias bond0 bonding
    options bond0 miimon=100 mode=6

    绑定配置完成,重启网络服务

    [root@h63 ~]#service network restart

    查看网卡绑定的情况:

    [root@h63 ~]# cat /proc/net/bonding/bond0 
    Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

    Bonding Mode: adaptive load balancing
    Primary Slave: None
    Currently Active Slave: em1
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0

    Slave Interface: em1
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 78:2b:cb:30:08:03
    Slave queue ID: 0


    Slave Interface: em2
    MII Status: up
    Speed: 1000 Mbps
    Duplex: full
    Link Failure Count: 0
    Permanent HW addr: 78:2b:cb:30:08:05
    Slave queue ID: 0

    至此,网卡绑定就完成了。 

     
     
     
    CetOS(RHEL) 5.3下网卡绑定设置指南 

    修改三类文件:

    /etc/sysconfig/network-scripts/下的ifcfg-*文件

    /etc/modprobe.conf文件

    /etc/init.d/rc.local文件


    设置方法:

    1. 环境:windows xp+vmware, centos 5.3, 4块网卡,做两组绑定。

    当前网卡:eth0-3

    绑定后虚拟网卡:bond0-1

    eth0、eth2绑定为bond0,eth1、eth3绑定为bond1,不同网段。


    2. 修改ifcfg-*文件

    增加ifcfg-bond0、ifcfg-bond1两个文件:

    文件内容:
    [root@localhost network-scripts]# cat ifcfg-bond0
    # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
    DEVICE=bond0
    BOOTPROTO=none

    IPADDR=192.168.100.101
    NETMASK=255.255.255.0

    NETWORK=192.168.100.0
    ONBOOT=yes
    USERCTL=no
    TYPE=Ethernet
    GATEWAY=192.168.100.101


    [root@localhost network-scripts]# cat ifcfg-bond1
    # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
    DEVICE=bond1
    BOOTPROTO=none

    IPADDR=172.16.0.1
    NETMASK=255.255.255.0

    NETWORK=172.16.0.0
    ONBOOT=yes
    USERCTL=no
    #TYPE=Ethernet
    TYPE=Ethernet


    修改ifcfg-eth0、ifcfg-eth1、ifcfg-eth2、ifcfg-eth3四个网卡配置文件:

    内容:

    [root@localhost network-scripts]# cat ifcfg-eth0
    # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
    DEVICE=eth0
    BOOTPROTO=none

    ONBOOT=yes
    USERCTL=no
    MASTER=bond0
    SLAVE=yes

    TYPE=Ethernet

    [root@localhost network-scripts]# cat ifcfg-eth1
    # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
    DEVICE=eth1
    BOOTPROTO=none

    ONBOOT=yes
    USERCTL=no
    MASTER=bond1
    SLAVE=yes

    TYPE=Ethernet

    [root@localhost network-scripts]# cat ifcfg-eth2
    # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
    DEVICE=eth2
    BOOTPROTO=none

    ONBOOT=yes
    USERCTL=no
    MASTER=bond0
    SLAVE=yes

    TYPE=Ethernet

    [root@localhost network-scripts]# cat ifcfg-eth3
    # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
    DEVICE=eth3
    BOOTPROTO=none

    ONBOOT=yes
    USERCTL=no
    MASTER=bond1
    SLAVE=yes

    TYPE=Ethernet

    3. 修改/etc/modprobe.conf文件

    [root@localhost network-scripts]# cat /etc/modprobe.conf
    alias eth0 pcnet32
    alias eth1 pcnet32
    alias scsi_hostadapter mptbase
    alias scsi_hostadapter1 mptspi
    alias scsi_hostadapter2 ata_piix
    alias eth2 pcnet32
    alias eth3 pcnet32
    alias bond0 bonding
    options bond0 miimon=100 mode=0
    alias bond1 bonding
    options bond1 miimon=100 mode=0
     


    4. 修改/etc/rc.d/rc.local文件
    [root@localhost network-scripts]# cat /etc/rc.d/rc.local 
    #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    touch /var/lock/subsys/local
    modprobe bonding miimon=100 mode=0 


    5. 测试

    方法1:检查网络配置是否正常,是否可启动
    /etc/init.d/network restart

    方法2:检查系统启动时虚拟网卡是否正常启动
    reboot

    方法3:检查绑定网卡是负载均衡模式,还是主备冗余模式
    cat /proc/net/bonding/bond0
    cat /proc/net/bonding/bond1


    6. 说明

    如果是主备冗余模式,需将
    options bond0 miimon=100 mode=0中

    mode 改为1

    其它改为
    options bond0 miimon=100 mode=1 primary=eth0 

    primary=eth0表示当前主网卡为eth0

    其它在/etc/rc.d/rc.local中也修改
    modprobe bonding miimon=100 mode=1
     
     
     
     
     
     

    Linux双网卡绑定——理论与实践(实践篇)

     

    Linux双网卡绑定的主要实现步骤为: 
    1. 配置一个虚拟的网卡bond0 
    2. 配置eth0,eth1为slave模式 
    3. 加载bonding模块 
    4. 重启系统

    下面将详细介绍每个步骤 
    一. 配置虚拟网卡bond0

    新建/etc/sysconfig/network-scripts/ifcfg-bond0文件,内容如下:

    复制代码
    复制代码
    #bond0配置文件 
    DEVICE=bond0 
    BOOTPROTO=static 
    IPADDR=192.168.0.100 
    NETMASK=255.255.255.0 
    BROADCAST=192.168.0.255 
    GATEWAY=192.168.0.1 
    ONBOOT=yes 
    TYPE=Ethernet
    复制代码
    复制代码

     

    二. 配置eth0,eth1为slave模式

    更改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0

    #eth0配置文件 
    DEVICE=eth0 
    BOOTPROTO=none  
    SLAVE=yes  
    MASTER=bond0 
    USERCTL=yes


    更改配置文件/etc/sysconfig/network-scripts/ifcfg-eth1

     

    #eth1配置文件 
    DEVICE=eth1 
    BOOTPROTO=none  
    SLAVE=yes  
    MASTER=bond0 
    USERCTL=yes


    三. 加载bonding模块

    修改模块配置文件/etc/modprobe.conf,在最后加入以下内容:

    alias bond0 bonding 
    options bond0 miimon=100 mode=0 

     

    四. 重启系统

    重启之后,测试bonding是否正常运行,运行ifconfig命令,结果如下

    复制代码
    复制代码
    [root@linux ~]# ifconfig 
    bond0     Link encap:Ethernet  HWaddr 00:0C:29:45:B4:D1  
              inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0 
              inet6 addr: fe80::20c:29ff:fe45:b4d1/64 Scope:Link 
              UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1 
              RX packets:100 errors:0 dropped:0 overruns:0 frame:0 
              TX packets:130 errors:0 dropped:0 overruns:0 carrier:0 
              collisions:0 txqueuelen:0 
              RX bytes:17527 (17.1 KiB)  TX bytes:20937 (20.4 KiB) eth0      Link encap:Ethernet  HWaddr 00:0C:29:45:B4:D1  
              inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0 
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1 
              RX packets:65 errors:0 dropped:0 overruns:0 frame:0 
              TX packets:99 errors:0 dropped:0 overruns:0 carrier:0 
              collisions:0 txqueuelen:1000 
              RX bytes:10340 (10.0 KiB)  TX bytes:15317 (14.9 KiB) 
              Interrupt:18 Base address:0x1080 eth1      Link encap:Ethernet  HWaddr 00:0C:29:45:B4:D1  
              inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0 
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1 
              RX packets:40 errors:0 dropped:0 overruns:0 frame:0 
              TX packets:40 errors:0 dropped:0 overruns:0 carrier:0 
              collisions:0 txqueuelen:1000 
              RX bytes:7487 (7.3 KiB)  TX bytes:7022 (6.8 KiB) 
              Interrupt:19 Base address:0x1400
    复制代码
    复制代码


    运行cat /proc/net/bonding/bond0,结果如下:

    复制代码
    复制代码
    [root@linux ~]# cat /proc/net/bonding/bond0 

    Ethernet Channel Bonding Driver: v3.3.0 (June 10, 2008)

    Bonding Mode: load balancing (round-robin) 
    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:0c:29:45:b4:d1

    Slave Interface: eth1 
    MII Status: up 
    Link Failure Count: 0 
    Permanent HW addr: 00:0c:29:45:b4:db
    复制代码
    复制代码
  • 相关阅读:
    JSP技术
    Eclipse中新建Maven Web项目报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    Zuul【文件上传】
    Zuul【限流】
    Zuul【自定义Filter】
    Zuul【工作原理】
    Zuul【基础配置】
    Zuul【入门】
    Hystrix【参数配置及缓存】
    Hystrix【异常机制处理】
  • 原文地址:https://www.cnblogs.com/kex1n/p/6049122.html
Copyright © 2011-2022 走看看