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都断开
相关推荐
C++忠实粉丝25 分钟前
Linux环境基础开发工具使用(2)
linux·运维·服务器
康熙38bdc1 小时前
Linux 环境变量
linux·运维·服务器
存储服务专家StorageExpert1 小时前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
hakesashou2 小时前
python如何比较字符串
linux·开发语言·python
Ljubim.te2 小时前
Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】
linux·学习·centos
cooldream20092 小时前
Linux性能调优技巧
linux
大G哥2 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
醉颜凉2 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统
QMCY_jason3 小时前
Ubuntu 安装RUST
linux·ubuntu·rust
慕雪华年3 小时前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch