创建Linux网卡的链路聚合
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
文章目录
前言
一、链路聚合的意义(为什么要做)
① 提升带宽(带宽叠加)
② 保障高可用(故障自动切换)
③ 负载均衡(流量分担)
④ 避免单点故障(高可靠部署)
二、Linux 常见的链路聚合模式(Bonding Mode)
mode=0 (balance-rr)轮询负载均衡
mode=1 (active-backup)主备冗余
mode=2 (balance-xor)按MAC/XOR哈希负载
mode=3 (broadcast)广播发送
mode=4 (802.3ad / LACP)动态链路聚合推荐
mode=5 (balance-tlb)传输负载均衡
mode=6 (balance-alb)双向负载均衡
三、怎么选模式?
四、 网络连接设置nmtui/nmcli
五、聚合连接的含义和作用
前言
在 Linux 中做“网卡链路聚合”(bonding / teaming)主要是为了 提高网络的可用性和带宽利用率,通过把多块物理网卡绑定为一个逻辑网卡(如 bond0
或 team0
)。它的应用场景非常多:服务器、虚拟化、存储、负载均衡、高可用集群等。
一、链路聚合的意义(为什么要做)
① 提升带宽(带宽叠加)
把多块网卡合成为一个“逻辑接口”,例如两块1Gbps 可以组成 2Gbps 的总体吞吐(取决于模式和交换机支持)。
② 保障高可用(故障自动切换)
如果其中一块网卡/线路坏了,业务不中断,自动切换到其他网卡。
③ 负载均衡(流量分担)
连接多个客户端时,系统会自动把流量分配到不同网卡,提高效率。
④ 避免单点故障(高可靠部署)
关键服务(数据库服务器、虚拟化主机、NFS、集群)都离不开它。
二、Linux 常见的链路聚合模式(Bonding Mode)
Linux bonding 共有 7 种模式,最常用的是模式 0、1、4、6。
mode=0 (balance-rr)轮询负载均衡
-
特点:流量轮询分到多块网卡,能真正实现带宽叠加
-
优点:提升带宽、负载均衡
-
要求:交换机必须配置端口聚合(如 LACP 或静态聚合)
-
适用:内网服务器、大流量业务
mode=1 (active-backup)主备冗余
-
特点:只有一块网卡工作,另外为备用
-
优点:容错能力强,配置简单
-
要求:交换机无需特殊配置
-
适用:高可用服务器、数据库、管理网
mode=2 (balance-xor)按MAC/XOR哈希负载
-
特点:流量按 hash 分配
-
优点:支持负载均衡+冗余
-
要求:交换机绑定端口
-
适用:多客户端访问服务器
mode=3 (broadcast)广播发送
-
特点:所有数据广播到所有网口
-
优点:冗余最高
-
缺点:极耗资源
-
适用:非常特殊环境(集群心跳)
mode=4 (802.3ad / LACP)动态链路聚合推荐
-
特点:使用 LACP 协议自动协商
-
优点:带宽叠加 + 负载均衡 + 高可用
-
要求:交换机开启 LACP
-
适用:
-
虚拟化平台
-
文件服务器
-
机房生产环境
-
mode=5 (balance-tlb)传输负载均衡
-
特点:只在发送方向做负载均衡
-
优点:交换机无需配置
-
适用:小型网络环境
mode=6 (balance-alb)双向负载均衡
-
特点:发送+接收都能负载均衡
-
优点:无需交换机支持
-
适用:Linux直连、办公环境
三、怎么选模式?
场景 | 推荐模式 | 交换机是否配置 |
---|---|---|
简单高可用 | mode=1 | 否 |
大带宽 + 集群 | mode=4 | ✅ LACP |
不改交换机 | mode=6 / mode=5 | 否 |
内网全速传输 | mode=0 / mode=4 | ✅ |
特殊广播需求 | mode=3 | 否 |
四、 网络连接设置nmtui/nmcli
系统服务NetworkManager,默认开机自启动
网络接口(Device、Interface):内核自动识别的网卡的名字,比如eth0、eth1、……
网络连接(Connection):管理员为网卡提供的配置的名字,比如link1、link2、……
每一个网络接口可以存在多份网络连接(配置),同一时间只允许其中的一份配置生效
每一份网络连接配置,允许设置多份IP地址(分别属于不同网段的IPv4或IPv6地址)
/etc/sysconfig/network-scripts/ifcfg-接口名
通过nmtui/nmcli可以管理网络连接的配置内容
nmcli device status //列出网卡设备信息
nmcli device disconnect 网卡名 //禁用网卡设备
nmcli device connect 网卡名 //激活网卡设备
nmcli connection show //列出所有的网络连接
nmcli connection show "连接名" //列出xx网络连接的配置内容
nmcli connection add con-name "连接名" ifname 网卡名 type ethernet //添加一个有线网卡的连接
nmcli connection modify "连接名" xxx参数 值 .. .. //修改xx网络连接的配置内容
常见的地址参数:
ipv4.addresses IP地址/掩码位数 ipv4.gateway 默认网关地址 ipv4.dns DNS服务器地址
ipv4.method auto|manual //获取地址方式(自动|手动)
connection.autoconnect yes|no //自动激活(是|否)
nmcli connection up "连接名"
nmcli connection down "连接名"
nmcli connection delete "连接名"
查看网络地址相关信息:
ifconfig [接口名]
ip add list [接口名]
ip -6 add list [接口名] //只查看IPv6地址信息
cat /etc/resolv.conf //查看当前使用的DNS服务器地址
route -n
ip route
ip -6 route //查看IPv6路由表
ping IPv4地址
ping6 IPv6地址
五、聚合连接的含义和作用
捆绑多个网络接口,作为一个整体对外提供一份IP地址
主要用于两个目的:提供负载均衡(roundroubin)、提供热备份(activebakcup)
配置聚合连接的要点
1)创建名为team0聚合连接主连接
[root@servera ~]# nmcli connection add con-name team0 ifname team0 type team team.runner roundrobin
2)添加两个成员
[root@servera ~]# nmcli connection add con-name t0p1 ifname eth1 type team-slave master team0
[root@servera ~]# nmcli connection add con-name t0p2 ifname eth2 type team-slave master team0
3)为主连接team0配置IP地址
[root@servera ~]# nmcli connection modify team0 ipv4.method manual ipv4.addresses 10.0.0.10/24
4)激活聚合连接
[root@servera ~]# nmcli connection up team0 //激活主连接
[root@servera ~]# nmcli connection up t0p1 //激活成员连接
[root@servera ~]# nmcli connection up t0p2 //激活成员连接
更改聚合类型:
[root@servera ~]# nmcli connection modify team0 team.runner activebackup
测试聚合连接:
[root@servera ~]# ifconfig 聚合连接名
[root@servera ~]# teamdctl 聚合连接名 state
[root@servera ~]# ping 目标IP地址 //查看ping检测结果
[root@servera ~]# tcpdump -i 网卡名 icmp //抓包分析