当前位置:文档之家› 详解双网卡绑定

详解双网卡绑定

Linux下的双网卡绑定bond0 em1 em2一、什么是bondingLinux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余二、bonding应用方向1、网络负载均衡对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。

对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。

如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。

对于一个百M的本地网络来说,文件服务器在多个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器。

为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。

如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是bonding2、网络冗余对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。

在生产型的系统中,网卡的可靠性就更为重要了。

在生产型的系统中,大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。

bonding 也能为网卡提供冗余的支持。

把多块网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡自动启用,并提供正常的服务,即:默认情况下只有一块网卡工作,其它网卡做备份三、bonding实验环境及配置1、实验环境系统为:CentOS,使用2块网卡(em1、em2 ==> bond0)来实现bonding技术2、bonding配置第一步:先查看一下内核是否已经支持bonding1)如果内核已经把bonding编译进内核,那么要做的就是加载该模块到当前内核;其次查看ifenslave该工具是否也已经编译modprobe -l bond* 或者modinfo bondingmodprobe bondinglsmod | grep 'bonding'echo 'modprobe bonding &> /dev/null' >> /etc/rc.local(开机自动加载bonding模块到内核)which ifenslave注意:默认内核安装完后就已经支持bonding模块了,无需要自己手动编译2)如果bonding还没有编译进内核,那么要做的就是编译该模块到内核(1)编译bondingtar -jxvf kernel-XXX.tar.gzcd kernel-XXXmake menuconfig选择" Network device support " -> " Bonding driver support "make bzImagemake modules && make modules_installmake install(2)编译ifenslave工具gcc -Wall -O -I kernel-XXX/include ifenslave.c -o ifenslave第二步:主要有两种可选择(第1种:实现网络负载均衡,第2种:实现网络冗余) 例1:实现网络冗余(即:mod=1方式,使用em1与em2)(1)编辑虚拟网络接口配置文件(bond0),并指定网卡IPvi /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0ONBOOT=yesBOOTPROTO=staticIPADDR=192.168.0.254BROADCAST=192.168.0.255NETMASK=255.255.255.0NETWORK=192.168.0.0GATEWAY=192.168.0.1USERCTL=noTYPE=Ethernet注意:建议不要指定MAC地址vi /etc/sysconfig/network-scripts/ifcfg-em1DEVICE=em1BOOTPROTO=noneONBOOT=yesUSERCTL=noMASTER=bond0SLAVE=yes注意:建议不要指定MAC地址vi /etc/sysconfig/network-scripts/ifcfg-em2DEVICE=em2BOOTPROTO=noneONBOOT=yesUSERCTL=noMASTER=bond0SLAVE=yes注意:建议不要指定MAC地址(2)编辑模块载入配置文件(/etc/modprobe.conf),开机自动加载bonding模块到内核vi /etc/modprobe.confalias bond0 bondingoptions bond0 miimon=100 mode=1alias net-pf-10 off #关闭ipv6支持说明:miimon是用来进行链路监测的。

