CentOS 7 双网卡绑定热备 —— 筑梦之路

为什么需要?

  1. 增强网络的可靠性

  2. 保障服务的可持续性

  3. 降低网卡故障带来的不良影响

有哪些模式?

bash 复制代码
模式0:轮询策略(round robin),mode=0,
  优点:流量提高一倍
  缺点:需要接入交换机做端口聚合,否则可能无法使用
  特点:增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上

模式1:主备策略(active-backup),mode=1,
  只有主网卡处于工作状态,备网卡处于备用状态,主网卡坏掉后备网卡开始工作,提供容错能力。
  优点:冗余性高
  缺点:链路利用率低,两块网卡只有1块在工作
  不需要交换机端支持

模式2:异或策略(load balancing (xor)),mode=2
  根据源MAC地址和目的MAC地址进行异或计算的结果来选择传输设备,提供负载均衡和容错能力。
  需要交换机配置聚合口

模式3:广播策略(fault-tolerance (broadcast)),mode=3
  将所有数据包传输给所有接口通过全部设备来传输所有数据,一个报文会复制两份通过bond下的两个网卡分别发送出去,提供高容错能力。
  需要交换机配置聚合口

模式4:动态链接聚合(lacp),mode=4,按照802.3ad协议的聚合自动配置来共享相同的传输速度,网卡带宽最高可以翻倍,链路聚合控制协议(LACP)自动通知交换机聚合哪些端口,需要交换机支持 802.3ad协议,提供容错能力。

模式5:输出负载均衡模式(transmit load balancing),mode=5,输出负载均衡模式,只有输出实现负载均衡,输入数据时则只选定其中一块网卡接收,需要网卡和驱动支持ethtool命令。

模式6:输入/输出负载均衡模式(adaptive load balancing),mode=6,输入和输出都实现负载均衡,需要网卡和驱动支持ethtool命令。
  mode5和mode6不需要交换机端的设置,网卡能自动聚合。mode4需要支持802.3ad。mode0,mode2和mode3理论上需要静态聚合方式。

实践示例

1. 关闭NetworkManager

cpp 复制代码
关闭NetworkManager(否则重启网卡时报错)

systemctl disable NetworkManager  --now

服务解释:
NetworkManager服务是Linux系统中的一个网络管理服务,它负责管理网络连接、配置和设备。
NetworkManager提供了一个集中式的方式来管理和配置系统中的网络连接,可以自动检测和配置网络设备,包括有线和无线网络。它可以管理多种网络连接类型,如以太网、Wi-Fi、蓝牙、VPN和移动宽带等。它还支持网络连接的自动切换和优先级管理,以确保系统始终使用最佳的可用网络连接。
通过NetworkManager服务,用户可以通过命令行、图形界面或API来管理网络连接。它提供了一组工具和接口,使用户能够查看和修改网络设置,包括IP地址、DNS服务器、代理设置等。
NetworkManager还支持网络连接的自动配置和自动连接功能,可以根据网络环境和设备状态来自动选择最佳的网络连接。它还提供了一些安全功能,如连接的密钥管理和认证。

2. 备份配置

bash 复制代码
cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens33bak

cp ifcfg-ens36 ifcfg-ens36bak

3. 新建虚拟网卡配置文件

bash 复制代码
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 << EOF
TYPE=Ethernet
BOOTPROTO=static
NAME=bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.1.120
NETMASK=255.255.255.0
GATEWAY=192.168.1.2
DNS1=114.114.114.114
EOF

4. 修改ens33和ens36的配置

bash 复制代码
# 修改ens33

vim  /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

# 修改ens36

vim  /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=none
NAME=ens36
DEVICE=ens36
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

5. 在/etc/modprobed.d/中创建bonding.conf

bash 复制代码
vim /etc/modprobe.d/bonding.conf

#添加一下内容
alias bond0 bonding
options bond0 miimon=100 mode=1 fail_over_mac=1

6. 指定俩网卡在主备模式下的工作顺序

bash 复制代码
# 添加启动项
echo "ifenslave bond0 ens33 ens34" >> /etc/rc.d/rc.local

# 添加执行权限
chmod +x /etc/rc.d/rc.local

7. 重启网卡服务

bash 复制代码
systemctl restart network

注:
如果ens33和ens36没有重启成功就将他俩单独重启
ifdown ens33;ifup ens33
ifdown ens36;ifup ens36

8. 测试验证

bash 复制代码
ping 192.168.1.120

断开 ens33
恢复 ens33
断开 ens36
把ens33和ens36都断开
相关推荐
爱奥尼欧4 分钟前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
超喜欢下雨天32 分钟前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
搬码临时工38 分钟前
小企业如何搭建本地私有云服务器,并设置内部网络地址提供互联网访问
运维·服务器
tan77º1 小时前
【Linux网络编程】网络基础
linux·服务器·网络
18你磊哥2 小时前
Windows 本地安装部署 Apache Druid
运维·debian
笑衬人心。2 小时前
Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
linux·mysql·ubuntu
IT成长日记2 小时前
【Docker基础】Docker数据卷管理:docker volume inspect及其参数详解
运维·docker·容器·volume·inspect
ldj20202 小时前
Jenkins 构建过程常见错误
运维·jenkins
ladymorgana3 小时前
【Docker】如何设置 `wiredTigerCacheSizeGB` 和 `resources.limits.memory`
运维·docker·容器
chanalbert4 小时前
CentOS系统新手指导手册
linux·运维·centos