bond模式详解

一、什么是bond?

CentOS7系统可以将多个网络接口绑定在一起,来作为单一的接口去给上层应用使用。

二、为什么使用bond?

bong可以将多个网卡绑定到一起,可以让两个或多个接口作为一个接口,同时提高带宽,并提供网络链路的冗余,当有其中一块网卡故障的时候,不会中断服务器的业务。

三、bond模式配置

1、配置linux bond

a)、加载bonding模块

# 对于CentOS系统默认会加载bonding模块,我们也可以使用root用户手动加载模块**
# 临时加载模块,重启失效。
modprobe --first-time bonding
# 永久加载模块
modprobe bonding # 查看模块信息
modinfo bonding

b)、配置bond

b-1)、创建bond接口,在 /etc/sysconfig/network-scripts/ 目录中创建名为 ifcfg-bondN 的文

件,使用接口号码替换 N,比如 0

### 创建bond接口
# vim /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 //和文件名中的ifcfg-bond0中的bond0是一致的。
NAME=bond0 //设备名字,为了NetworkManage方便管理,和DEVICE保持一致
TYPE=Bond //TYPE要设置成Bond,表示该接口为bond接口
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=4 miion=100" //bond选项,引号里面的内容,需要配置,这里配置了之后,就不需要配置

b-2)、修改物理接口的配置文件

### vim /etc/sysconfig/network-scripts/ifcfg-em1

DEVICE=em1
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
MASTER=bond0 //
SLAVE=yes //
BOOTPROTO=none
同样的修改物理网卡,em2.

b-3)、验证、查看bond

### 查看bond0的绑定结果
[root@control1 network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup)
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: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: b8:ca:3a:6c:49:68
Slave queue ID: 0 Slave Interface: em2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: b8:ca:3a:6c:49:6a
Slave queue ID: 0

#######到这里,我们的bond可以直接用了,如果想将bond绑定到ovs上面,可以看下面的步骤########

2、将bond绑定到ovs上面(可选)

a)、前置条件

### 安装openvswitch
yum install -y openvswitch
systemctl enable openvswitch
systemctl start openvswitch

b)、配置网卡

b-1)、修改bond网卡

###
# vim /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
MACADDR="b8:ca:3a:6c:46:b0"
BONDING_OPTS="mode=802.3ad miimon=100"
MTU=9000

b-2)、创建br-ex,并定义br-ex为ovs虚拟网桥。

###
# vim /etc/sysconfig/network-scripts/ifcfg-br-ex DEVICE=br-ex
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
DEVICETYPE=ovs
TYPE=OVSBridge
MTU=9000
OVS_EXTRA="set bridge br-ex fail_mode=standalone"

四、bond模式

1、模式0

模式0(mode=0,round-robin):此模式使用轮询策略,即顺序的在每一个被bond的网卡上发送数据包,这种模式提供负载均衡和容错能力。Bond0可以保证bond虚拟网卡和被bond的两张或多张物理网卡拥有相同的MAC地址,其中bond虚拟网卡的MAC地址是其中一张物理网卡的MAC地址,而bond虚拟网卡的MAC地址是根据bond自己实现的一个算法来选择的。

在bond0模式下,如果一个连接或者会话的数据包从不同的网口发出,途中再经过不同的链路,则在客户端很有可能会出现数据包无序到达的现象,而无序到达的数据包一般需要重新发送,这样网络的吞吐量就会下降。同时,如果做bond0的两张或多张网卡接到了同一交换机上,还需对其配置聚合模式。

2、模式1

​ 模式1(mode=1,active-backup):此模式使用主被策略(热备)。在所有做bond1的物理网卡中,同一时刻只有一张网卡被激活,当且仅当活动网卡失效时才会激活其他的网卡。这种模式下做bond的两张或多张网卡的MAC地址和Bond虚拟网卡的MAC地址相同,而Bond的MAC地址是Bond创建启动后活动网卡(Active Slave)的MAC地址。这种模式要求主被网卡能快速的切换,即当主网卡出现故障后能迅速地切换至备用网卡。切换过程中,上层的应用几乎不受影响,因为Bond的驱动程序会临时接管上层应用的数据包,存放至数据缓冲区,等待备用网卡启动后再发送出去。但是如果切换时间过长,则会引起缓冲区的溢出,导致丢包。

3、模式2

 模式2(mode=2,balance-xor):xor为异或运算(二进制位相异为1,相同为0)。此模式的默认选择策略是:

选择网卡的序号=(源MAC地址 XOR 目标MAC地址) % Slave网卡(从网卡)的数量。

其他的传输策略可以通过xmit_hash_policy配置项指定。

4、模式3

​ 模式3(mode=3,broadcast):使用广播策略,数据包会被广播至所有Slave网卡进行传送。

5、模式4

模式4(mode=4,802.3ad):使用动态链接聚合策略,启动时会创建一个聚合组,所有Slave网卡共享同样的速率和双工设定。

必要条件:

1.支持使用ethtool工具获取每个slave网卡的速率和双工设定;

2.需要交换机支持IEEE 802.3ad 动态链路聚合(Dynamic link aggregation)模式

6、模式5

模式5(mode=5,balance-tlbtransmitload balancing):基于每个slave网卡的速率选择传输网卡。

必要条件:支持使用ethtool工具获取每个slave网卡的速率。

7、模式6

