网络聚合链路与软件网桥配置指南
网络聚合链路与软件网桥配置指南
一、聚合链路(Team)
网络组队(聚合链路)是一种将多个网络接口控制器(NIC,Network Interface Controller)以逻辑方式组合在一起的技术,通过这种方式可以实现故障转移或提升网络吞吐量。相比传统方式,组队具有更好的性能和可扩展性,其模块化设计也使其更易于扩展。
二、teamd支持的聚合模式
teamd是实现聚合链路的工具,支持以下几种常见模式:
- roundrobin(轮询模式):以轮询方式在所有端口传输数据包,均衡利用各接口带宽。
- activebackup(主备模式):属于故障迁移模式,会监控链路状态变化,仅选择活动端口进行数据传输,当主端口故障时自动切换到备用端口。
- loadbalance(负载均衡模式):通过监控网络流量,使用哈希函数选择传输端口,以实现流量的均衡分配。
- broadcast(广播模式):具备容错能力,设备会通过所有端口广播传输数据包。
三、聚合链路配置(以activebackup主备模式为例)
Server1配置步骤:
#添加网卡后需要网络连接的配置文件
[root@zhangyiwei3 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet ens33
virbr0 4ab2a230-02bf-4d02-9ede-a083c3085a3e bridge virbr0
有线连接 1 3fd45fe7-dfb5-328a-a8d9-edc356ee0574 ethernet ens36
有线连接 2 44d47fa4-02f8-300c-9c96-870f2bd0fdc5 ethernet ens37
[root@zhangyiwei3 ~]# nmcli connection delete "有线连接 1"
成功删除连接 '有线连接 1'(3fd45fe7-dfb5-328a-a8d9-edc356ee0574)。
[root@zhangyiwei3 ~]# nmcli connection delete "有线连接 2"
成功删除连接 '有线连接 2'(44d47fa4-02f8-300c-9c96-870f2bd0fdc5)。
-
创建组接口
[root@zhangyiwei3 ~]# nmcli connection add con-name team0 ifname team0 type team config '{"runner": {"name": "activebackup"}}' 连接“team0”(e01bbbf9-1ac1-40be-93dc-8781f18e2923) 已成功添加。
con-name team0
:指定连接名称为team0ifname team0
:指定接口名称为team0
type team
:设置连接类型为teamconfig
:指定聚合模式为activebackup
- 为组接口配置静态IP
[root@zhangyiwei3 ~]# nmcli connection modify team0 ipv4.addresses 192.168.200.30/24 ipv4.method manual connection.autoconnect yes
ipv4.addresses
:设置IP地址为192.168.0.1/24ipv4.method manual
:启用手动配置IP
connection.autoconnect yes
:设置开机自动连接
-
添加端口接口到组接口
将ens36、ens37网络接口加入team0组:[root@zhangyiwei3 ~]# nmcli connection add con-name team0-ens36 ifname ens36 type team-slave master team0 连接“team0-ens36”(fc0093bb-763b-4bd4-8234-ef2cedf9c278) 已成功添加。 [root@zhangyiwei3 ~]# nmcli connection add con-name team0-ens37 ifname ens37 type team-slave master team0 连接“team0-ens37”(034e9e55-6137-4401-ad08-fcee00d5eb13) 已成功添加。
- `type team-slave`:指定为组接口的从设备 - `master team0`:指定所属的主组接口为team0 4. **激活组接口** ```bash[root@zhangyiwei3 ~]# nmcli connection up team0Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/47)
-
重启网络服务(建议)
[root@zhangyiwei3 ~]# systemctl restart network
-
查看组队状态
[root@zhangyiwei3 ~]# teamdctl team0 state setup:runner: activebackup ports:ens36link watches:link summary: upinstance[link_watch_0]:name: ethtoollink: updown count: 0ens37link watches:link summary: upinstance[link_watch_0]:name: ethtoollink: updown count: 0 runner:active port: ens36
该命令可显示team0的当前状态,包括活动端口、备用端口等信息。
Server2配置步骤:
配置步骤与Server1相同,仅需将team0的IP地址修改为192.168.0.2/24:
[root@zhangyiwei-2 ~]# nmcli connection modify team0 ipv4.addresses 192.168.200.20/24 ipv4.method manual connection.autoconnect yes
测试连通性
在Server1上ping Server2的team0接口IP,验证是否连通:
[root@zhangyiwei3 ~]# ping 192.168.200.20
PING 192.168.200.20 (192.168.200.20) 56(84) bytes of data.
64 bytes from 192.168.200.20: icmp_seq=1 ttl=64 time=0.521 ms
64 bytes from 192.168.200.20: icmp_seq=2 ttl=64 time=0.326 ms
64 bytes from 192.168.200.20: icmp_seq=3 ttl=64 time=0.453 ms
64 bytes from 192.168.200.20: icmp_seq=4 ttl=64 time=0.362 ms
^C
--- 192.168.200.20 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.326/0.415/0.521/0.079 ms
[root@zhangyiwei3 ~]# xxxxxxxxxx [root@zhangyiwei3 ~]# ping 192.168.200.20PING 192.168.200.20 (192.168.200.20) 56(84) bytes of data.64 bytes from 192.168.200.20: icmp_seq=1 ttl=64 time=0.521 ms64 bytes from 192.168.200.20: icmp_seq=2 ttl=64 time=0.326 ms64 bytes from 192.168.200.20: icmp_seq=3 ttl=64 time=0.453 ms64 bytes from 192.168.200.20: icmp_seq=4 ttl=64 time=0.362 ms^C--- 192.168.200.20 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 2999msrtt min/avg/max/mdev = 0.326/0.415/0.521/0.079 ms[root@zhangyiwei3 ~]# ping 192.168.0.2bash
四、软件网桥
网桥是工作在链路层的设备,通过MAC地址在网络中转发流量。它会学习主机的MAC地址并构建MAC地址表(转发表),然后根据表中信息决定数据包的转发端口。在Linux环境中,可通过软件网桥仿真硬件网桥,其最常见的应用是在虚拟化场景中,用于让多个虚拟NIC共享一个物理NIC。
软件网桥功能:
- MAC学习:通过监听接收和发送的数据包,记录每个MAC地址对应的接入端口,逐步构建地址-端口对照表(转发表)。
- 报文转发:当收到数据包时,提取目的MAC地址,查询转发表以确定转发端口,然后将数据包从对应端口发送出去。
软件网桥配置步骤:
-
创建软件网桥
[root@zhangyiwei-2 ~]# nmcli connection add con-name bridge0 ifname bridge0 type bridge 连接“bridge0”(f3badf92-da37-4069-9a0e-74a8e4494a88) 已成功添加。
con-name bridge0
:连接名称为bridge0
ifname bridge0
:接口名称为bridge0type bridge
:连接类型为网桥
-
配置网桥静态IP(可选)
nmcli connection modify bridge0 ipv4.addresses 192.168.200.1/24 ipv4.method manual connection.autoconnect yes
-
添加网络接口到网桥
将ens38、ens39 接口连接至bridge0:[root@zhangyiwei3 ~]# nmcli connection add con-name bridge0-ens38 ifname ens38 type bridge-slave master bridge0 连接“bridge0-ens38”(747a1837-21e8-4e68-bf32-8a0ce9db49ee) 已成功添加。 [root@zhangyiwei3 ~]# nmcli connection add con-name bridge0-ens39 ifname ens39 type bridge-slave master bridge0 连接“bridge0-ens39”(f6a36769-995f-4e13-a131-f8e22b160f73) 已成功添加。
- `type bridge-slave`:指定为网桥的从设备 - `master bridge0`:指定所属网桥为bridge0 4. **激活网桥** ```bash[root@zhangyiwei3 ~]# nmcli connection up bridge0Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/15)
-
重启网络服务(建议)
[root@zhangyiwei3 ~]# systemctl restart network
-
启用IP转发(如需实现路由功能)
编辑/etc/sysctl.conf
文件,添加IP转发配置:
vim /etc/sysctl.conf加入以下内容:
[root@zhangyiwei3 ~]# vim /etc/sysctl.conf
加入以下内容:
net.ipv4.ip_forward = 1
使配置生效:
```bash
[root@zhangyiwei3 ~]# sysctl -p
测试
可通过brctl show
命令查看网桥状态,或通过ping命令测试网桥连接的设备之间的连通性。
在server2 ping 软件网桥的IP地址:
[root@zhangyiwei-2 ~]# ping 192.168.200.1
PING 192.168.200.1 (192.168.200.1) 56(84) bytes of data.
64 bytes from 192.168.200.1: icmp_seq=1 ttl=64 time=0.043 ms
64 bytes from 192.168.200.1: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from 192.168.200.1: icmp_seq=3 ttl=64 time=0.055 ms
64 bytes from 192.168.200.1: icmp_seq=4 ttl=64 time=0.044 ms
^C
--- 192.168.200.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.043/0.047/0.055/0.009 ms
[root@zhangyiwei-2 ~]#