比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3,4,5,6六种模式,常用为0,6,1三种,具体后面会介绍mode=0,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是与网卡相连的交换必须做特殊配置( 这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址mode=6,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是该模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址mode=1,表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份注意:bonding只能提供链路监测,即从主机到交换机的链路是否接通。

如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用。

最后,为了验证你的绑定是否正确,重启操作系统吧。

(完)网卡绑定就是多张网卡逻辑上作为一张网卡用。

可分为,负载均衡绑定和冗余绑定两种。

1.编辑虚拟网络接口配置文件[root@test~]# more /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0IPADDR=172.16.4.100NETMASK=255.255.255.0BROADCAST=172.16.4.255NETWORK=172.168.4.100ONBOOT=yes2.编辑各网卡的配置文件,注意编辑之前做好备份工作[root@test~]# more /etc/sysconfig/network-scripts/ifcfg-eth0BOOTPROTO=noneTYPE=EthernetDEVICE=eth0ONBOOT=yesMASTER=bond0slave=yes[root@test ~]# more /etc/sysconfig/network-scripts/ifcfg-eth1BOOTPROTO=noneTYPE=EthernetDEVICE=eth1ONBOOT=yesMASTER=bond0slave=yes3.修改/etc/modprobe.conf 文件,同样做好备份,最后加入2行alias bond0 bondingoptions bond0 miimon=100 mode=1 注:(1)、miimon 是链路监测的时间间隔单位是毫秒,miimon=100的意思就是,每100毫秒检测网卡和交换机之间是否连通,如不通则使用另外的链路。

(2)、mode=0 表示负载均衡方式,两块网卡都工作,需要交换机作支持mode=1 表示冗余方式,网卡只有一个工作,一个出问题启用另外的mode=6 表示负载均衡方式,两块网卡都工作,不需要交换机作支持[root@test~]# more /etc/modprobe.confalias eth0 b44alias eth1 8139tooalias usb-controller ehci-hcdalias usb-controller1 ohci-hcdalias bond0 bondingoptions bond0 miimon=100 mode=04.在/etc/rc.d/rc.local 加入如下一行ifenslave bond0 eth0 eth1[root@test~]# more /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/localifenslave bond0 eth0 eth15.重新启动后负载平衡已经能正常工作,service network restart,6.查看bond0的工作状态[root@test~]# more /proc/net/bonding/bond0Ethernet Channel Bonding Driver: v2.6.1 (October 29, 2004)Bonding Mode: load balancing (round-robin)MII Status: upMII Polling Interval (ms): 100Up Delay (ms): 0Down Delay (ms): 0Slave Interface: eth0MII Status: upLink Failure Count: 1Permanent HW addr: 00:1b:b9:58:8b:b2Slave Interface: eth1MII Status: downLink Failure Count: 0Permanent HW addr: 00:07:40:6c:ac:c87.查看经过绑定后的网卡工作情况[root@test ~]# ifconfig -abond0 Link encap:Ethernet HWaddr00:1B:B9:58:8B:B2inet addr:172.16.4.100 Bcast:172.16.4.255 Mask:255.255.255.0 inet6 addr:fe80::200:ff:fe00:0/64 Scope:LinkUP BROADCAST RUNNINGMASTER MULTICAST MTU:1500 Metric:1 RX packets:744154errors:0 dropped:0 overruns:0 frame:0TX packets:1866915errors:0 dropped:0 overruns:0 carrier:0collisions:0txqueuelen:0RX bytes:1099876146 (1.0GiB) TX bytes:121233595 (115.6 MiB)eth0 Link encap:Ethernet HWaddr00:1B:B9:58:8B:B2inet6 addr:fe80::21b:b9ff:fe58:8bb2/64 Scope:LinkUP BROADCAST RUNNINGSLAVE MULTICAST MTU:1500 Metric:1RX packets:744154errors:0 dropped:0 overruns:0 frame:0TX packets:1866905errors:0 dropped:0 overruns:0 carrier:0collisions:0txqueuelen:1000RX bytes:1099876146 (1.0GiB) TX bytes:121232839 (115.6 MiB)Interrupt:9eth1 Link encap:Ethernet HWaddr00:1B:B9:58:8B:B2inet6 addr:fe80::21b:b9ff:fe58:8bb2/64 Scope:LinkUP BROADCAST SLAVEMULTICAST MTU:1500 Metric:1RX packets:0 errors:0dropped:0 overruns:0 frame:0TX packets:10 errors:0dropped:0 overruns:0 carrier:0collisions:0txqueuelen:1000RX bytes:0 (0.0 b) TX bytes:756 (756.0 b)Interrupt:11 Baseaddress:0x1000lo Link encap:Local Loopbackinetaddr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128Scope:HostUP LOOPBACKRUNNING MTU:16436 Metric:1RX packets:2129 errors:0dropped:0 overruns:0 frame:0TX packets:2129 errors:0dropped:0 overruns:0 carrier:0collisions:0txqueuelen:0RX bytes:1998893 (1.9MiB) TX bytes:1998893 (1.9 MiB)sit0 Link encap:IPv6-in-IPv4NOARP MTU:1480 Metric:1RX packets:0 errors:0dropped:0 overruns:0 frame:0TX packets:0 errors:0dropped:0 overruns:0 carrier:0collisions:0txqueuelen:0RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)附:DEVICE=物理设备名IPADDR=IP地址NETMASK=掩码值NETWORK=网络地址BROADCAST=广播地址GATEWAY=网关地址ONBOOT=[yes|no](引导时是否激活设备)USERCTL=[yes|no](非root用户是否可以控制该设备)BOOTPROTO=[none|static|bootp|dhcp](引导时不使用协议|静态分配|BOOTP协议|DHCP 协议)HWADDR = 你的MAC地址。

相关主题