首页 > 其他分享 >liunx双网卡负载均衡

liunx双网卡负载均衡

时间:2024-01-18 17:35:26浏览次数:16  
标签:负载 bond0 网卡 bonding mode NetworkManager yes 双网卡 liunx

一、bonding技术

bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载等功能,有很多优势。

bonding技术是linux系统内核层面实现的,它是一个内核模块(驱动)。使用它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信息, 一般来说都支持.

bonding的七种工作模式: 

bonding技术提供了七种工作模式,在使用的时候需要指定一种,每种有各自的优缺点.

  1. balance-rr (mode=0)       默认, 有高可用 (容错) 和负载均衡的功能,  需要交换机的配置,每块网卡轮询发包 (流量分发比较均衡).
  2. active-backup (mode=1)  只有高可用 (容错) 功能, 不需要交换机配置, 这种模式只有一块网卡工作, 对外只有一个mac地址。缺点是端口利用率比较低
  3. balance-xor (mode=2)     不常用
  4. broadcast (mode=3)        不常用
  5. 802.3ad (mode=4)          IEEE 802.3ad 动态链路聚合,需要交换机配置,没用过
  6. balance-tlb (mode=5)      不常用
  7. balance-alb (mode=6)     有高可用 ( 容错 )和负载均衡的功能,不需要交换机配置  (流量分发到每个接口不是特别均衡)

具体的网上有很多资料,了解每种模式的特点根据自己的选择就行, 一般会用到0、1、4、6这几种模式。

二、Centos7配置bonding

环境:

系统: Centos7.9
网卡: ifcfg-eno192、ifcfg-eno224
bond0:10.162.97.41
负载模式: mode4(802.3ad 动态链路聚合)

服务器上两张物理网卡em1和em2, 通过绑定成一个逻辑网卡bond0,bonding模式选择mode6

注: ip地址配置在bond0上, 物理网卡不需要配置ip地址.

 

2、加载bonding模块

modprobe --first-time bonding

 

没有提示说明加载成功, 如果出现modprobe: ERROR: could not insert 'bonding': Module already in kernel说明你已经加载了这个模块, 就不用管了

你也可以使用lsmod | grep bonding查看模块是否被加载

 

lsmod | grep bonding
bonding               136705  0 

 

3、创建基于bond0接口的配置文件

vim /etc/sysconfig/network-scripts/ifcfg-bond0

  修改成如下,根据你的情况:

DEVICE=bond0
TYPE=Bond
IPADDR=172.16.0.183
NETMASK=255.255.255.0
GATEWAY=172.16.0.1
DNS1=114.114.114.114
USERCTL=no
BOOTPROTO=none
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="mode=6 miimon=100"

上面的BONDING_OPTS="mode=6 miimon=100" 表示这里配置的工作模式是mode6(adaptive load balancing), miimon表示监视网络链接的频度 (毫秒), 我们设置的是100毫秒, 根据你的需求也可以指定mode成其它的负载模式。

4、修改em1接口的配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens192
TYPE=Ethernet
PROXY_METHOD=none
dBROWSER_ONLY=no
BOOTPROTO=static
DEFROUT=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens192
UUID=29d2526a-2eec-4a5e-8190-3d1fe5e04f57
DEVICE=eno49.97
ONBOOT=yes
MASTER=bond0
SLAVE=yes
VLAN=yes  //此处配置VLAN,因为所处交换机端口为Trunk
TYPE=Vlan
VLAN_ID=97

 

 

YPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno50
UUID=dae63958-841f-4666-9308-28bda92dc66f
DEVICE=eno50.97
ONBOOT=yes
MASTER=bond0
SLAVE=yes
VLAN=yes
TYPE=Vlan
VLAN_ID=97

 

 

6、测试

重启网络服务

systemctl restart network

查看bond0的接口状态信息  ( 如果报错说明没做成功,很有可能是bond0接口没起来)

# cat /proc/net/bonding/bond0

Bonding Mode: adaptive load balancing   // 绑定模式: 当前是ald模式(mode 6), 也就是高可用和负载均衡模式
Primary Slave: None
Currently Active Slave: em1
MII Status: up                           // 接口状态: up(MII是Media Independent Interface简称, 接口的意思)
MII Polling Interval (ms): 100           // 接口轮询的时间隔(这里是100ms)
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: em1                     // 备接口: em0
MII Status: up                           // 接口状态: up(MII是Media Independent Interface简称, 接口的意思)
Speed: 1000 Mbps                         // 端口的速率是1000 Mpbs
Duplex: full                             // 全双工
Link Failure Count: 0                    // 链接失败次数: 0 
Permanent HW addr: 84:2b:2b:6a:76:d4      // 永久的MAC地址
Slave queue ID: 0

Slave Interface: em1                     // 备接口: em1
MII Status: up                           // 接口状态: up(MII是Media Independent Interface简称, 接口的意思)
Speed: 1000 Mbps
Duplex: full                             // 全双工
Link Failure Count: 0                    // 链接失败次数: 0
Permanent HW addr: 84:2b:2b:6a:76:d5     // 永久的MAC地址
Slave queue ID: 0

通过ifconfig -a  命令查看下网络的接口信息


# ifconfig


bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 172.16.0.183 netmask 255.255.255.0 broadcast 172.16.0.255
inet6 fe80::862b:2bff:fe6a:76d4 prefixlen 64 scopeid 0x20<link>
ether 84:2b:2b:6a:76:d4 txqueuelen 0 (Ethernet)
RX packets 11183 bytes 1050708 (1.0 MiB)
RX errors 0 dropped 5152 overruns 0 frame 0
TX packets 5329 bytes 452979 (442.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


em1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 84:2b:2b:6a:76:d4 txqueuelen 1000 (Ethernet)
RX packets 3505 bytes 335210 (327.3 KiB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 2852 bytes 259910 (253.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


em2: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 84:2b:2b:6a:76:d5 txqueuelen 1000 (Ethernet)
RX packets 5356 bytes 495583 (483.9 KiB)
RX errors 0 dropped 4390 overruns 0 frame 0
TX packets 1546 bytes 110385 (107.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 17 bytes 2196 (2.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17 bytes 2196 (2.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

 

 

测试网络高可用, 我们拔掉其中一根网线进行测试, 结论是:

  • 在本次mode=6模式下丢包1个, 恢复网络时( 网络插回去 ) 丢包在5-6个左右,说明高可用功能正常但恢复的时候丢包会比较多
  • 测试mode=1模式下丢包1个,恢复网络时( 网线插回去 ) 基本上没有丢包,说明高可用功能和恢复的时候都正常
  • mode6这种负载模式除了故障恢复的时候有丢包之外其它都挺好的,如果能够忽略这点的话可以这种模式;而mode1故障的切换和恢复都很快,基本没丢包和延时。但端口利用率比较低,因为这种主备的模式只有一张网卡在工作.
使用 NetworkManager 进行网络配置

安装 NetworkManager 相关软件包。
  yum install NetworkManager
  yum install NetworkManager-gnome (如果需要图形界面)

启用 NetworkManager 服务。 

systemctl enable NetworkManager
systemctl start NetworkManager

关闭和停止NetworkManager服务

systemctl stop NetworkManager.service     # 停止NetworkManager服务
systemctl disable NetworkManager.service  # 禁止开机启动NetworkManager服务

  重启网络服务

 systemctl restart network

 

# 激活bond6网络设备
nmcli connection up "bond6"
# 激活ens33网络设备
nmcli connection up "bond-slave-ens33"
# 激活ens34网络设备
nmcli connection up "bond-slave-ens33"

 

标签:负载,bond0,网卡,bonding,mode,NetworkManager,yes,双网卡,liunx
From: https://www.cnblogs.com/niewd/p/17972975

相关文章

  • 42 干货系列从零用Rust编写负载均衡及代理,wmproxy中配置tcp转websocket
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/......
  • 41. 干货系列从零用Rust编写负载均衡及代理,websocket与tcp的映射,WS与TCP互转
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/......
  • k8s-负载均衡
    1.管理集群会变化的Pod资源:当发现某一个pod不能使用的时,RS会在其他机器上再创建一个相同的pod,及其对应的容器2.serivice资源对象文件service会创建一个clusterip,这个地址对应资源地址,且不会改变service会在多个服务上实现负载均衡的访问效果service通过port,nod......
  • 使用Local Persistent Volume 部署有状态工作负载
    本文分享自华为云社区《使用LocalPersistentVolume部署有状态工作负载》,作者:张俭。使用LocalPersistentVolume部署有状态工作负载本教程以部署DemoStatefulSet为例,指导您利用 LocalPersistentVolume (即本地持久卷)技术使用标准PVC对象访问本地磁盘。安装kubernete......
  • IIS实现负载均衡,通过ARR和URL重写
    目录一、实现整体方式介绍 二、配置负载均衡服务 三、把请求转发到负载均衡器 回到顶部一、实现整体方式介绍项目中部署在windows服务器上的项目,需要部署负载均衡,本来想用nginx来配置的,奈何iis上有几个项目,把80端口和443端口占用了,nginx就用不了了(因为通过域名访......
  • 负载均衡
    LVS、Nginx和HAProxy区别LVS优点:高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。抗负载能力强:是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。......
  • 5.k8s Service四层负载:服务端口暴露
    题目一:暴露服务service设置配置环境:[candidate@node-1]$kubectlconfiguse-contextk8sTask请重新配置现有的deploymentfront-end以及添加名为http的端口规范来公开现有容器nginx的端口80/tcp。创建一个名为front-end-svc的新service,以公开容器端口http。......
  • 11-K8 Service:轻松搞定服务发现和负载均衡 (copy)
    经过前面几节课的学习,我们已经可以发布高可用的业务了,通过PV持久化地保存数据,通过Deployment或Statefulset这类工作负载来管理多实例,从而保证服务的高可用。想一想,这个时候如果有别的应用来访问我们的服务的话,该怎么办呢?直接访问后端的PodIP吗?不,这里我们还需要做服务发现(S......
  • liunx命令word文档和excel表格转换成pdf
    1、 AnolisOS-8.x和centos7.x系统安装libreoffice#直接使用yum安装yuminstall-ylibreoffice#验证libreoffice--versionLibreOffice7.1.8.110(Build:1)#后台启动libreoffice服务nohuplibreoffice--headless--accept="socket,host=127.0.0.1,port=8100;urp;"--n......
  • Ribbon负载均衡(五)
    1负载均衡原理 1.1负载均衡流程 2负载均衡策略 负载均衡策略通过定义IRule实现可以修改负载均衡规则,有两种方式: 1.代码方式:在order-service中的OrderApplication类中,定义一个新的Rule:@BeanpublicIRulerandomRule(){returnnewRandomRule();}......