模式6(mode=6,balance-alb,Adaptive load balancing):该模式包含了bond5模式,同时还支持对IPV4流量接收时的负载均衡策略(receive load balance, rlb),而且不需要任何交换机的支持。

必要条件:

  1. ethtool支持获取每个slave的速率;
  2. 底层驱动支持设置某个网卡设备的硬件地址。

五、如何选择bond 模式

配置bond 模式主要是为了和交换机做协商。一般交换机支持LACP链路聚合,交换机的LACP又分为静态动态。下面是交换机的两种聚合方式介绍:

####################################

1,静态:

mode on,手动强制模式:
不发送也不接收LACP协商报文,交换机物理端口被强制捆绑到etherchannel,数据包根据聚合口负载均衡模式在多个物理口上传输。一般默认的为基于包的负载均衡,即在多个网口之间轮询发送数据包。使用这种聚合模式时,对端也必须是mode on,强制形成etherchannel。 ########################################
2,动态: active,主动协商模式:
交换机聚合口主动发出LACPDU报文,与对端符合802.3ad规范的动态聚合口主动协商。
一般推荐使用主动模式。 passive,被动协商模式: 交换机聚合口只接收LACPDU报文,被动与对端符合802.3ad规范的动态聚合口进行协商。

问题:那么服务器的bond 和交换机的链路聚合是如何匹配的?

bond模式详解的更多相关文章

  1. Extjs MVC开发模式详解

    Extjs MVC开发模式详解   在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...

  2. JavaScript严格模式详解

    转载自阮一峰的博客 Javascript 严格模式详解   作者: 阮一峰 一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict m ...

  3. HTTP协议头部与Keep-Alive模式详解

    HTTP协议头部与Keep-Alive模式详解 .什么是Keep-Alive模式? 我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器 ...

  4. (" use strict")Javascript 严格模式详解

    Javascript 严格模式详解 转载别人的博客内容,浏览了一遍,没有全部吸收,先保存一下链接 http://www.ruanyifeng.com/blog/2013/01/javascript_s ...

  5. Javascript设计模式之装饰者模式详解篇

    一.前言: 装饰者模式(Decorator Pattern):在不改变原类和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象. 装饰者模式的特点: 1. 在不改 ...

  6. HTTP协议Keep-Alive模式详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp22 HTTP协议Keep-Alive模式详解 1.什么是Keep-Aliv ...

  7. Java开源生鲜电商平台-盈利模式详解(源码可下载)

    Java开源生鲜电商平台-盈利模式详解(源码可下载) 该平台提供一个联合买家与卖家的一个平台.(类似淘宝购物,这里指的是食材的购买.) 平台有以下的盈利模式:(类似的平台有美菜网,食材网等) 1. 订 ...

  8. ext.js的mvc开发模式详解

    ext.js的mvc开发模式详解和环境配置 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开 ...

  9. Docker Kubernetes Service 网络服务代理模式详解

    Docker Kubernetes  Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...

随机推荐

  1. AES加密(java和C#)

    需求:Java和C#进行数据交互,互相采用AES/CBC/PKCS5Padding进行加解密 Java加密和解密的代码如下: /** * 加密 1.构造密钥生成器 2.根据 ecnodeRules 规 ...

  2. LeetCode_107. Binary Tree Level Order Traversal II

    107. Binary Tree Level Order Traversal II Easy Given a binary tree, return the bottom-up level order ...

  3. FastCGI模式下安装Xcache

    PHP执行的时候,会被编译成opcode,然后 zend引擎会执行opcode.也就是说,如果你两次执行同一个php程序,每次执行,他都要把php代码编译成opcodexcache的意义在于,当你第一 ...

  4. python面向对象之初步认识

    面向对象 类,用来描述一类事物的相同的特征或者属性.比如说,狗,狗属于一种统称,狗还分有不同的种类,比如,牧羊犬,蝴蝶犬,京巴等等,他们都有相同的特征,一个头,两个耳朵,四条腿,会跑,会吃东西,会汪汪 ...

  5. Docker - 在CentOS7中安装Docker

    在CentOS 7中安装Docker 1-确认系统信息 # cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # uname - ...

  6. charles 查找

    本文参考:charles 查找 查找设置 界面如上图,也没啥好说的: 这个还是非常常用的:需要了解 界面如上图,也没啥好说的: 这个还是非常常用的:需要了解 查找需要了解的关键字是: 查找的内容 正则 ...

  7. MySQL初始化脚本mysql_install_db使用简介及选项参数

    mysql_install_db是一个默认放在.../mysql/scripts的一个初始化脚本. 该脚本可以在任何装有perl的操作系统上被使用,在5.6.8之前的版本,该脚本是一个shell脚本, ...

  8. sklearn.feature_extraction.text.CountVectorizer 学习

    CountVectorizer: CountVectorizer可以将文本文档集合转换为token计数矩阵.(token可以理解成词) 此实现通过使用scipy.sparse.csr_matrix产生 ...

  9. linux破解navicat for mysql

    第一次执行start_navicat时,会在用户主目录下生成一个名为.navicat64的隐藏文件夹. cd ~/.navicat64 此文件夹下有一个system.reg文件 rm system.r ...

  10. Python习题002

    作业1:判断某一个字符串是否是小数 def is_float(string): string1 = str(string) if string1.count('.') > 1: #检测字符串小数 ...