Linux 配置双网卡绑定,实现负载均衡

1、Bond的工作模式

Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。

bonding一共有7种工作模式(mode):

1)、bond=0,(balance-rr) Round-robin policy: (平衡轮询策略):传输数据包顺序是依次传输,直到最后一个传输完毕,此模式提供负载平衡和容错能力。

2)、bond=1,(active-backup) Active-backup policy:(活动备份策略):只有一个设备处于活动状态。一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。此模式提供了容错能力。

3)、bond=2,(balance-xor) XOR policy:(平衡策略):传输根据[(源MAC地址xor目标MAC地址)mod设备数量]的布尔值选择传输设备。 此模式提供负载平衡和容错能力。

4)、bond=3,(broadcast) Broadcast policy:(广播策略):将所有数据包传输给所有设备。此模式提供了容错能力。

5)、bond=4,(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 动态链接聚合:创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。

6)、bond=5,(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡):通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设 备传不通就用另一个设备接管当前设备正在处理的mac地址。

7)、bond=6,(balance-alb) Adaptive load balancing: (适配器负载均衡):包括mode5,由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。

2、配置步骤

以下步骤为Ubuntu系统,配置bond=6的双网卡绑定步骤,其他模式的方法一样;

2.1、安装ifenslave软件

fenslave为一种粘合和分离式的软件,可以将数据包有效的分配到bonding驱动

sudo apt install ifenslave

2.2、/etc/modules文件

在/etc/modules文件中加入以下配置

bonding mode=6 miimon=100

mode=6 表示采用模式1;

miimon是用来进行链路监测的。比如miimon=100,表示系统每100ms监测一次链路连接状态,如果有一条线路不通就切换另一条线路。

2.3、修改/etc/network/interfaces文件配置

首先需要确定网卡接口的名称,可以通过ifconfig命令查看,当前是网卡接口分别是ens33和ens34;在/etc/network/interfaces文件增加如下配置

# 双网卡配置

auto ens33

iface ens33 inet manual

bond-master bond0

auto ens34

iface ens34 inet manual

bond-master bond0

auto bond0

iface bond0 inet static

address 192.168.20.10

netmask 255.255.255.0

gateway 192.168.20.2

dns-nameservers 192.168.20.1 119.29.29.29

bond-slaves ens33 ens34

bond-lacp-rate 1

bond-mode 6

bond-miimon 100

2.4、加载binding模块

#  载入模块

$ sudo modprobe bonding

# 查看模块,如果模块已经加载,显示出来

$ sudo lsmod|grep bonding

bonding              163840  0

2.5、查看状态

•查看网络配置

$ ifconfig

bond0    Link encap:以太网  硬件地址 00:0c:29:34:7a:4a

inet 地址:192.168.20.10  广播:192.168.20.255  掩码:255.255.255.0

inet6 地址: fe80::20c:29ff:fe34:7a4a/64 Scope:Link

UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  跃点数:1

接收数据包:964 错误:0 丢弃:0 过载:0 帧数:0

发送数据包:4205 错误:0 丢弃:0 过载:0 载波:0

碰撞:0 发送队列长度:1000

接收字节:75022 (75.0 KB)  发送字节:300032 (300.0 KB)

ens33    Link encap:以太网  硬件地址 00:0c:29:34:7a:4a

UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  跃点数:1

接收数据包:2740 错误:0 丢弃:0 过载:0 帧数:0

发送数据包:3416 错误:0 丢弃:0 过载:0 载波:0

碰撞:0 发送队列长度:1000

接收字节:3899473 (3.8 MB)  发送字节:278409 (278.4 KB)

ens34    Link encap:以太网  硬件地址 00:0c:29:34:7a:54

UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  跃点数:1

接收数据包:1369 错误:0 丢弃:0 过载:0 帧数:0

发送数据包:2125 错误:0 丢弃:0 过载:0 载波:0

碰撞:0 发送队列长度:1000

接收字节:106846 (106.8 KB)  发送字节:139061 (139.0 KB)

•查看binding状态

$ cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: adaptive load balancing

Primary Slave: None

Currently Active Slave: ens33

MII Status: up

MII Polling Interval (ms): 100

Up Delay (ms): 0

Down Delay (ms): 0

Slave Interface: ens33

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:34:7a:4a

Slave queue ID: 0

Slave Interface: ens34

MII Status: up

Speed: 1000 Mbps

Duplex: full

Link Failure Count: 0

Permanent HW addr: 00:0c:29:34:7a:54

Slave queue ID: 0

2.6、验证测试

•物理上关闭一个网卡(拔网线)

# 关闭前,速率是2000Mb/s

$ ethtool bond0

Settings for bond0:

Supported ports: [ ]

Supported link modes:  Not reported

Supported pause frame use: No

Supports auto-negotiation: No

Advertised link modes:  Not reported

Advertised pause frame use: No

Advertised auto-negotiation: No

Speed: 2000Mb/s

Duplex: Full

Port: Other

PHYAD: 0

Transceiver: internal

Auto-negotiation: off

Cannot get wake-on-lan settings: Operation not permitted

Link detected: yes

# 关闭后,速率速率变成1000Mb/s

$ ethtool bond0

Settings for bond0:

Supported ports: [ ]

Supported link modes:  Not reported

Supported pause frame use: No

Supports auto-negotiation: No

