Linux双网卡绑定实现负载均衡和失效保护
linux双网卡绑定配置,验证及测试
shwang 西安 linux+c E-mail:fenghuaster@ QQ:271904106
内容概要
什么是双网卡绑定 检查kernel是否支持绑定 检查 是否支持绑定 绑定配置 绑定后的验证 测试带宽
什么是双网卡绑定
双网卡绑定实现就是使用两块网卡虚拟成为一块网卡, 双网卡绑定实现就是使用两块网卡虚拟成为一块网卡, 这个聚合起来的设备看起来是一个单独的以太网接口设备。 这个聚合起来的设备看起来是一个单独的以太网接口设备。 通俗讲就是两块网卡具有相同的IP IP地址而并行链接聚合成 通俗讲就是两块网卡具有相同的IP地址而并行链接聚合成 一个逻辑链路工作。 一个逻辑链路工作。 Linux下双网卡绑定技术实现负载均衡和失效保护。 Linux下双网卡绑定技术实现负载均衡和失效保护。 下双网卡绑定技术实现负载均衡和失效保护
检查kernel是否支持绑定 是否支持绑定 检查
cat /boot/config-2.6.18-*** |grep –i bongding 如果有: 如果有: CONFIG_BONDING=m 表示支持。 表示支持。 否则需要编译内核使她支持bonding后,才可以做双网卡绑定 否则需要编译内核使她支持 后
配置绑定
1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件。 1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件。 新建/etc/sysconfig/network 文件 DEVICE=bond0 ONBOOT=yes BOOTPROTO=static PADDR=192.168.9.202 NETMASK=255.255.255.0 GATEWAY=192.168.9.1 USERCTL=no
双网卡绑定实现负载,冗余及内外网设置
Linux配置双网卡绑定,以实现冗余及负载均衡1、首先需要彻底关闭NetworlManger 服务,如果有的话,否则会和bond网卡冲突[root@rhel ~]#service NetworlManger stop[root@rhel ~]#chkconfig NetworlManger off2、新建ifcfg-bond0配置文件[root@rhel ~]#vi /etc/sysconfig/network-scripts/ifcg-bond0DEVICE=bond0BOOTPROTO=noneIPADDR=192.168.1.11NETMASK=255.255.255.0ONBOOT=yesUSERCTL=no #用户控制禁止3、修改ifcfg-eth0配置文件,将IP/GW/NW/ID/HW等注释,保留以下信息[root@rhel ~]#vi /etc/sysconfig/network-scripts/ifcg-eth0DEVICE=eth0BOOTPROTO=noneONBOOT=yesUSERCTL=noMASTER=bond0 #将网卡指向bond0SLAVE=yes #启用双网卡4、修改ifcfg-eth1配置文件[root@rhel ~]#vi /etc/sysconfig/network-scripts/ifcg-eth0DEVICE=eth1BOOTPROTO=noneONBOOT=yesUSERCTL=noMASTER=bond0 #将网卡指向bond0SLAVE=yes #启用双网卡5、修改rc.local文件,添加以下信息[root@rhel ~]#vi /etc/rc.localifenslave bond0 eth0 eth1 #rhel6以上可以不设,但需要重启。
6、修改内核文件,系统不同有差异需要谨慎查看,查看备注。
Rhel6.3以下添加[root@rhel ~]#vi /etc/modprobe.d/dist.confAlias bond0 bondingOptions bond0 mode=1 miimon=50 #可在ifcfg-bond0中添加用BONDING_OPT=””连接。
双网卡均衡负载
linux,bonding说明:绑定多块网卡为一个虚拟ip,类似csico的etherchannel,实现冗余或负载均衡和增加带宽的功能。
内核需要bonding的支持,察看是否挂在bonding,lsmod命令。
默认2.6内核中bonding 已经被编译为M的选项,不需重新编译内核。
其实Redhat关于bond,在kernel-doc里有一篇文档,讲述得非常详细,可以先看看/usr/share/doc/kernel-doc-2.6.18/Documentation/networking/bonding.txt一:不需重起的配置方法。
1 modprobe bonding miimon=1002 ifconfig bond0 192.168.1.1 netmask 255.255.255.03 ifenslave bond0 eth0 eth1二:重起仍然生效的配置方法一。
1关闭要绑定的物理网卡修改ifcfg-eth0和ifcfg-eth1的启动项BOOTPROTO=noneONBOOT=no2建立虚拟网卡在/etc/sysconfig/network-scripts/ 目录下建立ifcfg-bond0,并修改/etc/modprobe.conf文件实现开机自动挂载。
/etc/sysconfig/network-scripts/ifcfg-bond0 配置如下:DEVICE=bond0IPADDR=192.168.0.193NETMASK=255.255.255.0BOOTPROTO=staticONBOOT=yesGATEWAY=192.168.0.3/etc/modprobe.conf 配置如下:alias eth0 bnx2alias eth1 bnx2alias bond0 bondingoptions bonding miimon=100 mode=1(miimon是用来进行链路监测的。
比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路。
在linux(ubuntu)下虚拟机下双网卡负载均衡(lacp)
一、配置虚拟机虚拟机上映射物理网卡设置Edit→virtual network edit-→host virtual network mapping 见下图2.在主界面下:点击edit virtual machine seting 弹出如下三个网卡第一个网卡就设置默认桥模式:vmnet0(default bridged)每二个网卡点击custom设置 vmnet1(bridged)每三个网卡点击custom设置 vmnet2(bridged)二、配置双网卡做lacp∙mode=0 (balance-rr): 採取依序使用的連線的方式,提供了負載均衡及容錯的功能λ∙mode=1 (active-backup): 眾多的連線中,只有一個是啟用的狀態,當啟用的連線失效(敗),則由備援的連線接手,提供容錯機制λ∙mode=2 (balance-xor): 採用xor的演算法來選擇傳輸的連線,其結果是以目的地MAC為基準選擇哪一條連線;提供了負載均衡及容錯機制λ∙mode=3 ( broadcast): 把封包送到所有的連線,當有連線失效沒有任何downtime,但此法過於浪費連線資源;有容錯機制λ∙mode=4 (802.3ad, LACP): IEEE 802.3ad Dynamic Link Aggregation協定;提供較好的機制,並可搭配802.1Q trunking同時介接不同的VLAN;惟獨此法必須與支援802.3ad的交換機介接,並且每個slave的驅動程式都需支援ethtool擷取介面的訊息, 較為豪華,但是提供了相當優良的應用,負載均衡及容錯機制λ∙mode=5 (balance-tlb): Adaptive Transmit load balancing; 無須交換機支援但slave驅動程式需支援ethtool;根據連線介面卡的負載決定traffic如何送出,回覆的traffic則由送出的salve接收λ∙mode=6 (balance-alb): 包含了mode 5所有功能及需求,再加上接收traffic時的負載均衡.编辑/etc/network/interfacesauto lo bond0 eth3 eth4iface bond0 inet staticaddress 1.1.1.2netmask 255.255.255.0network 1.1.1.0gateway 1.1.1.1up /sbin/ifenslave bond0 eth3up /sbin/ifenslave bond0 eth4iface lo loopbackiface eth3 inet staticaddress 1.1.2.4netmask 255.255.255.0iface eth4 inet staticaddress 1.1.2.5netmask 255.255.255.0再编辑 /etc/modprobe.configalias bond0 bondingoptions bonding mode=4 miimon=100接着:/etc/modulesbonding mode=4 miimon=100最后重启网络即可/etc/init.d/networking restart注:最好重启一下系统Linux下的绑定状态:root@qinyb-vmubuntu:~/下载# cat /proc/net/bonding/bond0Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)Bonding Mode: load balancing (round-robin)MII Status: upMII Polling Interval (ms): 100Up Delay (ms): 0Down Delay (ms): 0Slave Interface: eth3MII Status: upLink Failure Count: 0Permanent HW addr: 00:0c:29:72:71:12Slave Interface: eth4MII Status: upLink Failure Count: 0Permanent HW addr: 00:0c:29:72:71:1c接口配置信息:root@qinyb-vmubuntu:~/下载# ifconfigbond0 Link encap:以太网硬件地址 00:0c:29:72:71:12inet 地址:1.1.1.2 广播:1.1.1.255 掩码:255.255.255.0inet6 地址: fe80::20c:29ff:fe72:7112/64 Scope:LinkUP BROADCAST RUNNING MASTER MULTICAST MTU:1500 跃点数:1 接收数据包:395 错误:0 丢弃:0 过载:0 帧数:0发送数据包:1724 错误:0 丢弃:0 过载:0 载波:0碰撞:0 发送队列长度:0接收字节:56440 (56.4 KB) 发送字节:152556 (152.5 KB)eth2 Link encap:以太网硬件地址 00:0c:29:72:71:08inet 地址:192.168.181.4 广播:192.168.181.255 掩码:255.255.255.0 inet6 地址: fe80::20c:29ff:fe72:7108/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1接收数据包:52500 错误:0 丢弃:0 过载:0 帧数:0发送数据包:30026 错误:0 丢弃:0 过载:0 载波:0碰撞:0 发送队列长度:1000接收字节:49586740 (49.5 MB) 发送字节:2592952 (2.5 MB)中断:18 基本地址:0x2000eth3 Link encap:以太网硬件地址 00:0c:29:72:71:12inet 地址:1.1.2.4 广播:1.1.2.255 掩码:255.255.255.0UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 跃点数:1 接收数据包:205 错误:0 丢弃:0 过载:0 帧数:0发送数据包:891 错误:0 丢弃:0 过载:0 载波:0碰撞:0 发送队列长度:1000接收字节:39490 (39.4 KB) 发送字节:80263 (80.2 KB)中断:16 基本地址:0x2080eth4 Link encap:以太网硬件地址 00:0c:29:72:71:12inet 地址:1.1.2.5 广播:1.1.2.255 掩码:255.255.255.0UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 跃点数:1 接收数据包:190 错误:0 丢弃:0 过载:0 帧数:0发送数据包:833 错误:0 丢弃:0 过载:0 载波:0碰撞:0 发送队列长度:1000接收字节:16950 (16.9 KB) 发送字节:72293 (72.2 KB)中断:17 基本地址:0x2400lo Link encap:本地环回inet 地址:127.0.0.1 掩码:255.0.0.0inet6 地址: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 跃点数:1接收数据包:899 错误:0 丢弃:0 过载:0 帧数:0发送数据包:899 错误:0 丢弃:0 过载:0 载波:0碰撞:0 发送队列长度:0接收字节:97324 (97.3 KB) 发送字节:97324 (97.3 KB)Eth2 连外网没有参与绑定。
Linux网卡Bonding配置
Linux⽹卡Bonding配置⼀、bonding技术简介 bonding(绑定)是⼀种将n个物理⽹卡在系统内部抽象(绑定)成⼀个逻辑⽹卡的技术,能够提升⽹络吞吐量、实现⽹络冗余、负载等功能,有很多优势。
Linux 系统下⽀持⽹络 Bonding,也叫 channel Bonding,它允许你将 2 个或者更多的⽹卡绑定到⼀起,成为⼀个新的逻辑⽹卡,从⽽实现故障切换或者负载均衡的功能,具体情况要取决于 mode 参数的具体配置。
Linux系统bonding技术是内核层⾯实现的,它是⼀个内核模块(驱动)。
使⽤它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信息, ⼀般来说都⽀持.modinfo bondingbonding的七种⼯作模式bonding技术提供了七种⼯作模式,在使⽤的时候需要指定⼀种,每种有各⾃的优缺点.balance-rr (mode=0) 默认, 有⾼可⽤ (容错) 和负载均衡的功能, 需要交换机的配置,每块⽹卡轮询发包 (流量分发⽐较均衡).active-backup (mode=1) 只有⾼可⽤ (容错) 功能, 不需要交换机配置, 这种模式只有⼀块⽹卡⼯作, 对外只有⼀个mac地址。
缺点是端⼝利⽤率⽐较低balance-xor (mode=2) 不常⽤broadcast (mode=3) 不常⽤802.3ad (mode=4) IEEE 802.3ad 动态链路聚合,需要交换机配置,没⽤过balance-tlb (mode=5) 不常⽤balance-alb (mode=6) 有⾼可⽤ ( 容错 )和负载均衡的功能,不需要交换机配置 (流量分发到每个接⼝不是特别均衡)详细说明请参考⽹络上其他资料,了解每种模式的特点根据⾃⼰的选择就⾏, ⼀般会⽤到0、1、4、6这⼏种模式。
⼆、RHEL6 下的 Boding 配置: 在所有的 RHEL 版本下,⽬前都不⽀持在 NetworkManager 服务协作下实现 Bonding 配置.所以要么直接关闭 NetworkManager 服务,并取消其开机启动,要么在所有涉及 Bonding 的⽹卡配置⽂件中(包含ethx 或者 bondY),显式地添加⼀⾏:NM_CONTROLLED=no 要配置⽹卡 Bonding,你必须在/etc/sysconfig/network-scripts/⽬录下建⽴逻辑⽹卡的配置⽂件 ifcfg-bondX,⼀般 X 从 0 开始,依次增加.具体的⽂件内容根据参与 Bonding 的⽹卡类型的不同⼜有所差别,以最最常见的 Ethernet 为例,配置⽂件⼤致是这样的:DEVICE=bond0IPADDR=192.168.0.1NETMASK=255.255.255.0ONBOOT=yesBOOTPROTO=noneUSERCTL=noBONDING_OPTS="bonding parameters separated by spaces"NM_CONTROLLED=no BONDING_OPTS 这⼀⾏填写你需要的 Bonding 模式,⽐如 BONDING_OPTS="miimon=100 mode=1" ,下⾯也会介绍⼏种常见的配置⽅式和它代表的意义,这⾥暂时不展开说明.为了⽅便称呼,我们把Bongding 后的逻辑⽹卡 bondX 称为主⽹卡(Master),参与 Bonding 的物理⽹卡 ethY 称为⼦⽹卡(Slave). 主⽹卡配置⽂件创建完毕以后,⼦⽹卡的配置⽂件也需要做相应的改变,主要是添加 MASTER=和SLAVE=这两项参数,我们假设 2 张⼦⽹卡为 eth0 和 eth1,那么他们的配置⽂件⼤致的样⼦会是这样⼦:DEVICE=ethXBOOTPROTO=noneONBOOT=yesMASTER=bond0SLAVE=yesUSERCTL=noNM_CONTROLLED=no 像这样,分别修改 ifcfg-eth0 和 ifcfg-eth1 配置⽂件,DEVICE=ethX 中的 X ⽤相应的值代替.然后我们重启⽹络服务.service network restart这样⼦,⼦⽹卡为 eth0 和 eth1,主⽹卡为 bond0,模式为 mode 1 的⽹络 Bonding 就完成了rhel6 bonding 实例展⽰系统: rhel6⽹卡: eth2、eth3bond0:10.200.100.90负载模式: mode1(active-backup) # 这⾥的负载模式为1,也就是主备模式.1、关闭和停⽌NetworkManager服务service NetworkManager stopchkconfig NetworkManager offps: 如果有装的话关闭它,如果报错说明没有装这个,那就不⽤管2、加载bonding模块modprobe --first-time bonding3、创建基于bond0接⼝的配置⽂件[root@rhel6.6 network-scripts]# cat ifcfg-bond0DEVICE=bond0BOOTPROTO=noneIPADDR=10.200.100.90NETMASK=255.255.255.0ONBOOT=yesNM_CONTROLLED=noUSERCTL=noBONDING_OPTS="mode=1 miimon=200"4、SLAVE⽹卡的配置⽂件两种⼦⽹卡的配置⽂件如下[root@rhel6.6 network-scripts]# cat ifcfg-eth2DEVICE=eth2#HWADDR=14:58:D0:5A:0F:76NM_CONTROLLED=no#UUID=3b718bed-e8d4-4b64-afdb-455c8c3ccf91ONBOOT=yes#NM_CONTROLLED=yesBOOTPROTO=noneMASTER=bond0SLAVE=yesUSERCTL=no[root@rhel6.6 network-scripts]# cat ifcfg-eth3DEVICE=eth3#HWADDR=14:58:D0:5A:0F:77NM_CONTROLLED=no#UUID=988835c2-8bfa-4788-9e8d-e898f68458f0ONBOOT=yes#NM_CONTROLLED=yesBOOTPROTO=noneMASTER=bond0SLAVE=yesUSERCTL=no5、bonding信息查看重启⽹络服务器后bonding⽣效[root@rhel6.6 network-scripts]# ip a4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000link/ether c4:34:6b:ac:5c:9e brd ff:ff:ff:ff:ff:ff5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000link/infiniband a0:00:03:00:fe:80:00:00:00:00:00:00:00:02:c9:03:00:0a:6f:ba brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff10: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UPlink/ether c4:34:6b:ac:5c:9e brd ff:ff:ff:ff:ff:ffinet 10.200.100.90/24 brd 10.212.225.255 scope global bond0inet6 fe80::c634:6bff:feac:5c9e/64 scope linkvalid_lft forever preferred_lft forever[root@rhel6.6 network-scripts]# cat /proc/net/bonding/bond0Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)Bonding Mode: fault-tolerance (active-backup) # bond0接⼝采⽤mode1Primary Slave: NoneCurrently Active Slave: eth2MII Status: upMII Polling Interval (ms): 200Up Delay (ms): 0Down Delay (ms): 0Slave Interface: eth2MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: c4:34:6b:ac:5c:9eSlave queue ID: 0Slave Interface: eth3MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: c4:34:6b:ac:5c:9fSlave queue ID: 0进⾏⾼可⽤测试,拔掉其中的⼀条⽹线看丢包和延时情况, 然后在插回⽹线(模拟故障恢复),再看丢包和延时的情况.三、RedHat7配置bonding系统: Red Hat Enterprise Linux Server release 7.6 (Maipo)⽹卡: eno3、eno4bonding:bond0负载模式: mode1(active-backup)服务器上两张物理⽹卡eno3和eno4, 通过绑定成⼀个逻辑⽹卡bond0,bonding模式选择mode1注: ip地址配置在bond0上, 物理⽹卡不需要配置ip地址.1、关闭和停⽌NetworkManager服务RedHat7默认安装了NetworkManager,在配置前先关掉NetworkManager服务,否则可能会对bonding或造成问题。
Linux双网卡绑定一个IP
Linux双网卡绑定一个IP,实现容错或负载均衡其实早在08年9月就做了这个了,只不过最近在学RHCE的时候发现也有bond方面的内容。
发出来大家也学习一下。
实验环境:CentOS5.3 eth0 eth11.先修改eth0 和eht1这2个网卡配置文件。
目录在(/etc/sysconfig/network-scripts/)如下:DEVICE=eth0ONBOOT=yesMASTER=bond0BOOTPROTO=none2. eth1也是同样的修改。
如下:DEVICE=eth1ONBOOT=yesMASTER=bond0BOOTPROTO=none3.新建一个虚拟网卡bond0,创建bond0的配置文件ifcfg-bond0。
如下:DEVICE=bond0ONBOOT=yesBOOTPROTO=staticIPADDR=192.168.0.223NETMASK=255.255.255.0BROADCAST=192.168.0.255TYPE=Ethernet4.修改/etc/modprobe.conf添加内容如下:alias bond0 bondingoptions bond0 miimon=100 mode=0注意:mode可以为0,1,2,3。
0为负载均衡、1为失效保护,我们一般用到0。
关于:modprobe.conf文件在AS版本里面有,linux9.0的是这个modules.conf文件。
5.修改/etc/rc.d/rc.local添加内容如下:ifenslave bond0 eth0 eth1route add -net 192.168.0.255 netmask 255.255.255.0 bond0 或者route add default gw 192.168.0.255 –interface bond0OK 完成。
验证:1.可以不停的ping一个地址,用ifconfig会发现eth0和eth1的RX、TX(xx.x KiB)会同时增长,总数等于bond0的RX、TX(xx.x KiB)。
在LINUX(REDHAT)下双网卡负载均衡(LACP)
在LINUX(REDHAT)下双网卡负载均衡(LACP)(一)linux配置#cat/boot/config-kernel-version|grep-i bondingCONFIG_BONDING=m返回CONFIG_BONDING=m表示支持,否则需要编译内核使它支持bonding也可以用:查看一下内核是否已经支持bonding:modinfo bonding第一步:创建一个ifcfg-bondX#touch/etc/sysconfig/network-scripts/ifcfg-bond0新建一个bond0配置文件#cat/etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0BOOTPROTO=staticIPADDR=1.1.1.2NETMASK=255.255.255.0BROADCAST=1.1.1.255NETWORK=1.1.1.0GATEWAY=1.1.1.1ONBOOT=yesTYPE=Ethernet编辑ifcfg-bond0如上第二步:修改/etc/sysconfig/network-scripts/ifcfg-ethX这个实验中把网卡1和2绑定,修改/etc/sysconfig/network-scripts/ifcfg-ethX相应网卡配置如下:#cat/etc/sysconfig/network-scripts/ifcfg-eth1TYPE=EthernetDEVICE=eth1HWADDR=00:d0:f8:40:f1:a0网卡1macBOOTPROTO=noneONBOOT=yesUSERCTL=noMASTER=bond0SLAVE=yes#cat/etc/sysconfig/network-scripts/ifcfg-eth2TYPE=EthernetDEVICE=eth2HWADDR=00:d0:f8:00:0c:0c网卡2macBOOTPROTO=noneONBOOT=yesUSERCTL=noMASTER=bond0SLAVE=yes第三步:配置/etc/modprobe.conf,添加alias bond0bonding #cat/etc/modprobe.confalias eth0e100alias snd-card-0snd-intel8x0options snd-card-0index=0options snd-intel8x0index=0remove snd-intel8x0{/usr/sbin/alsactl store0>/dev/null2>&1||:;};/sbin/modprobe-r --ignore-remove snd-intel8x0alias eth18139toooptions3c501irq=3alias eth2tulip上面是三网卡本身的配置如果要绑定和做lacp只要再加上下面两条配置alias bond0bonding绑定options bond0miimon=100mode=4mode=4是lacp第四步:配置/etc/rc.d/rc.local,添加需要绑定的网卡#cat/etc/rc.d/rc.localtouch/var/lock/subsys/local配置本身就有这条命令ifenslave bond0eth1eth2这条命令是添加需要绑定的网卡1和2 到这里就完成bonding的配置了可以查看一下第五步:重启网络服务和重启pc#service network restart重启网络服务#shutdown-r now重启pc重启后可以查看bonding情况:网卡1和2都绑定上了,模式为802.3ad#cat/proc/net/bonding/bond0Ethernet Channel Bonding Driver:v3.0.3(March23,2006)Bonding Mode:IEEE802.3ad Dynamic link aggregationTransmit Hash Policy:layer2(0)MII Status:upMII Polling Interval(ms):100Up Delay(ms):0Down Delay(ms):0802.3ad infoLACP rate:slowActive Aggregator Info:Aggregator ID:1Number of ports:2Actor Key:9Partner Key:1Partner Mac Address:00:d0:f8:22:33:baSlave Interface:eth1MII Status:upLink Failure Count:0Permanent HW addr:00:d0:f8:40:f1:a0Aggregator ID:1Slave Interface:eth2MII Status:upLink Failure Count:0Permanent HW addr:00:d0:f8:00:0c:0cAggregator ID:1接口配置信息:新增了bond0的配置信息,接口bond0和eth1,eth2,绑定后三个接口使用的mac都是同一个:00:D0:F8:40:F1:A0 #ifconfigbond0Link encap:Ethernet HWaddr00:D0:F8:40:F1:A0inet addr:1.1.1.2Bcast:1.1.1.255Mask:255.255.255.0inet6addr:fe80::2d0:f8ff:fe40:f1a0/64Scope:LinkUP BROADCAST RUNNING MASTER MULTICAST MTU:1500Metric:1RX packets:128errors:0dropped:0overruns:0frame:0TX packets:259errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RX bytes:15466(15.1KiB)TX bytes:39679(38.7KiB)eth0Link encap:Ethernet HWaddr00:11:11:EB:71:E2inetaddr:192.168.180.8Bcast:192.168.180.15Mask:255.255.255.240 inet6addr:fe80::211:11ff:feeb:71e2/64Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500Metric:1 RX packets:311errors:0dropped:0overruns:0frame:0TX packets:228errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RX bytes:30565(29.8KiB)TX bytes:35958(35.1KiB)eth1Link encap:Ethernet HWaddr00:D0:F8:40:F1:A0inet6addr:fe80::2d0:f8ff:fe40:f1a0/64Scope:LinkUP BROADCAST RUNNING SLAVE MULTICASTMTU:1500Metric:1RX packets:54errors:0dropped:0overruns:0frame:0TX packets:97errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RX bytes:6696(6.5KiB)TX bytes:13821(13.4KiB)Interrupt:209Base address:0x2e00eth2Link encap:Ethernet HWaddr00:D0:F8:40:F1:A0inet6addr:fe80::2d0:f8ff:fe40:f1a0/64Scope:LinkUP BROADCAST RUNNING SLAVE MULTICAST MTU:1500Metric:1RX packets:74errors:0dropped:0overruns:0frame:0TX packets:162errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RX bytes:8770(8.5KiB)TX bytes:25858(25.2KiB)Interrupt:201Base address:0x2f00lo Link encap:Local Loopbackinet addr:127.0.0.1Mask:255.0.0.0inet6addr:::1/128Scope:HostUP LOOPBACK RUNNING MTU:16436Metric:1RX packets:6283errors:0dropped:0overruns:0frame:0TX packets:6283errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RX bytes:9783674(9.3MiB)TX bytes:9783674(9.3MiB)(二)锐捷交换机配置:lacp system-priority100全局配置lacp优先级interface GigabitEthernet0/23no switchportlacp port-priority100接口的lacp优先级port-group1mode active接口下开启lacp主动模式interface GigabitEthernet0/24no switchportlacp port-priority100port-group1mode activeinterface AggregatePort1no switchportno ip proxy-arpip address1.1.1.1255.255.255.0和linux成功建立lacp后状态信息如下:Show lacp summarySystem Id:100,00d0.f822.33baFlags:S-Device is requesting Slow LACPDUs F-Device is requesting Fast LACPDUs. A-Device is in active mode.P-Device is in passive mode.Aggregate port1:Local information:LACP port Oper Port Port Port Flags State Priority Key Number State----------------------------------------------------------------------Gi0/23SA bndl1000x10x170x3dGi0/24SA bndl1000x10x180x3d Partner information:LACP port Oper Port Port Port Flags Priority Dev ID Key Number State---------------------------------------------------------------------Gi0/23SA25500d0.f840.f1a00x90x20x3dGi0/24SA25500d0.f840.f1a00x90x10x3d State表示状态信息:bndl表示lacp建立成功,sup表示不成功。
linux双网卡绑定
一、L inux bonding研究及实现Linux Bonding本文介绍Linux(具体发行版本是CentOS5.6)下的双卡绑定的原理及实现。
Linux双网卡绑定实现是使用两块网卡虚拟成为一块网卡设备,这简单来说,就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。
这项技术在Sun和Cisco中分别被称为Trunking和Etherchannel技术,在Linux的2.4.x及其以后的内核则称为Bonding技术。
bonding的前提条件:网卡应该具备自己独立的BIOS芯片,并且各网卡芯片组型号相同。
同一台服务器上的网卡毫无疑问是是符合这个条件的。
Bonding原理bonding的原理:在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身MAC的以太网帧,过滤别的数据帧,以减轻驱动程序的负担;但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,bonding就运行在这种模式下,而且修改了驱动程序中的mac地址,将两块网卡的MAC地址改成相同,可以接收特定MAC的数据帧。
然后把相应的数据帧传送给bond驱动程序处理。
为方便理解bonding的配置及实现,顺便阐述一下Linux的网络接口及其配置文件。
在Linux 中,所有的网络通讯都发生在软件接口与物理网络设备之间。
与网络接口配置相关的文件,以及控制网络接口状态的脚本文件,全都位于/etc/sysconfig/netwrok-scripts/ 目录下。
网络接口配置文件用于控制系统中的软件网络接口,并通过这些接口实现对网络设备的控制。
当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如何对这些接口进行配置。
接口配置文件的名称通常类似于ifcfg-<name>,其中<name> 与配置文件所控制的设备的名称相关。
在所有的网络接口中,最常用的就是以太网接口ifcfg-eth0,它是系统中第一块网卡的配置文件。
Linux系统配置双网卡绑定bond0
Linux系统配置双⽹卡绑定bond01、bonding简述双⽹卡配置设置虚拟为⼀个⽹卡实现⽹卡的冗余,其中⼀个⽹卡坏掉后⽹络通信仍可正常使⽤,实现⽹卡层⾯的负载均衡和⾼可⽤性。
现在⼀般的企业都会使⽤双⽹卡接⼊,这样既能添加⽹络带宽,同时⼜能做相应的冗余,可以说是好处多多。
⽽⼀般企业都会使⽤linux操作系统下⾃带的⽹卡绑定模式,当然现在⽹卡产商也会出⼀些针对windows操作系统⽹卡管理软件来做⽹卡绑定(windows操作系统没有⽹卡绑定功能需要第三⽅⽀持)。
1.1 bonding原理⽹卡⼯作在混杂(promisc)模式,接收到达⽹卡的所有数据包,tcpdump⼯作⽤的也是混杂模式(promisc),将两块⽹卡的MAC地址修改为相同接收特定MAC的数据帧,然后把相应的数据帧传送给bond驱动程序进⾏处理。
1.2 Bonding模式(bonding mode)轮询策略(round robin),mode=0,按照设备顺序依次传输数据包,提供负载均衡和容错能⼒主备策略(active-backup),mode=1,只有主⽹卡处于⼯作状态,备⽹卡处于备⽤状态,主⽹卡坏掉后备⽹卡开始⼯作,提供容错能⼒异或策略(load balancing (xor)),mode=2,根据源MAC地址和⽬的MAC地址进⾏异或计算的结果来选择传输设备,提供负载均衡和容错能⼒⼴播策略(fault-tolerance (broadcast)),mode=3,将所有数据包传输给所有接⼝通过全部设备来传输所有数据,⼀个报⽂会复制两份通过bond下的两个⽹卡分别发送出去,提供⾼容错能⼒动态链接聚合(lacp),mode=4,按照802.3ad协议的聚合⾃动配置来共享相同的传输速度,⽹卡带宽最⾼可以翻倍,链路聚合控制协议(LACP)⾃动通知交换机聚合哪些端⼝,需要交换机⽀持 802.3ad协议,提供容错能⼒输出负载均衡模式(transmit load balancing),mode=5,输出负载均衡模式,只有输出实现负载均衡,输⼊数据时则只选定其中⼀块⽹卡接收,需要⽹卡和驱动⽀持ethtool命令输⼊/输出负载均衡模式(adaptive load balancing),mode=6,输⼊和输出都实现负载均衡,需要⽹卡和驱动⽀持ethtool命令2、⽹卡配置⽂件的配置2.1 配置环境 环境:系统CentOS 6.7 + 虚拟机 VMware 12 ⾄少两块物理⽹卡(VMware上添加eth0,eth1) 2.2 需要添加或修改的配置⽂件有5个(mode=1) 这5个配置⽂件是: /etc/sysconfig/network-scripts/ifcfg-eth{0,1} /etc/sysconfig/network-scripts/ifcfg-bond0 /etc/modprobe.d/dist.conf /etc/rc.local2.2.1 /etc/sysconfig/network-scripts/ifcfg-{eth0,eth1,bonding0}修改或添加提⽰:先备份好eth0和eth1,再修改这⼏个⽂件以下是修改好的三个⽹卡配置⽂件的参数[root@ant network-scripts]# vimdiff ifcfg-eth0 ifcfg-eth1 ifcfg-bond02.2.2 修改/etc/modprobe.d/dist.conf⽂件在此⽂件中添加以下内容:alias bond0 bonding,表⽰系统在启动时加载bonding模块,对外虚拟⽹络接⼝设备为 bond0miimon=100,表⽰系统每100ms监测⼀次链路连接状态,如果有⼀条线路不通就转⼊另⼀条线mode=1,表⽰绑定模式为1primary=eth0,系统⾸先eth0作为bond0接⼝与外界信息的传输接⼝2.2.3 修改配置⽂件/etc/rc.local在此⽂件中添加以下内容:modprobe bonding miimon=100 mode=12.2.4 重启⽹络(service network restart),并查看三个接⼝的mac地址使⽤ifconfig命令显⽰,bond0,eth1,eth2物理地址相同,提⽰三个⽹卡均通过⼀个ip主机端⼝与外界通信但是,我们可以看到,在mode=1的情况下,当前bond0采⽤eth0通信,实际的物理⽹卡地址见下图:3、验证⽹络的连通性没有丢包,⽹络连通性可。
linux服务器的安全与备份策略
Linux服务器的日常运维安全与备份一.网络基础首先当服务器的linux系统搭建起来以后,我们首先需要考虑的就是连接上Internet了,这就需要我们通过网卡来实现这个目的。
一块网卡足以提供服务器的链接至网络的需求。
但是为了服务器日常运行的稳定性,这里还是建议采用双网卡绑定的方案。
双网卡绑定的话有一般有两种工作模式:1.主备模式:,当一个网络接口失效时(例如主交换机掉电等),不会出现网络中断,系统会按照/etc/rc.d/rc.local里指定网卡的顺序工作,机器仍能对外服务,起到了失效保护的功能.2.负载均衡工作模式:他能提供两倍的带宽,在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用.建议可以根据实际需求在这两种模式下进行二选一二.linux服务器基本的安全配置一、Linux系统的安全策略1.仔细设置每个内部用户的权限为了保护Linux网络系统的资源,在给内部网络用户开设帐号时,要仔细设置每个内部用户的权限,一般应遵循“最小权限”原则,也就是仅给每个用户授予完成他们特定任务所必须的服务器访问权限,确保用户口令文件/etc/shadow的安全2.谨慎设置登录口令对于网络系统而言,口令是比较容易出问题的地方,应告诉用户在设置口令时要使用安全口令(在口令序列中使用非字母,非数字等特殊字符)并适当增加口令的长度(大于6个字符)。
要保护好/etc/passwd和/etc/shadow这两个文件的安全,不让无关的人员获得这两个文件,这样黑客利用John等程序对/etc/passwd和/etc/shadow文件进行了字典攻击获取用户口令的企图就无法进行。
要定期用John等程序对本系统的/etc/passwd和/etc/shadow文件进行模拟字典攻击,一旦发现有不安全的用户口令,要强制用户立即修改。
3.加强对系统运行的监控和记录保证对整个网络系统的运行状况进行监控和记录,这样通过分析记录数据,可以发现可疑的网络活动,并采取措施预先阻止今后可能发生的入侵行为。
linux下双网卡绑定配置
在linux下如何做双网卡绑定实现冗余?一、Linux Channel Bonding目前在各个发行版本的 Linux 中,使用最普遍的内核版本应该就是 2.4.x的版本了,而Linux Channel Bonding,在 Linux 2.4 的内核中,就提供了 bonding 的驱动,可以支持把多个网络适配器集合在一起,当作一个网络适配器来使用。
在 Linux 下,网卡的高可用性是通过 MII 或者 ETHTOOL 的状态监测来实现的,所以,需要检查系统中的网络适配器是否支持 MII 或者 ETHTOOL 的连状态监测。
可以用命令 "ethtool eth0" 来检查,如果显示的 "Link detected:" 信息与实现的连接状态一致,就没有问题。
如果系统中的网络适配器不支持 MII 或者 ETHTOOL 状态监测,当连接失效时,系统就不能检测到,同时,在 bonding 驱动加载时,会记录一条不支持 MII 和 ETHTOOL 的警告信息。
下面简单介绍一下实现的基本方法:首先,我们需要打开内核对 bonding 支持。
设置内核 "make menuconfig/xconfig/config",在"Network device support"区段中选择"Bonding driver support",建议设置该驱动程序为模块,这样才能支持给驱动传递参数和设置多个bonding设备。
生成并安装新的内核和模块。
Bonding 的设置我们需要在 /etc/modules.conf 中加入两行,这样才可以在设置了 bond 设置后,系统启动的时候自动加载 bonding 的驱动程序alias bond0 bondingoptions bond0 miimon=100 mode=1当mode=1时为主备模式,mode=0时为负载均衡模式。
Linux服务器下多网卡负载均衡的研究与实现
Linux服务器下多网卡负载均衡的研究与实现摘要负载均衡技术的使用能够在不对网络中各种设备进行重大改造的条件下提高各种服务的质量,是解决当前网络业务迅猛增加和升级硬件设施之间矛盾的一个有效措施,本文简单描述了关于负载均衡方面的研究现状,重点介绍了现今linux bonding技术及其基于bonding技术的几种负载均衡的算法,并对此进行了简要的分析与研究,提出了其不足之处,针对这些不足提出了一种多网卡情况下基于传输协议的发送方面的算法,并对此进行了简单的实现,最后对此进行了测试,测试结果表明该方法的可用性。
关键词 linux bonding;传输协议;负载均衡;高可用性;1 引言现今几乎各行各业内部都建立了自己的服务器,由于服务器的特殊地位,它的可靠性、可用性及其I/O速度就显得非常的重要,保持服务器的高可用性和安全性是企业级IT环境的重要指标,其中最重要的一点是服务器网络连接的高可用性,为实现这些要求,现在服务器大都采用多网卡配置,系统大都采用现在非常流行的linux作为服务器工作的环境。
现在带宽已经不是服务质量提高的瓶颈了,相对的网络设备和服务器的处理能力就渐渐成为新的瓶颈。
为提高服务器的网络连接的可用性和可靠性,目前Sun公司的Trunking技术、3Com公司的DynamicAccess技术、Cisco公司的Etherchannel技术等等都在研究将服务器的多个网卡接口绑定在一起的链路聚集技术, 链路聚集技术将多个链路虚拟成一个逻辑链路进而提供了一种廉价、有效的方法扩展网络设备和服务器的带宽,提高网络的灵活性与可用性。
本文介绍linux下的bonding 技术,linux 的内核中采用了这种技术,利用bonding技术可以将多块网卡接口通过绑定虚拟成为一块网卡,在用户看来这个聚合起来的设备好像是一个单独的以太网接口设备,通俗点讲就是多块网卡具有相同的IP地址而并行连接聚合成一个逻辑链路工作。
网卡绑定(多网卡绑定成一个虚拟网卡负载均衡)
网卡绑定,就将两个或者更多的物理网卡绑定成一个虚拟网卡,以提供负载均衡或者冗余,能够起到增加带宽的作用;当网卡绑定之后,如果有一个网卡坏掉,网络会继续保持,不会中断,从而不会影响业务。
Windows下网卡绑定Windows 下进行网卡绑定,需要根据网卡的类型下载网卡驱动,通过网卡驱动进行网卡绑定。
设备:HS22,BCE刀箱系统:windows 2008 Enterprise R2 x64网卡类型:首先下载网卡驱动,在驱动的MgmtApps文件夹下,寻找符合系统要求的setup.exe文件,双击击安装。
在接受许可条例之后,进入自定义安装界面,如下:我们这里只安装BASP,直接下一步。
安装结束后,会提醒你从控制面板中找到,这里,我们只要打开开始菜单就可以看见新安装的BACS软件了。
(注意,如果是intel的网卡,系统会默认图标显示在控制面板中。
)软件界面如下:界面左侧的Device Management,显示的是主机当前的网卡,Team Management是用来对网卡绑定进行操作和管理的。
右边是动态展示栏,可以展示每块网卡的信息(Information),可以通过自动ping网卡IP,诊断网卡当前状态(Diagnostics),还可以统计网卡活动状态(Statistics)。
网卡绑定,在实际操作中,是采用虚拟网卡组的概念,将现有网卡,绑定成一个虚拟网卡组。
因此在BACS中,我们打开Team Management来进行网卡绑定。
打开Team Management,左侧看到的是可以进行绑定的网卡状态。
我们打开上层菜单栏中的“Teams”,选择“Create a team”,就进入了网卡绑定的引导界面。
选择“Next”。
首先输入一个网卡绑定组的名字:选择“Next”进入类型界面。
Broadcom网卡绑定有三种类型,--Smart Load Balancing(TM)and Failover(SLB):智能负载均衡和故障转移。
linux中配置双网卡的目的?如何实现双网卡绑定,以实现负载均衡?
linux中配置双⽹卡的⽬的?如何实现双⽹卡绑定,以实现负载均衡?配置双⽹卡的⽬的:==========================1、你想做路由器,⽹关2、实现冗余3、负载均衡linux 主机安装双⽹卡,共享⼀个IP地址,对外提供访问,实际同样连接两条物理线路到交换机实现平时双⽹卡同时⼯作,分流⽹络压⼒,同时提供冗余备份,监控,防⽌物理线路的单点故障。
⽤于关键性节点服务器,⾼⽹络IO服务器,⽹络共享存储服务器等。
Linux bonding 驱动模块提供了⼀种⽅法,⽤以把多个⽹络接⼝(network interface)组合成⼀个逻辑的 "bonded" 接⼝。
Bonded 接⼝的⼯作⽅式取决于驱动的模式:不同的模式提供了热备份或负载均衡等不同的服务。
此外,驱动还会监控链路的可⽤性。
⼤多数⽬前发布的Linux内核都以模块(module)⽅式带了bonding驱动,ifenslave⼯具(主要配置⼯具)也都已经安装好。
CentOS双⽹卡绑定,实现负载均衡确保关闭 SElinux Networkmanager , 给虚拟机添加⼀张⽹卡 ens37 ,确保两张虚拟⽹卡都是相同的连接模式 NAT 。
bind0 IP 地址: 192.168.10.54先关闭两张⽹卡[root@uplooking ~]# ifdown ens33[root@uplooking ~]# ifdown ens38新建⽹卡配置⽂件[root@uplooking /etc/sysconfig/network-scripts]#vim ifcfg-bond0ifcfg-bond0 配置⽂件 ==============TYPE=EthernetBOOTPROTO=staticNAME=bond0DEVICE=bond0IPADDR="192.168.10.54"NETMASK=255.255.255.0GATEWAY=192.168.10.2ONBOOT=yesBONDING_OPTS="miimon=100 mode=6" ##bonding 参数直接在⽹卡配置⽂件中指派,并且开机可以⾃动⽣效## mode=1 1为储备模式,推荐为 6 ,不会浪费资源。
Linux下双网卡绑定技术实现负载均衡和失效保护bond
Linux下双网卡绑定技术实现负载均衡和失效保护bond对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。
对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。
如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。
对于一个百M的本地网络来说,文件服务器在多个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器。
为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。
如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是 bonding ;另一种情况就是服务器的一个网卡失效或者网络连接意外断开,如果做了bonding就可以切换到另一个网卡的网络连接上.保证服务的不中断.详细的资料可以参考:[url]/en/Net:Bonding#Configuring_Multiple_Bonds _with_sysconfig[/url]下面试验一下热备模式.首先要看linux是否支持bonding,RHEL4已经默认支持了.(大部分发行版都支持)# modinfo bondingfilename: /lib/modules/2.6.18-8.el5/kernel/drivers/net/bonding/bonding.k oauthor: Thomas Davis, tadavis@ and many othersdescription: Ethernet Channel Bonding Driver, v3.0.3version: 3.0.3license: GPLsrcversion: 2547D22885C2FDF28EF7D98如果有类似上面的信息输出,说明已经支持了.如果没有,说明内核不支持bonding,需要重新编译内核编译内核的步骤这里就不多写了,在make menuconfig里面找到Bonding driver support这样的对话框,选中它.如果是模块编译,还需要挂载模块.挂载bonding 模块的方法;[root@localhost#] modprobe bonding如果/sbin/ifenslave没有,我们还需要把它也单独编译出来[root@lin:/home/beinan#] cd /usr/src/linux-2.6.20/Documentation/networking [root@lin:/home/networking#] gcc -Wall -Wstrict-prototypes -O-I/usr/src/linux-2.6.20/include ifenslave.c -o ifenslave[root@lin:/home/networking#] cp ifenslave /sbin/ifenslave1.编辑虚拟网络接口配置文件,指定网卡IP没有这个文件我们可以从以前的配置文件复制一个过来,减少输入的文字.#cd /etc/sysconfig/network-scripts/#cp ifcfg-eth0 ifcfg-bond0#vi ifcfg-bond0将第一行改成 DEVICE=bond0# cat ifcfg-bond0DEVICE=bond0BOOTPROTO=staticIPADDR=192.168.1.200NETMASK=255.255.255.0BROADCAST=192.168.1.255ONBOOT=yesTYPE=Ethernet接下来修改以前的网卡的设置[root@rhas-13 network-scripts]# cat ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=none[root@rhas-13 network-scripts]# cat ifcfg-eth1DEVICE=eth0ONBOOT=yesBOOTPROTO=none //网卡启动协议.这里我试验了static,dhcp,none发现没有什么区别3 # vi /etc/moprobe.conf (旧的版本可能是modules.conf)编辑 /etc/moprobe.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0加入下列行alias bond0 bondingoptions bond0 miimon=100 mode=1alias net-pf-10 off //这行是关闭ipv6支持,也可以不要)说明:miimon是用来进行链路监测的。
Linux 网络负载均衡的实现
RX packets:18495 errors:0 dropped:0 overruns:0 frame:0
TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
以下的配置双网卡绑定是在RedHat Linux Enterprise 3.0 的环境下实现的。网卡绑定的前提条件是确保两块网卡具有相同型号的独立芯片组。
# vi /etc/sysconfig/network-scripts/ ifcfg-bond0
[root@rhas root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0
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: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
linux 双网卡绑定(bonding)实现负载均衡或故障转移
linux 双网卡绑定(bonding)实现负载均衡或故障转移我们在这介绍的Linux双网卡绑定实现就是用法两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个规律链路工作。
其实这项技术在Sun和Cisco中早已存在,被称为Trunking 和Etherchannel 技术,在Linux的2.4.x的内核中也采纳这这种技术,被称为bonding。
bonding技术的最早应用是在 beowulf上,为了提高集群节点间的数据传输而设计的。
下面我们研究一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。
我们知道,在正常状况下,网卡只接收目的硬件地址(MAC Aress)是自身Mac 的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。
但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上全部的帧,比如说mp.html' target='_blank'>tcp,就是运行在这个模式下。
bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的 Mac地址改成相同,可以接收特定mac的数据帧。
然后把相应的数据帧传送给bond驱动程序处理。
挺直给两块网卡设置同一IP地址是不行能的。
Kerne 2.4.12及以后的版本均供bonding模块,以前的版本可以通过实现。
一、编辑虚拟网络接口配置文件,指定网卡IP 假设eth0是对外服务的网卡,已经调试好网络;eth1是希翼与eth0同时对外提供服务的网卡。
/etc/sysconfig/network-scripts/ vi ifcfg-bond0 写入如下信息和本来 ifcfg-eth0 的配置其实差不多。
所以我建议执行如下语句,将ifcfg-eth0复制一份再改。
cp ifcfg-eth0ifcfg-bon0 复制代码将ifcfg-bon0的信息修改大致如下: DEVICE=bond0 BOOTPROTO=ic IPADDR=[IP] NETMASK=[MASK] BROADCAST=[BROADCAST] GATEWAY=[GATEWAY] ONBOOT=yes TYPE=Ethernet 二、配置真切网卡修改ifcfg-eth0如下:DEVICE=eth0 BOOTPROTO=none ONBOOT=yes MASTER=bond0第1页共2页。
Linux下多网卡绑定bond及模式介绍
Linux下多⽹卡绑定bond及模式介绍【介绍】⽹卡bond⼀般主要⽤于⽹络吞吐量很⼤,以及对于⽹络稳定性要求较⾼的场景。
主要是通过将多个物理⽹卡绑定到⼀个逻辑⽹卡上,实现了本地⽹卡的冗余,带宽扩容以及负载均衡。
Linux下⼀共有七种⽹卡bond⽅式,实现以上某个或某⼏个具体功能。
最常见的三种模式是bond0,bond1,bond6.【bond0】平衡轮循环策略,有⾃动备援,不过需要"Switch"⽀援及设定。
balance-rr(Round-robin policy)⽅式:传输数据包的顺序是依次传输(即:第⼀个包⾛eth0,第⼆个包就⾛eth1……,⼀直到所有的数据包传输完成)。
优点:提供负载均衡和容错能⼒。
缺点:同⼀个链接或者会话的数据包从不同的接⼝发出的话,中间会经过不同的链路,在客户端可能会出现数据包⽆法有序到达的情况,⽽⽆序到达的数据包将会被要求重新发送,⽹络吞吐量反⽽会下降。
【bond1】主-备份策略active-backup(Active -backup policy)⽅式:只有⼀个设备处于活动状态,⼀个宕掉之后另⼀个马上切换为主设备。
mac地址为外部可见,从外⾯看,bond的mac地址是唯⼀的,switch不会发⽣混乱。
优点:提⾼了⽹络连接的可靠性。
缺点:此模式只提供容错能⼒,资源利⽤性较低,只有⼀个接⼝处于active状态,在有N个⽹络接⼝bond 的状态下,利⽤率只有1/N。
【bond2】平衡策略balance-xor(XOR policy)⽅式:基于特性的Hash算法传输数据包。
缺省的策略为:(源MAC地址 XOR ⽬标MAC地址) % slave数量。
# XRO为异或运算,值不同时结果为1,相同为0可以通过xmit_hash_policy选项设置传输策略。
特点:提供负载均衡和容错能⼒。
【bond3】⼴播策略broadcast⽅式:在每个slave接⼝上传输每⼀个数据包。
linux下双网卡绑定的负载均衡
linux下双网卡绑定的负载均衡一、双网卡绑定1,新建个ifcfg-bond0 (cp /etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-script/ifcfg-bond0)2,修改ifcfg-bond0文件,去掉mac地址相关信息(HW ADDR),给个ip地址,网络地址,广播地址如下:# cat ifcfg-bond0DEVICE= bond0BOOTPROTO=staticIPADDR=192.168.1.136//*第一个IP地址*//NETMASK=255.255.255.0 //*网络掩码*//ONBOOT=yes:wq //*保存退出*//3,修改ifcfg-eth0和ifcfg-eth1,如下:cat ifcfg-eth0cat ifcfg-eth14,修改/etc/modprobe.conf,添加如下语句:alias bond0 bondingoptions bond0 miimon=100 mode=1注释:mode可以为0,1,0为负载均衡,1为失效保护如下图:5,修改/etc/rc.d/rc.local,添加如下内容:ifenslave bond0 eth0 eth1route add -net 192.168.1.255 netmask 255.255.255.0 bond0如下图:6,重启,看能否通过ssh登陆上服务器bond0得ip(192.168.1.136),如果成功登陆或者ping通了,再查看一下连接状态ifconfig,如下图:ifconfig查看连接状态7,尝试拔掉一根网线看是否能正常登陆上去(或ping得通),再查看一下更连接状态(cat /proc/net/bonding/bond0)如下图:8,尝试一下更换一下mode的值,再试一下。
我自己尝试了一下0和1,都成功了,当拔一根网线的时候,均能正常连接到服务器上,不同的是,当你用ifconfig查看连接状态的时候,你会发现当mode=0的时候双网卡是同时工作的,都有数据包传输,数据传输量几乎一样多(两块网卡同时在工作),用mode=1的时候,你会发现只有一个网卡存在数据传输,另一块网卡没有数据传输(只有一块网卡在工作)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在这介绍的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驱动程序处理。
其实在 linux 将双网卡绑定成一块网卡,配置起来非常简单,只需要简单几个步骤即可实现,下面我们就一起来体验一下吧。
首先,还是将本次实验的环境做个简单的介绍:操作系统: RedHat Enterprise linux 4.0绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。
操作过程:1、编辑虚拟网络接口配置文件,指定网卡IP (没有这个文件我们可以从以前的配置文件复制一个过来,减少输入的文字.)[root @heng ~] # cp /etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-bond0确保 /etc/sysconfig/network-scripts/ifcfg-bond0 的内容和以下内容相同[root @heng ~] # cat /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0BOOTPROTO=staticBROADCAST=192.168.1.255IPADDR=192.168.1.202NETMASK=255.255.255.0ONBOOT=yesTYPE=Ethernet2、编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 与/etc/sysconfig/network-scripts/ifcfg-eth1 ,确保编辑后的内容和以下所显示的内容相同[root @heng ~] # cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=none[root @heng ~] # cat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=none3、编辑 /etc/moprobe.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为bond0。
请确保文件编辑后所显示的内容与以下内容相同[root @heng ~] # cat /etc/moprobe.confalias eth0 pcnet32alias scsi_hostadapter mptbasealias scsi_hostadapter1 mptscsihalias eth1 pcnet32alias bond0 bondingoptions 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会认为链路没有问题而继续使用4、编辑 /etc/rc.d/rc.local ,请确保修改后的文件所显示的内容与以下内容相同[root @heng ~] # 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/localifenslave bond0 eth0 eth1#红色字体为添加的内容到这里配置已经完成,重启计算机,然后用 ifconfig 查看网卡信息,会看见多了一个名称为 bond0 的网卡。
下面我们讨论以下mode分别为0,1时的情况mode=1工作在主备模式下,这时eth1作为备份网卡是no arp的[root @heng ~] # ifconfigbond0 Link encap:Ethernet HWaddr 00:0C:29:F7:C1:DEinet addr:192.168.1.202 Bcast:192.168.1.255 Mask:255.255.255.0inet6 addr: fe80::200:ff:fe00:0/64 Scope:LinkUP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0TX packets:15 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:198 (198.0 b) TX bytes:1134 (1.1 KiB)eth0 Link encap:Ethernet HWaddr 00:0C:29:F7:C1:DEinet addr:192.168.1.202 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fef7:c1de/64 Scope:LinkUP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:1 errors:0 dropped:0 overruns:0 frame:0TX packets:10 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:60 (60.0 b) TX bytes:756 (756.0 b)Interrupt:11 Base address:0x2000eth1 Link encap:Ethernet HWaddr 00:0C:29:F7:C1:DEinet addr:192.168.1.202 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fef7:c1de/64 Scope:LinkUP BROADCAST RUNNING NOARP SLAVE MULTICAST MTU:1500 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0TX packets:5 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:138 (138.0 b) TX bytes:378 (378.0 b)Interrupt:10 Base address:0x2080那也就是说在主备模式下,当一个网络接口失效时(例如主交换机掉电等),不回出现网络中断,系统会按照cat /etc/rc.d/rc.local里指定网卡的顺序工作,机器仍能对外服务,起到了失效保护的功能.在mode=0 负载均衡工作模式,他能提供两倍的带宽,下我们来看一下网卡的配置信息[root @heng ~] # ifconfigbond0 Link encap:Ethernet HWaddr 00:0C:29:F7:C1:DEinet addr:192.168.1.202 Bcast:192.168.1.255 Mask:255.255.255.0inet6 addr: fe80::200:ff:fe00:0/64 Scope:LinkUP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:1456 errors:0 dropped:0 overruns:0 frame:0TX packets:1390 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:209844 (204.9 KiB) TX bytes:206280 (201.4 KiB) eth0 Link encap:Ethernet HWaddr 00:0C:29:F7:C1:DEinet addr:192.168.1.202 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fef7:c1de/64 Scope:LinkUP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:1409 errors:0 dropped:0 overruns:0 frame:0TX packets:695 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:202649 (197.8 KiB) TX bytes:102309 (99.9 KiB)Interrupt:11 Base address:0x2000eth1 Link encap:Ethernet HWaddr 00:0C:29:F7:C1:DEinet addr:192.168.1.202 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fef7:c1de/64 Scope:LinkUP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:47 errors:0 dropped:0 overruns:0 frame:0TX packets:695 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:7195 (7.0 KiB) TX bytes:103971 (101.5 KiB)Interrupt:10 Base address:0x2080在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用. 注:这里要注意一点,每一次在修改 bond0 的 mode 后,都需要重新启动计算机,才能使修改生效。