linux多网卡绑定聚合-bond技术

网卡bond可以把多张网卡绑定为一个逻辑网卡,实现网卡的冗余,带宽扩容和负载均衡,会大幅度提升服务器的网络吞吐(I/O)。

bond模式:

1.Mode=0(balance-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。

2.Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。

3.Mode=2(balance-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)

4.Mode=3(broadcast) 表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。

5.Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)

6.Mode=5(balance-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave

7.Mode=6(balance-alb) 在5的tlb基础上增加了rlb。

5和6不需要交换机端的设置,网卡能自动聚合。4需要支持802.3ad。0,2和3理论上需要静态聚合方式。但实测中0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。

常用的有三种:

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

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

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

mode有七种工作状态可以用modeinfo bonding查看。需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里options bond0 miimon=100 mode=0是不够的,与网卡相连的交换机必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址.从 原理分析一下(bond运行在mode 0下):

mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑 了。所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称 为 ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.我们 的解 决办法是,两个网卡接入不同的交换机即可。

mode6模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址。

实验准备:

通过网口绑定(bond)技术,可以实现网口冗余,负载均衡。

bond模式:mode 1

2个物理网口分别是:eth0、eth1

绑定虚拟端口是;bond0

服务器ip:192.168.1.225

1.备份eth0和eth1的网卡配置文件

[[email protected] ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.ori}
[[email protected] ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth1{,.ori}

2.编辑eth0和eth1网卡的配置文件

主要配置DEVICE,USERCTL,ONBOOT,MASTER,SLAVE,BOOTPROTO其他的不用配置,eth1网卡的配置文件和eth0一样就是把DEVICE的值改成eth1。

[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
MASTER=bond0
SLAVE=yes
TYPE=Ethernet
NM_CONTROLLED=yes
PEERDNS=yes
IPV6INIT=no

3.配置虚拟网卡bond0

配置虚拟网卡我用的自动获取ip的方式,也可以静态配置ip

dhcp自动获取ip地址:

[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
USERCTL=no
PEERDNS=yes
IPV6INIT=no

用静态ip地址(本次实验以这种方式为例):

[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
DNS1=192.168.18.1
NM_CONTROLLED=yes
PEERDNS=yes
DNS2=114.114.114.114
TYPE=Ethernet
IPV6INIT=no
IPADDR=192.168.1.225
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

4.修改modprobe相关的配置文件

编辑加载bonding的专属配置文件/etc/modprobe.d/bonding.conf,没有就在创建一个。

[[email protected] ~]# cat /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding miimon=100 mode=1

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

[[email protected] ~]# modprobe bonding

6.确认模块是否加载成功

[[email protected] ~]# lsmod|grep bonding
bonding   133013  0

7.重启网络确认一下情况

[[email protected] ~]# /etc/init.d/network restart
Shutting down interface bond0: [  OK  ]
Shutting down loopback interface:  [  OK  ]
Bringing up loopback interface:[  OK  ]
Bringing up interface bond0:
Determining IP information for bond0... done.
   [  OK  ]
[[email protected] ~]# ifconfig|grep HWaddr
bond0 Link encap:Ethernet  HWaddr 00:0C:29:9C:41:1C
eth0  Link encap:Ethernet  HWaddr 00:0C:29:9C:41:1C
eth1  Link encap:Ethernet  HWaddr 00:0C:29:9C:41:1C

现在查看的mac地址是一样的其实是不一样的如下所示

8.增加默认网关

启动系统自动绑定,增加默认网关

[[email protected] ~]# vim /etc/rc.d/rc.local
#追加
route add default gw 192.168.1.1  《==根据需求配置

9.将modprobe相关文件写入/etc/rc.local中

开机自动加载

[[email protected] ~]# grep "modprobe" /etc/rc.local
modprobe bonding miimon=100 mode=1

10.添加负载均衡工具ifenslave

ifenslave负载均衡工具可以将数据包有效的分配,通常结合交换机和路由使用。这时会新建一个bond0的虚拟设备,使用我们设置ip地址。这个时候eth0和eth1的工作模式混杂,什么数据都接收,但是数据过来之后ifenslave的底层驱动来做负载均衡,决定哪些数据规组里面的那个成员处理。

将负载均衡设置添加到/etc/rc.local中,开机自动加载

[[email protected] ~]# cat /etc/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=10 mode=1
ifenslave bond0 eth0 eth1

11.添加两个虚拟网卡的方法

添加两个网卡就不能在/etc/modprobe.d/bonding.conf里面堆叠了。正确的做法是

alias bond0 bonding
alias bond1 bonding
options bonding max_bonds=2 miimon=200 mode=1

提示:配置好之后重启系统生效

12.测试

工作服务器可以拔掉第一块网卡的网线测试。虚拟机我们可以断开第一块网卡的连接,切记不是down掉第一块网卡而是断开第一块网卡的网络连接,在虚拟机的右下角断开连接。

原文地址:http://blog.51cto.com/10642812/2284372

时间: 2024-08-29 13:08:05

linux多网卡绑定聚合-bond技术的相关文章

linux多网卡绑定聚合——bond技术

将多个Linux网络端口绑定为一个,可以提升网络的性能,比如对于备份服务器,需要在一个晚上备份几个T的数据,如果使用单个的千兆网口将会是很严重的瓶颈.其它的应用,比如ftp服务器,高负载的下载网站, 都有类似的问题.因此使用Linux teaming或bond来绑定多个网卡作为一个逻辑网口,配置单个的IP地址,会大幅提升服务器的网络吞吐(I/O). Linux的多网卡绑定功能使用的是内核中的"bonding"模块,关于此模块可以参考Linux Ethernet Bonding Driv

linux多网卡绑定聚合-Bond详细完整版

Linux Bonding 一.什么是bondingLinux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余 二.bonding应用方向 1.网络负载均衡 对 于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题. 对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题

Linux多网卡绑定聚合链路—bond技术

Linux多网卡绑定聚合链路-bond技术 一.理论部分 将多个Linux网络端口绑定为一个,可以提升网络的性能,比如对于备份服务器,需要在一个晚上备份几个T的数据,如果使用单个的千兆网口将会是很严重的瓶颈.其它的应用,比如ftp服务器,高负载的下载网站, 都有类似的问题.因此使用Linux teaming或bond来绑定多个网卡作为一个逻辑网口,配置单个的IP地址,会大幅提升服务器的网络吞吐(I/O).Linux的多网卡绑定功能使用的是内核中的"bonding"模块,关于此模块可以参

Linux多网卡绑定(bond)及网络组(team)

Linux多网卡绑定(bond)及网络组(team) ??很多时候,由于生产环境业务的特殊需求,我们需要对服务器的物理网卡实施特殊的配置,从而来满足不同业务场景下对服务器网络的特殊性要求.如高并发的网络IO型业务,需要高速的网络IO,即对网卡的收收发包处理能力及网卡最大带宽速度等性能指标提出了更高的要求:事务处理型的系统,如金融交易系统.电商平台等,对物理网络线路.网卡等物理设备的稳定可靠性提出了更高的要求. ??Linux系统中,可以通过多网卡绑定(bonding)和网络组(team)等技术,

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

http://www.cnblogs.com/qmfsun/p/3810905.html Linux网卡绑定探析 2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的网卡绑定模式,Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个网络接口设置来使用,用于网络负载均衡及网络冗余.当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(win

Linux网卡绑定(bond)

Linux网卡绑定(bond) 需求:一张管理口千兆网卡eth0,两张业务口千兆网卡(eth1和eth2),运行Centos6.5,需要将两张业务口网卡当作负载均衡使用 配置: 1.查看系统版本 # cat /etc/issue CentOS release 6.5(Final) Kernel \r on an \m 2.绑定网卡 2.1添加服务器启动时加载的模块 # echo"alias netdev-bond0 bonding" >/etc/modprobe.d/bond.c

Linux 双网卡绑定技术

bond技术是在linux2.4以后加入内核. 一般步骤是1.把bonding模块加入内核, 2 编辑要绑定的网卡设置,去除地址设定 3 添加bond设备,设置地址等配置 4  重启网络 5 在交换机上做支持 具体信息看  内核文档 Documentation/networking/bonding.txt 参考实例: Linux 双网卡绑定一个IP地址,实质工作就是使用两块网卡虚拟为一块,使用同一个IP地址,是我们能够得到更好的更快的服务.其实这项技术在Sun和Cisco 中早已存在,被称为Tr

linux多网卡绑定bonding

Linux  多网卡绑定概述 本文 os:6.4  这里测试是四块网卡绑定 1 块 bond 我们在这介绍的Linux 双 网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链 接聚合成一个逻辑链路工作.其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel 技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding.bonding技术的最早应用是在

linux 单网卡绑定多IP及BONGDING的实现

Linux Bond 1 bond 的概念 Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作. 2 bond 技术的由来 这项 技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding. 3 bond 工作原理 在正常情况下,网卡只接收目的硬件地址(MAC Add