常用查看网卡命令
查看网卡连接状态 | 示例 |
ethtool eth0 | Link detected: yes |
ifconfig -a | |
mii-tool mii-tool -w mii-tool -v | # mii-tool bond0 bond0: 10 Mbit, half duplex, link ok |
/etc/init.d/network status | 显示所有设备及活跃设备 |
service --status-all |
bonding 网卡模式总结
网卡模式 | 名称 | 作用 | 备注 |
mode=0 | 平衡负载模式 (AA静态聚合绑定模式) | 有自动备份,但需要“Swithc支持” 数据包依次从参与bond的网口进行传输,即第一个包走eth0,下一个包走eth1...一直到最后一个传输完毕。 缺点:收数据包的一方,可能会出现数据包乱序(因为发送方从不同的接口发出的话,中途经过不同的链路),需要重新要求被发送,这样网络的吞吐量就会下降;静态聚合模式虽然能够增加带宽,但是不能提供容错能力。 | 使用此模式时(设置options bond0 miimon=100 mode=0),多个网口上连如果是同一台交换机的话,交换机的这几个口要做聚合功能,使其为一个Mac地址,因为mode=0时,会把物理服务器参与bond的口设置为相同的mac,如果上连为不同的交换机的话,这个没有问题; 场景:此绑定模式适用于网络压力没有那么大的场景下。日常工作中一般应用比较少,主要用在ESXI主机上,主要原因是ESXI主机对流量要求很高,但是hypervisor本身不支持LACP协议。 |
mode=1 | 自动备援模式 (A/S主备模式) | 中有一个网口设备处于活动状态,其它都是备份状态。 | 从外面看bond的mac是唯一的,此模式提供了容错能力,提供高可用的网络连接,但它的资源利用率低,因为只有一个接口处于工作状态。(利用率:1/N) 应用场景:主备模式的容错能力决定这种网卡绑定模式适用于对网络链路带宽不是很敏感,但是要求高冗余性的场景下 |
mode=2 | 基于源目的MAC HASH策略传输数据包 | 基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力 | |
mode=3 | 广播策略模式 | 在每个接口上面传输每个数据包,此模式提供了容错能力 | |
mode=4 | 动态链接聚合模式 (AA动态聚合绑定模式) | 创建一个聚合组,它们共享同样的速率和全双工设定。 外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。 | 条件1:ethtool支持获取每个slave的速率和双工设定 条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation 条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式 动态聚合绑定模式,即802.3ad 动态容错,与Windows中的SLB绑定模式基本相同,但是要求交换机必须支持802.3ad中的链路聚合控制协议(LACP),动态聚合模式能够提升网络带宽,并提供容错能力。与上面的静态AA模式不同,动态聚合模式会通过查询的方式检查是否加入了LAG组,如果加入了就开启LACP协议,如果没有加入则略过此协议。如果有连接down了,就会自动脱离LACP控制,不会影响其他的链路,因此动态聚合模式提供了较高的容错能力。同时,动态聚合模式所有流量的分发基于hash算法,理论上,不同两台PC的网络链接会通过不同的网络连线传输通讯帧,因此总带宽就增加了一倍,但是实际情况并不会有这么大的提升,但是此绑定模式还是能够带来可观的带宽提升,以及比较好的容错能力。 应用场景:适用于高容错性,高带宽的场景下,比如部署数据库。 |
mode=5 | 适配器传输负载均衡 | 不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。 | 条件:ethtool支持获取每个slave的速率 |
mode=6 | 适配器适应性负载均衡 | 有自动备援,不必”Switch”支援及设定; 此模式包含mode=5适配器传输负载均衡,同时加上针对IPV4流量的接收负载均衡,并且不需要交换机支持。接收负载均衡是通过ARP协商实现的。 | 无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址; 条件1:ethtool支持获取每个slave的速率; 条件2:底层驱动支持设置某个设备的硬件地址,从而使得总是有个slave(curr_active_slave)使用bond的硬件地址,同时保证每个bond 中的slave都有一个唯一的硬件地址。如果curr_active_slave出故障,它的硬件地址将会被新选出来的 curr_active_slave接管 其实mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量 |
查看bonding工作状态 | cat /proc/net/bonding/bond0、netstat -rn、ifconfig -a |
bonding 模式实例
这里以 mode4 为例配置如下:
[root@k8s-master-1 network-scripts]# cat ifcfg-em2
TYPE=Ethernet
BOOTPROTO=none
NAME=em2
DEVICE=em2
ONBOOT=yes
MASTER=bond0
SLAVE=yes
[root@k8s-master-1 network-scripts]# cat ifcfg-em1
DEVICE=em1
BOOTPROTO=none
SLAVE=yes
MASTER=bond0
TYPE=Ethernet
ONBOOT=yes
[root@k8s-master-1 network-scripts]# cat ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
BONDING_MASTER=yes
BONDING_OPTS='miimon=100 mode=4 xmit_hash_policy=layer2+3'
TYPE=Bond
IPADDR=192.168.1.4
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
[root@k8s-master-1 network-scripts]#
配置完成后,重启网卡即可生效,查看网卡链接状态如下:
[root@k8s-master-1 network-scripts]# ethtool em1|grep Link
Link detected: yes
[root@k8s-master-1 network-scripts]# ethtool em2|grep Link
Link detected: yes
[root@k8s-master-1 network-scripts]# ethtool bond0 |grep Link
Link detected: yes
[root@k8s-master-1 network-scripts]#
查看 bonding 信息如下:
[root@k8s-master-1 network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: 24:6e:96:04:99:48
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 15
Partner Key: 7
Partner Mac Address: 74:1f:4a:2e:64:3b
Slave Interface: em1
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 24:6e:96:04:99:48
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: 24:6e:96:04:99:48
port key: 15
port priority: 255
port number: 1
port state: 61
details partner lacp pdu:
system priority: 32768
system mac address: 74:1f:4a:2e:64:3b
oper key: 7
port priority: 32768
port number: 5
port state: 61
Slave Interface: em2
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: a0:36:9f:82:76:3e
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: 24:6e:96:04:99:48
port key: 15
port priority: 255
port number: 2
port state: 61
details partner lacp pdu:
system priority: 32768
system mac address: 74:1f:4a:2e:64:3b
oper key: 7
port priority: 32768
port number: 210
port state: 61
[root@k8s-master-1 network-scripts]#
总结
由于网卡 bonding 模式有6种,每种都有各自的功能和使用场景,在使用时,可根据业务的实现情况进行选择,只有理解了各种模式的功能特点后,方可做出正确的选择。
基础小知识
tcpdump 使用小结
Centos7.6内核升级
Centos 7 升级 Python 与 Yum 修改
Centos 7 安装 Redis 5.0.8 单实例
CentOS 7 下 yum 安装 MySQL 5.7 最简教程
kubernetes中部署 nacos,使用外部MySQL存储
你真的了解客户端请求如何到达服务器端的吗
hping 命令使用小结
专辑分享
kubeadm使用外部etcd部署kubernetes v1.17.3 高可用集群
第一篇 使用 Prometheus 监控 Kubernetes 集群理论篇