linux双网卡绑定
网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术.
背景介绍 服务器一台, centos系统, 双网卡eth1, eth2; 交换机一台, 有一对网口做了端口聚合。 服务器只要有1个网卡连接普通网口就可以正常连网, 两个网卡单独连接聚合网口、共同连接聚合网口不能通信。 现在服务器上对两个网卡进行bond, 实现可以通过聚合网口通信(单独可通信、一起连接双倍带宽)。
1. 加载bonding 模块
sudo modprobe bonding
或者
在/etc/modprobe.d/下, 创建bonding.conf文件
编辑文件内容:
alias bond0 bonding
2. 修改bond0、eth1、eth2文件
进入/etc/sysconfig/network-scripts/目录, 创建bond0文件并修改eth1、eth2文件内容; 如果eth1文件有初始配置, 可直接复制文件内容
cp ifcfg-eth1 ifcfg-bond0
vi ifcfg-bond0
# 内容 标注111内容必须修改
TYPE=Ethernet
BONDING_MASTER=yes # 111
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
OPTS="mode=0 miimon=100" # 可在此处配置, 也可以在bonding.conf中修改
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=bond0 # 111
UUID=316a1911-d11c-4fd3-beb8-c4e095ff5e75
DEVICE=bond0 # 111
ONBOOT=yes # 111
IPADDR=10.75.206.6
NETMASK=255.255.254.0
GATEWAY=10.75.206.254
DNS1=202.101.172.35
DNS2=223.5.5.5
eth1内容, vi /etc/sysconfig/network-scripts/ifcfg-eno1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none # 111
MASTER=bond0 # 111
SLAVE=yes # 111
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno1
#UUID=316a1911-d11c-4fd3-beb8-c4e095ff5e75
DEVICE=eno1
ONBOOT=yes
#IPADDR=10.75.206.6
#NETMASK=255.255.254.0
#GATEWAY=10.75.206.254
#DNS1=202.101.172.35
#DNS2=223.5.5.5
重启网卡
systemctl restart network
查看网卡信息
ifconfig
查看模式及网卡信息
cat /proc/net/bonding/bond0
热插拔测试网络 拔出其中任意一个网线测试连接状况,可正常通信。 注意切换设备可能会有几秒钟左右的延迟。
测试过程中发现, 局域网内可连通, ping外网ip也正常, 但是不能解析网址, 发现是DNS地址写错了, 修改DNS地址。
修改DNS
vi /etc/resolv.conf
两个DNS地址
202.101.172.35
223.5.5.5
4. bond的几种模式
mode=0 (balance-rr)负载均衡, 轮询
可实现带宽扩容, 需要交换机做端口聚合。
mode=1 (active-backup)主从备份
一主一从, 只有主设备在工作, 主设备down之后才会启用从设备.
4. 使用iperf3测试带宽
服务端: iperf3 -s -i 1 -p 1314 客户端: iperf3 -c 10.75.206.7 -i 1 -t 60 -p 1314 ipperf 测试带宽 开了两个端口1314, 1315. 测试带宽均为千兆级别.
1315
1314