Advertised link modes:  Not reported

Advertised pause frame use: No

Advertised auto-negotiation: No

Speed: 1000Mb/s

Duplex: Full

Port: Other

PHYAD: 0

Transceiver: internal

Auto-negotiation: off

Cannot get wake-on-lan settings: Operation not permitted

Link detected: yes

注意:不可以使用ifdown 关闭网卡,会导致网络中断

3、总结

Linux bonding一共有7种工作模式(mode),如果是想要加大网卡的吞吐量,通常会使用mode=6的模式,如果是注重网络的稳定,通常会使用mode=1的模式;

linux 网卡绑定updelay,Linux 配置双网卡绑定实现负载均衡相关推荐

  1. 【Linux系列】Hyper-V 虚拟机配置双网卡,内网固定ip,外网dhcp

    Hyper-V虚拟机设置 虚拟机设置外网虚拟交换机 虚拟机设置内网虚拟交换机 注意:nat为Hyper虚拟机默认交换机,无需更改 本地网络适配器配置 外网 内网 centos7 设置 cd /etc/ ...

  2. Linux配置双网卡--静态路由

    Linux配置双网卡--静态路由 1.服务器双网卡配置要点 1.服务器双网卡配置要点 举例说明:网卡eth0,网卡eth1加静态路由 实现双网卡配置 .需求:10.179.50.1需要访问此服务器①. ...

  3. ubuntu16.04 配置双网卡机器

    本文介绍一台具有双有线网卡的机器在Linux下如何配置双网卡 系统平台:Ubuntu16.04 1:查看机器网卡信息,是否双网卡都能正确被机器pci识别 可以通过以下命令查看设备网卡,若果看到两条网卡 ...

  4. windows配置双网卡 windows同时使用内网和外网

    之前写过关于mac配置双网卡的博客,这里再介绍一下windows配置双网卡的流程,同时访问内外网的本质可参考之前文章: mac配置双网卡 配置步骤 先将电脑连上内外网 1. 打开命令提示符对话框 2. ...

  5. Windows配置双网卡

    双网卡的电脑工作原理 :双网卡就是一台电脑(一般是台式机)安装两块网卡,然后另一台机器(一般是笔记本)通过此台电脑共享上网:或者搭建内部路由环境,实际工作中,我是用来搭建内部网络. 首先是USB一端插 ...

  6. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  7. 【Nginx那些事】nginx配置实例(二)负载均衡

    [Nginx那些事]系列 [Nginx那些事]nginx 安装及常用指令 [Nginx那些事]Nginx 配置文件说明 [Nginx那些事]nginx原理解析 [Nginx那些事]nginx配置实例( ...

  8. nginx+双tomcat集群负载均衡(一台机器)

    nginx简介 Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor ...

  9. 9、配置链路聚合技术和负载均衡技术

    1.相关知识 什么是骨干网络的链路聚合技术 在许多交换机或交换机设备组成的网络环境中,通常都使用一些备份连接,以提高网络的健全性.稳定性.这种备份连接也叫备份链路.冗余链路等 以太网组织委员会制定的链 ...

最新文章

  1. 诺贝尔物理学奖得主Arthur Ashkin去世,他发明了“激光镊子”,曾抱怨被诺奖遗忘...
  2. Android编译32或64位程序
  3. Qt Creator预览版
  4. 红帽子linux安装ftp,Linux 安装 vsftpd ftp软件包
  5. js 取得input绑定的datalist中的值_javascript基础修炼(9)——MVVM中双向数据绑定的基本原理...
  6. shell下利用运算方式编写倒计时脚本
  7. 学生信息管理系统(JAVA+MYSQL)
  8. Servlet工作原理
  9. workbench动力学周炬_ANSYS Workbench有限元分析实例详解 动力学 周炬 苏金英 ANSYS Workbench动力学数值模拟模态分析教程 有限元理论和工程实践书...
  10. JavaWeb-JSON
  11. Graph Neural Controlled Differential Equations for Traffic Forecasting(AAAI2022)
  12. TCP状态转换图文解说
  13. c# 数字转大写中文
  14. Xshell6下载及安装
  15. 滑动窗口与双指针的区别
  16. 大学C语言字符串题目,[转载]大学C语言考试题精选
  17. android7 强制gpu渲染,安卓手机开启强制GPU渲染功能的方法
  18. 【总目录4】C/C++、OpenCV、Qt、单片机总结大全
  19. mysql 给用户取消权限_MySQL创建用户并授权及撤销用户权限
  20. HTML_超级链接详细讲解

热门文章

  1. 上传文件页面回显_数据回显、删除以及excel导出
  2. waitpid最后以一个参数设为0_西门子MM440变频器参数设置
  3. 【Linux部署】借助Docker部署Redis集群(Docker网卡创建+6个Redis集群搭建shell脚本)
  4. 将Sql数据库中的表导出到指定文件
  5. linux 虚拟机大量udp请求失败_理解 Linux 网络栈:Linux 网络协议栈简单总结分析...
  6. 嵌入式Servlet容器
  7. 牛客题霸 NC9 二叉树中是否存在节点和为指定值的路径
  8. Spring Boot——游戏成就系统设计DEMO
  9. 2017c语言预测,2017计算机二级C语言上机最终预测题
  10. java 画图板源代码_非常值得学习的java 绘图板源代码