1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux下双网卡绑定(bonding技术)

Linux下双网卡绑定(bonding技术)

时间:2023-09-14 06:48:07

相关推荐

Linux下双网卡绑定(bonding技术)

Linux网卡绑定探析

-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有七种网卡绑定模式:

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-eth0eth0配置文件,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

Viifcfg-bond0 编辑内容如下

DEVICE=bond0

BOOTPROTO=static

IPADDR=192.168.10.1

NETMASK=255.255.255.0

GATEWAY=192.168.10.254

ONBOOT=yes

TYPE=Ethernet

VIifcfg-eth0编辑内容如下

DEVICE=eth0

BOOTPROTO=static

ONBOOT=yes

MASTER=bond0

SLAVE=yes

VIifcfg-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配置完成

重启网络即可 servicenetworkrestart

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

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

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

linux设置bond网卡绑定

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, )

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=100mode=1 primary=eth0

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

其它在/etc/rc.d/rc.local中也修改

modprobe bonding miimon=100mode=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, )

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。