一:bonding的概念

所谓bonding就是将多块网卡绑定同一IP地址对外提供服务,可以实现网卡的带宽扩容、高可用或者负载均衡。

二:bonding的优势

1 网络负载均衡
2 提高带宽网络传输效率
3 网络冗余与高可用

三:bonding的策略(7种策略)

1  balance-rr (mode=0)轮询(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力。
2 active-backup(mode=1)主备模式 ,在绑定中,只有一个slave被激活。当且仅当活动的slave接口失败时才会激活其他slave。为了避免交换
  机发生混乱此时绑定的MAC地址只有一个外部端口上可见。在bongding的2.6.2及其以后的版本中,主备模式下发生一次故障迁移时,bonding将在新
  激活的slave上会送一个或者多个gratuitous ARP.bonding的主salve接口上以及配置在接口上的所有VLAN接口都会发送gratuitous ARP,只要
  这些接口上配置了至少一个IP地址。VLAN接口上发送的的gratuitous ARP将会附上适当的VLAN id。本模式提供容错能力,primary option,
  documented below会影响本模式的行为。
3 balance-xor(mode=2)XOR策略:基于所选择的传送hash策略。本模式提供负载均衡和容错的能力。
4 broadcast(mode=3)广播策略:在所有的slave接口上传送所有的报文。本模式提供容错能力。
5 802.3ad(mode=4)IEEE 802.3ad 动态链路聚合。创建共享相同的速率和双工模式的聚合组。能根据802.3ad规范利用所有的slave来建立聚合链路。
  Salve的出站选择取决于传输的hash策略,默认策略是简单的XOR策略,而hash策略则可以通xmit_hash_policy选项加以改变。需要注意的是:不是所有
  的传输策略都与802.3ad兼容,尤其是802.3ad标准的43.2.4章节中关于 packet mis-ordering要求的地方。不同个体的实现往往出现很大的不兼容。
先决条件:
1. 每个slave的基本驱动支持Ehtool获取速率和双工状态。
2.交换机支持IEEE 802.3ad动态链路聚合。大多数的交换机都需要使用某种配置方式来启用802.3ad模式。
6 balance-tlb(mode=5)
  自适应传输负载均衡:信道绑定不需要特殊的交换机支持。出口流量的分布取决于当前每个slave的负载(计算相对速度)。进口流量从当前的slave的接收。
  如果接收salve出错,其他的slave接管失败的slave的MAC地址继续接收。
先决条件:
每个slave的基本驱动支持Ehtool获取速率状态。
7 balance-alb(mode=6)
自适应负载均衡:包括balance-tlb(模式5)以及用于IPV4流量的接收负载均衡,并且不需要特殊的交换机支持。接收负载均衡通过ARP协商实现。bonding的
驱动拦截本机发出的ARP Replies(ARP回应报文),并且用bond的某一个slave的硬件地址改写ARP报文的源地址,使得本服务器对不同的设备使用不同的硬件
地址。本服务器建立的连接的接收流量也是负载均衡的。当本机发送ARP Request时,bonding驱动通过ARP报文复制并保存节点的IP信息。当从其他节点接收到
ARP Reply,bonding驱动获取节点的硬件地址并且会回应一个包含绑定好的slave的硬件地址的ARP Reply给发送的节点。用ARP协商的负载均衡的有一个问题
是每次用bond的硬件地址广播ARP报文,那么其他节点发送的数据全部集中在一个slave上,处理ARP更新给其他所有节点的时候,每个节点会重新学习硬件地址,
导致流量重新分配。当新加入一个slave或者一个非激活的slave重新激活的时候也会导致接收流量重新分配。接收流量负载是串行(轮转)的分配在bond的一组速
率最高的slave上。
当一个链路重连或者一个新的slave加入的时候,bond会重新初始化ARP Replies给所有的客户端。updelay参数的值必须等于或者大于交换机的forwarding delay,
以免ARP Replies被交换机阻塞。
先决条件:
1.每个slave的基本驱动支持Ehtool获取速率状态。
2. 基本驱动支持当设备打开时重新设置硬件地址。也要求每一个slave具有唯一的硬件地址。如果curr_active_slave失败,它的硬件地址被新选上的
  curr_active_slave硬件地址来替换

四 bonding的相关配置(生产环境mode=6的方式)

1 首先进入网卡文件配置目录  cd /etc/sysconfig/network-scripts/

2 备份网卡配置文件cp ifcfg-eth0  ifcfg副本-eth0

3 拷贝cp ifcfg-eth0  ifcfg-bond0

4 配置 bonding

#cat <<EOF >>ifcfg-bond0
DEVICE=bond0
BONDING_OPTS='miimon=100 mode=6'
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.61
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
USERCTL=no
EOF

配置网卡eth0、eth1

#cat << EOF >>ifcfg-eth0
DEVICE=eth0
HWADDR=D0:50:99:C1:0E:83
TYPE=Ethernet
UUID=5eefe89c-0cbf-426c-987e-1b6ee1c54024
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
EOF #cat << EOF >>ifcfg-eth01
DEVICE=eth1
HWADDR=D0:50:99:C1:0E:81
TYPE=Ethernet
UUID=a71f51f5-c05b-4bcd-a618-bb09813be60e
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
EOF 

五: 加载bonding模块配置文件声明

#加载配置
# cat /etc/modprobe.d/bond.conf
alias bond0 bonding
# 修改bond模式的两种方式
1.cat /etc/modprobe.d/dist.conf
 options bond0 miimon=100 mode=6
2 还有一种修改方式在ifcfg-bond0网卡配置文件追加
 BONDING_OPTS="mode=1 miimon=100"

1 #modprobe bonding      加载bonding配置

service network restart 重启网卡

2 查看bond0 是否生效

#cat /proc/net/bonding/bond0
Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0 Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: d0:50:99:c1:0e:83
Slave queue ID: 0 Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: d0:50:99:c1:0e:81
Slave queue ID: 0 

3 开机自启脚本配置声明

cat /etc/rc.local
#!/bin/bash
touch /var/lock/subsys/local
ifenslave bond1 eth1 eth2  

注意:在重启network服务时需关闭NetworkManager

#systemctl stop NetworkManager.service     # 停止NetworkManager服务

#systemctl disable NetworkManager.service  # 禁止开机启动NetworkManager服务

#systemctl isdisable NetworkManager.service  #查看NetworkManager服务是否关闭 

原因:
在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置
会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路
由,没有加入到NetworkManager的配置文件中,路由就被清理掉,网络连接后需要自定义添
加上去。

五 测试:

1 在测试高可用时:

拔掉一根网线看是否还能ping通bond0

2 在测试流量带宽时

如果两张网卡为千兆带宽时,我们应同时准备两台同等带宽的服务器同时测试

准备:

软件:iperf3 参考博客:https://www.cnblogs.com/yingsong/p/5682080.html

命令 服务端:  iperf –s -u –p 12345 –i 1

   客户端: iperf -c server-ip -p server-port -i 1 -t 10 -b(两台客户端服务器同时执行)

结果:如果服务端的带宽大于1000M且拔掉一根网线还能成功,证明bonding配置成功

Bonding Mode: adaptive load balancingPrimary Slave: NoneCurrently Active Slave: eth1MII Status: upMII Polling Interval (ms): 100Up Delay (ms): 0Down Delay (ms): 0

Slave Interface: eth0MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 1Permanent HW addr: d0:50:99:c1:0e:83Slave queue ID: 0

Slave Interface: eth1MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: d0:50:99:c1:0e:81Slave queue ID: 0--------------------- 作者:su4416160 来源:CSDN 原文:https://blog.csdn.net/su4416160/article/details/53103599 版权声明:本文为博主原创文章,转载请附上博文链接!

关于提高服务器的带宽策略bonding的更多相关文章

  1. Linux(Centos )的网络内核参数优化来提高服务器并发处理能力【转】

    简介 提高服务器性能有很多方法,比如划分图片服务器,主从数据库服务器,和网站服务器在服务器.但是硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题 ...

  2. IO复用(Reactor模式和Preactor模式)——用epoll来提高服务器并发能力

    上篇线程/进程并发服务器中提到,提高服务器性能在IO层需要关注两个地方,一个是文件描述符处理,一个是线程调度. IO复用是什么?IO即Input/Output,在网络编程中,文件描述符就是一种IO操作 ...

  3. 优化Linux下的内核TCP参数来提高服务器负载能力

    http://blog.renhao.org/2010/07/setup-linux-kernel-tcp-settings/ /proc/sys/net目录 所有的TCP/IP参数都位于/proc/ ...

  4. 阿里云新老用户购买 2核8G云服务器5M带宽

    这次阿里云活动的力度还是很大的,2核8G云服务器5M带宽 3年才2070 ,还是很值的购买的. 也放一个我的团战队连接,欢迎大家一起拼低价 https://m.aliyun.com/act/team1 ...

  5. 服务器1M带宽同时能承受多少人在线

    最近网站的流量一直在增长,这个肯定是好事.不过也有个麻烦的问题,目前本站用的的虚拟空间,每月流量30G,虽然95%的图片都已外链,但流量还是很吃紧,日均2000ip,4月份流量34g左右,单JS的响应 ...

  6. 优化Linux的内核参数来提高服务器并发处理能力

    提高Linux系统下的负载能力,可以使用nginx等原生并发处理能力就很强的web服务器 使用Apache的可以启用其Worker模式,来提高其并发处理能力 修改Linux的内核相关TCP参数,来最大 ...

  7. [记录]优化Linux 的内核参数来提高服务器并发处理能力

    优化Linux 的内核参数来提高服务器并发处理能力PS:在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题.要提高Linux 系统下的负载 ...

  8. Nginx配置服务器宕机策略

    Nginx解决服务器宕机问题,Nginx配置服务器宕机策略,如果服务器宕机,会找下一台机器进行访问        配置nginx.cfg配置文件,在映射拦截地址中加入代理地址响应方案 location ...

  9. iptables 添加raw提高服务器性能之路

    前几天准备把线上一批机器添加iptables.于是梳理出几个需要通外网的端口,80,81等. 防火墙规则如下: #### filter table ########################## ...

随机推荐

  1. C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  2. HTTP Request Method(十五种)

    序号 方法 描述 1 GET 请求指定的页面信息,并返回实体主体. 2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 3 POST 向指定资源提交数据进行处理请求(例如提 ...

  3. 构建自己的js库

    一.背景 web前端开发人员经常会用到一些现成的js库(框架).框架的使用增加了代码的模块化和可复用性,最主要的是屏蔽了浏览器之间差异性的实现,使得代码更加简洁,框架使用者只需要将注意力放在业务的实现 ...

  4. 算法图解(python2.7)高清PDF电子书

    点击获取提取码:pzhb 内容简介 本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量.书中的前三章将帮助你打下基础,带你学习二分查找.大O表示法. ...

  5. Centos8最小化部署安装OpenStack Ussuri

    #!/bin/bash #Centos8最小化部署安装OpenStack Ussuri #共两台主机,分别是一台控制节点,一台计算节点 #.控制节点内存4096M.双网卡,分别为eth0:10.0.0 ...

  6. 008_用go语言实现简单的冒泡排序

    冒泡排序是各个语言中的基本排序算法,本次我们用go语言实现简单的冒泡排序 package main import "fmt" // [13,10,5,7,2] // [10,13, ...

  7. 秦九韶算法 & 三分法

    前言 今天考试出了一个题 郭郭模拟退火骗了75分 于是再次把咕咕了好久的模退提上日程 如果进展顺利 明后天应该会开爬山算法和模退的博客笔记 今天先把今天考试的正解学习一下--三分法 引入 老规矩上板子 ...

  8. Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)

    前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...

  9. Qt之先用了再说系列-多线程方式1

    Qt 多线程的用法还是比较简单的,也比较好用,接下来我们就分析分析如何使用. 说起Qt 线程的使用方式,一般有2种使用方式,具体哪种比较好看自己心情了,现在有官方的推荐用法,用不用还是看你心情的 好, ...

  10. java实现一个简单的爬虫小程序

    前言 前些天无意间在百度搜索了一下以前写过的博客 我啥时候在这么多不知名的网站上发表博客了???点进去一看, 内容一模一样,作者却不是我... 然后又去搜了其他篇博客,果然,基本上每篇都在别的网站上有 ...