提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、bonding简述
双网卡配置设置虚拟为一个网卡实现网卡的冗余,其中一个网卡坏掉后网络通信仍可正常使用,实现网卡层面的负载均衡和高可用性。
现在一般的企业都会使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多。而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(windows操作系统没有网卡绑定功能 需要第三方支持)。
1. bonding原理
网卡工作在混杂(promisc)模式,接收到达网卡的所有数据包,tcpdump工作用的也是混杂模式(promisc),将两块网卡的MAC地址修改为相同接收特定MAC的数据帧,然后把相应的数据帧传送给bond驱动程序进行处理。
2. Bonding模式(bonding mode)
1.轮询策略(round robin),mode=0,按照设备顺序依次传输数据包,提供负载均衡和容错能力
2.主备策略(active-backup),mode=1,只有主网卡处于工作状态,备网卡处于备用状态,主网卡坏掉后备网卡开始工作,提供容错能力
3.异或策略(load balancing (xor)),mode=2,根据源MAC地址和目的MAC地址进行异或计算的结果来选择传输设备,提供负载均衡和容错能力
4.广播策略(fault-tolerance (broadcast)),mode=3,将所有数据包传输给所有接口通过全部设备来传输所有数据,一个报文会复制两份通过bond下的两个网卡分别发送出去,提供高容错能力
5.动态链接聚合(lacp),mode=4,按照802.3ad协议的聚合自动配置来共享相同的传输速度,网卡带宽最高可以翻倍,链路聚合控制协议(LACP)自动通知交换机聚合哪些端口,需要交换机支持 802.3ad协议,提供容错能力
6.输出负载均衡模式(transmit load balancing),mode=5,输出负载均衡模式,只有输出实现负载均衡,输入数据时则只选定其中一块网卡接收,需要网卡和驱动支持ethtool命令
7.输入/输出负载均衡模式(adaptive load balancing),mode=6,输入和输出都实现负载均衡,需要网卡和驱动支持ethtool命令
二、网卡配置文件的配置
1. 配置环境
环境:系统CentOS 7 ,至少两块物理网卡(VMware上添加eth0,eth1)
2 .需要添加或修改的配置文件有5个(mode=1)
这5个配置文件是:
/etc/sysconfig/network-scripts/ifcfg-ens3{3,7}
/etc/sysconfig/network-scripts/ifcfg-bond0 #需要手动创建
/etc/modprobe.d/dist.conf #需要手动创建
/etc/rc.local
3/etc/sysconfig/network-scripts/ifcfg-{eth0,eth1,bonding0}修改或添加
提示:先备份好ens33和ens37,再修改这几个文件
[root@mwy ~]# systemctl stop NetworkManager
[root@mwy ~]# systemctl disable NetworkManager
4.修改/etc/modprobe.d/dist.conf文件
在此文件中添加以下内容:
[root@wy ~]# cat /etc/modprobe.d/dist.conf
alias bond0 bonding
options bond0 miimon=100 mode=1 primary=ens33
alias bond0 bonding,表示系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0
? miimon=100,表示系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线
? mode=1,表示绑定模式为1
? primary=eth0,系统首先eth0作为bond0接口与外界信息的传输接口
5.修改配置文件/etc/rc.local
在此文件中添加以下内容:
[root@wy ~]# cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
#bondind ens33 &ens37 to bond0
modprobe bonding miimon=100 mode=1
6. 重启网络(systemctl restart network),并查看三个接口的mac地址
使用ifconfig命令显示,bond0,ens33,ens37物理地址相同,提示三个网卡均通过一个ip主机端口与外界通信
ifconfig查看
在mode=1的情况下,当前bond0采用eth0通信,查看实际物理网卡地址
cat /proc/net/bonding/bond0
7.验证网络的连通性
[root@wy ~]# ping www.baidu.com -c 6
|