设为首页 收藏本站
查看: 791|回复: 0

[经验分享] Linux--多网卡的7种Bond模式【转】

[复制链接]

尚未签到

发表于 2017-7-9 16:54:39 | 显示全部楼层 |阅读模式
  转自:http://www.cnblogs.com/lcword/p/5914089.html
  网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡。在应用部署中是一种常用的技术,我们公司基本所有的项目相关服务器都做了bond,这里总结整理,以便待查。
  bond模式:

  • Mode=0(balance-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。
  • Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。
  • Mode=2(balance-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)
  • Mode=3(broadcast) 表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。
  • Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)
  • Mode=5(balance-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave
  • 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 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地址。
  Linux网口绑定
  通过网口绑定(bond)技术,可以很容易实现网口冗余,负载均衡,从而达到高可用高可靠的目的。前提约定:
  2个物理网口分别是:eth0,eth1
  绑定后的虚拟口是:bond0
  服务器IP是:192.168.0.100
  第一步,配置设定文件:
  /etc/sysconfig/network-scripts/ifcfg-bond0
  DEVICE=bond0
  BOOTPROTO=none
  ONBOOT=yes
  IPADDR=192.168.0.100
  NETMASK=255.255.255.0
  NETWORK=192.168.0.0
  BROADCAST=192.168.0.255
  #BROADCAST广播地址
  /etc/sysconfig/network-scripts/ifcfg-eth0
  DEVICE=eth0
  BOOTPROTO=none
  MASTER=bond0
  SLAVE=yes
  /etc/sysconfig/network-scripts/ifcfg-eth1
  DEVICE=eth1
  BOOTPROTO=none
  MASTER=bond0
  SLAVE=yes
  第二步,修改modprobe相关设定文件,并加载bonding模块:
  1.在这里,我们直接创建一个加载bonding的专属设定文件/etc/modprobe.d/bonding.conf
  [iyunv@test ~]# vi /etc/modprobe.d/bonding.conf
  #追加
  alias bond0 bonding
  options bonding mode=0 miimon=200
  2.加载模块(重启系统后就不用手动再加载了)
  [iyunv@test ~]# modprobe bonding
  3.确认模块是否加载成功:
  [iyunv@test ~]# lsmod | grep bonding
  bonding 100065 0
  第三步,重启一下网络,然后确认一下状况:
  [iyunv@test ~]# /etc/init.d/network restart
  [iyunv@test ~]# cat /proc/net/bonding/bond0
  Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
  Bonding Mode: fault-tolerance (active-backup)
  Primary Slave: None
  Currently Active Slave: eth0
  ……
  [iyunv@test ~]# ifconfig | grep HWaddr
  bond0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
  eth0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
  eth1 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74
  从上面的确认信息中,我们可以看到3个重要信息:
  1.现在的bonding模式是active-backup
  2.现在Active状态的网口是eth0
  3.bond0,eth1的物理地址和处于active状态下的eth0的物理地址相同,这样是为了避免上位交换机发生混乱。
  任意拔掉一根网线,然后再访问你的服务器,看网络是否还是通的。
  第四步,系统启动自动绑定、增加默认网关:
  [iyunv@test ~]# vi /etc/rc.d/rc.local
  #追加
  ifenslave bond0 eth0 eth1
  route add default gw 192.168.0.1
  #如可上网就不用增加路由,0.1地址按环境修改.
  ------------------------------------------------------------------------
  留心:前面只是2个网口绑定成一个bond0的情况,如果我们要设置多个bond口,比如物理网口eth0和eth1组成bond0,eth2和eth3组成bond1,
  那么网口设置文件的设置方法和上面第1步讲的方法相同,只是/etc/modprobe.d/bonding.conf的设定就不能像下面这样简单的叠加了:
  alias bond0 bonding
  options bonding mode=1 miimon=200
  alias bond1 bonding
  options bonding mode=1 miimon=200
  正确的设置方法有2种:
  第一种,你可以看到,这种方式的话,多个bond口的模式就只能设成相同的了:
  alias bond0 bonding
  alias bond1 bonding
  options bonding max_bonds=2 miimon=200 mode=1
  第二种,这种方式,不同的bond口的mode可以设成不一样:
  alias bond0 bonding
  options bond0 miimon=100 mode=1
  install bond1 /sbin/modprobe bonding -o bond1 miimon=200 mode=0
  仔细看看上面这2种设置方法,现在如果是要设置3个,4个,甚至更多的bond口,你应该也会了吧!
  后记:简单的介绍一下上面在加载bonding模块的时候,options里的一些参数的含义:
  miimon 监视网络链接的频度,单位是毫秒,我们设置的是200毫秒。
  max_bonds 配置的bond口个数
  mode bond模式,在一般的实际应用中,0和1用的比较多,

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-392092-1-1.html 上篇帖子: 多网卡绑定(bond) 下篇帖子: IP网络,光网络以及轨道交通的快速卸载随想
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表