网卡聚合bonding

bonding.jpg

1. 简介

网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在应用部署中是一种常用的技术。网上有很多解释和说明,这里我从网上整理了一些简单的概念,可以了解一下。

1.1. 常用模式

常用的模式有:

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

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

mode=4:如果交换机及网卡都确认支持802.3ab,则实现负载均衡时尽量使用mode 4以提高系统性能

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

1.2. 模式选择

如果系统流量不超过单个网卡的带宽,请不要选择使用mode 1之外的模式,因为负载均衡需要对流量进行计算,这对系统性能会有所损耗。

建议mode 5、mode 6只在交换机不支持"ports group"的情况下选用。

如果交换机及网卡都确认支持802.3ab,则实现负载均衡时尽量使用mode 4以提高系统性能。

2. 配置

实际工作中使用mode4模式居多,这里我只讲解一下mode4的配置,其它模式的配置大同小异。

2.1. 参数说明

  1. xmit_hash_policy
    这个参数的重要性我认为仅次于mode参数,mode参数定义了分发模式 ,而这个参数定义了分发策略 ,文档上说这个参数用于mode2和mode4。

  2. layer2:使用二层帧头作为计算分发出口的参数,这导致通过同一个网关的数据流将完全从一个端口发送,为了更加细化分发策略,必须使用一些三层信息,然而却增加了计算开销。

  3. layer2+3:在1的基础上增加了三层的ip报头信息,计算量增加了,然而负载却更加均衡了,一个个主机到主机的数据流形成并且同一个流被分发到同一个端口,根据这个思想,如果要使负载更加均衡。

  4. layer3+4:可以形成一个个端口到端口的流,负载更加均衡。通过TCP及UDP端口及其IP地址进行HASH计算。

  5. miimon和arp: 使用miimon仅能检测链路层的状态,也就是链路层的端到端连接(即交换机某个口和与之直连的本地网卡口),然而交换机的上行口如果down掉了还是无法检测到,因此必然需要网络层的状态检测,最简单也是最直接的方式就是arp了,可以直接arp网关,如果定时器到期网关还没有回复arp reply,则认为链路不通了。

2.2. Centos的bonding配置

  • 配置文件有3个,内容分别如下:
[root@sys-idc-center01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2 
DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
HWADDR=00:E0:ED:7B:8B:04
BOOTPROTO=none
MASTER=bond1
SLAVE=yes
HOTPLUG=no
[root@sys-idc-center01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
TYPE=Ethernet
ONBOOT=yes
HWADDR=00:E0:ED:7B:8B:05
BOOTPROTO=none
MASTER=bond1
SLAVE=yes
HOTPLUG=no
[root@sys-idc-center01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond1 
DEVICE=bond1
TYPE=bond
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4"
IPADDR=192.168.212.1
NETMASK=255.255.255.192
GATEWAY=192.168.212.62
  • vlan配置
    如果需要配置vlan,那么PHYSDEV的网卡ip要去掉。
[root@sys-idc-center01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-vlan20 
DEVICE=vlan20
ONBOOT=yes
BOOTPROTO=none
PHYSDEV=bond1
VLAN=yes
USERCTL=no
IPADDR=192.168.212.1
NETMASK=255.255.255.192
  • 路由配置
    Centos7的路由文件。
[root@sys-idc-center01 ~]# cat /etc/sysconfig/network-scripts/route-bond1 
10.0.0.0/8 via 192.168.212.62 dev bond1
172.16.0.0/12 via 192.168.212.62 dev bond1

Centos6的路由文件。

[root@sys-idc-center01 ~]# cat /etc/sysconfig/static-routes 
any net 10.0.0.0/8     gw 192.168.212.62
any net 172.16.0.0/12  gw 192.168.212.62

2.3. Ubuntu的bonding配置

  • 安装软件包
root@ubuntu224004:~# apt-get install ifenslave
root@ubuntu224004:~# apt-get install vlan
  • 配置文件
root@ubuntu224004:~# cat /etc/modules
lp
rtc
bonding

root@ubuntu224004:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

#
auto p2p1
iface p2p1 inet manual
bond-master bond0

#
auto p2p2
iface p2p2 inet manual
bond-master bond0

# The primary network interface
auto bond0
iface bond0 inet static
hwaddress 00:E0:ED:7B:8B:04
bond-mode 4
bond-miimon 100
#bond-lacp-rate 1
bond-xmit_hash_policy layer3+4
bond-slaves p2p1 p2p2
address 192.168.212.1
netmask 255.255.255.192
gateway 192.168.212.62

  • 配置vlan

部分配置信息

root@ubuntu224004:~# cat /etc/network/interfaces
auto vlan20
iface vlan20 inet static
address 192.168.212.1
netmask 255.255.255.192
vlan-raw_device bond0
  • 配置路由

部分配置信息

root@ubuntu224004:~# cat /etc/network/interfaces
up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.212.62 bond0

2.4. Windows的bonding配置

有时间再更新

2.5. 手动配置

手动配置bonding和vlan的命令,参考如下。

[root@sys-idc-center01 ~]# modprobe bonding mode=4 miimon=100 xmit_hash_policy=layer3+4
[root@sys-idc-center01 ~]# ifconfig bond0 up
[root@sys-idc-center01 ~]# ifenslave bond0 eth0 eth1
[root@sys-idc-center01 ~]# vconfig add bond0 20
[root@sys-idc-center01 ~]# dhclient vlan20

剔除或添加端口。

[root@sys-idc-center01 ~]# ifenslave -d bond0 eth0
[root@sys-idc-center01 ~]# ifenslave bond0 eth0

查看bonding是否正确,在mode4里数值相同即正确。

[root@sys-idc-center01 ~]# cat /proc/net/bonding/bond1 |grep Agg
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
    Aggregator ID: 1
Aggregator ID: 1
Aggregator ID: 1

3. 总结

bonding模式的选择要根据实际情况,这点很重要。有的公司不选择使用bonding,原因是在业务层已经做了相当好的冗余,并且这样也省去了不少成本。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358

推荐阅读更多精彩内容

  • 有点难过,我写的居然没人赞我,感觉自己写的还不错,可能是涉世不深,可能还需改进,我挺喜欢写文字,我喜欢读书,喜欢运...
    是派大星啊阅读 224评论 1 3
  • 正午时分,一切都是宁静的!从小丘到大海,从海岛到天涯,时间缓缓的流淌。森林不再起舞,海涛不再躁动,生命变得驯服。而...
    小小精卫阅读 357评论 1 5
  • R: I:本书信息《学会提问》(尼尔 布朗著)淘金式思维不同于只讲求吸收记取的海绵式思维,它的特点在于主体随时的主...
    陶珍阅读 306评论 9 4