Linux系统如何配置链路聚合,实现流量负载均衡?

Linux系统如何配置链路聚合,实现流量负载均衡?,第1张

本文主要解决3个问题:

第一、链路聚合的定义和作用是什么?

第二、如何配置链路聚合?

第三、链路聚合的实际应用场景有那些?

第一、链路聚合的定义和作用是什么?

答:链路聚合的定义:链路聚合,官方称聚合链接,民间又称网卡组队,具体指的是将多个网卡绑定在一起组建一个虚拟网卡,外界与虚拟网卡进行通信,虚拟网卡再将信息进行分发;

链路聚合的作用:可以实现轮询式的流量负载均衡和热备份的作用;

举个栗子:

链路聚合就好比是一个包工头,这个包工头为了多赚钱,多接订单,肯定需要找多个小弟;

这样就可以保障,万一有一个小弟感冒了,不能上班,这时有其他小弟可以顶上;

当客户需要盖房子的时候,直接找包工头就好了,不需要一个一个的去找建筑工人;

第二、如何配置链路聚合?

答:

1、配置链路聚合的命令是:

nmcli connection add type team con-name team0 ifname team0 autoconnect  yes  config  '{"runner": {"name": "activebackup"}}'

译为:nmcli connection 添加 类型 team(组队)

    配置文件名  team0  网卡名  team0  每次开机自动启用

    配置运行模式  热备份模式

整体译为:为系统网卡添加一个 team (团队),团队名称叫 team0 ,配置文件也叫 team0 , 并且设置为开机自动启动,配置运行模式为热备份模式;

2、为链路聚合添加成员的命令是:

nmcli connection add type team-slave  con-name team0-1  ifname eth1 master team0

nmcli connection add type team-slave con-name team0-2 ifname eth2 master team0

注释:nmcli connection 添加类型为 team的成员

          配置文件名  team0-1  网卡为 eth1  主设备为  team0

整体译为:为主设备team0添加两张网卡,eth1和eth2;

3、为tem0配置ip地址的命令是:

nmcli connection modify team0 ipv4.method manual ipv4.addresses 

“IP 地址 / 子网掩码”    connection.autoconnect yes

4、激活team0的命令是:      

nmcli connection up team0

第三、链路聚合的实际应用场景有那些?

答:当服务器提供比较重要的服务时,只准备一张网卡是远远不够的,因为一但网卡出现故障,客户就无法访问,这就会造成客户流失,体验感差;

这个时候就可以运用链路聚合的方法来解决,将多张网卡绑定在一起创建一张虚拟网卡,从而实现网卡热备份,流量轮询式负载均衡;

以此来保障服务器能够正常提供服务,给用户以良好的体验;

注意事项:

在创建虚拟网卡和添加成员时,如果命令敲错了,一定要删除错误的信息,以免造成通信混乱;

删除的命令是:nmcli  connection delete team0  (team0或team x)

查看team0的信息命令是:     teamdctl   team0  state  

以上.......

(本篇完)

祝:开心!

罗贵

2019-03-24

将多个网卡端口绑定为一个,可以提升网络的性能。在linux系统上有两种技术可以实现,Linux 网络组和bond,通过绑定多个网卡作为一个逻辑网口并配置单个的IP地址,大幅提升服务器的网络吞吐。

目前发布各个Linux版本内核均已包含了此模块,大多数情况下不需要重新编译内核。 Linux 的 bonding 驱动提供了绑定/集成(bond)多个网卡为一个虚拟逻辑网口的功能。 一般来说绑定的网口(bonded)有多种工作模式,主要有热后备(hot standby) 和 负载均衡(load balancing).

1.创建bond0配置文件

vi /etc/sysconfig/network-scripts/ifcfg-bond0 添加配置参数

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"

USERCTL=no

ONBOOT=yes

MASTER=bond0

SLAVE=yes(设置从属关系)

BOOTPROTO=none

HWADDR=00:15:17:CC:FC:35

eth1的配置文件与之相同,只是device的值改为eth1即可。

编辑/etc/modprobe.conf或者/etc/modules.conf文件,加入如下内容,使系统启动时加载bonding模块驱动

alias bond0 bonding

option bond0 miimon=100 mode=1

说明:

1).miimon=100 用来进行链路监测的。即每100ms监测一次链路状态。bonding只监测主机与交换机之间链路。如果交换机出去的链路出问题而本身没有问题,那么bonding认为链路没有问题而继续使用。

2).mode=1 表示提供冗余功能。除此之外还可以为0、2、3,共四种模式。0表示负载均衡

ifenslave bond0 eth0 eth1

route add -net 192.168.1.254 netmask 255.255.255.0 bond0#如有需要才加该路由

首先执行命令装载bonding模块:modprobe bonding

重启网络服务,并确认bond0正确启动:service network restart

确认设备已经正确加载:less /proc/net/bonding/bond0

至此,bond 的设置就基本结束了

删除bond

ifconfig bond0 down

rmmod bonding

网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量,网络组不同于旧版中bonding 技术,能提供更好的性能和扩展性,网络组由内核驱动和teamd 守护进程实现.

nmcli connection add type team con-name TEAMname ifname INTname [config JSON]

TEAMname 指定连接名,INname指定接口名,JSON指定runner方式,格式为:'{"runner":{"name":"METHOD"}}'

METHOD 可以是broadcast、roundrobin、activebackup、loadbalance、lacp

(1)创建网络接口组team0

[root@centos7 ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"loadbalance"}}'

Connection 'team0' (e70483a1-2688-4eb2-9466-8e732360291d) successfully added.

(2)给网路组team0配置IP地址

[root@centos7 ~]# nmcli connection modify team0 ipv4.method manual ipv4.addresses 200.200.200.200/24 gw4 200.200.200.1

既就是生成组TEAM组成员的配置文件,这个配置文件和网卡配置文件是相互独立的。

nmcli connection add type team-slave con-name SLAVEname ifname INname master TEAMname

SLAVEname 指定连接名,INTname指定网络接口名(相当于指定要加入网络组的网卡名),TEAMnmae指定所属网络组。

若连接名不指定,默认为team-slave-IFACE

创建接口组

这里使用ens34、ens38两块网卡

[root@centos7 ~]# nmcli connection add con-name team0-ens34 type team-slave ifname ens34 master team0

[root@centos7 ~]# nmcli connection add con-name team0-ens38 type team-slave ifname ens38 master team0

启用网络组:nmcli connection up team0

启用组成员:nmcli connection up SLAVEname

[root@centos7 ~]# nmcli connection up team0

[root@centos7 ~]# nmcli connection up team0-ens34

[root@centos7 ~]# nmcli connection up team0-ens38

teamdctl TEAMname state

[root@centos7 ~]# teamdctl team0 state

link watches:

link summary: up

instance[link_watch_0]:

name: ethtool

link: up

down count: 0

ens38

link watches:

link summary: up

instance[link_watch_0]:

name: ethtool

link: up

down count: 0

(1)MASTER配置文件

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0

(2)组成员(SLAVE)配置文件

[root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0-ens34

(1)断开连接

[root@centos7 ~]# nmcli connection down team0

再次查看状态

[root@centos7 ~]# teamdctl team0 state

[root@centos7 ~]# nmcli connection show

可以看到已经关闭成功

(2)删除TEAM组成员

[root@centos7 ~]# nmcli connection delete team0-ens34

[root@centos7 ~]# nmcli connection delete team0-ens38

(3)删除TEAM组

[root@centos7 ~]# nmcli connection delete team0

不同的工作环境通常IP地址以及相关网络属性通常是不一样的.如果我们每次都是手动去修改,那将是非常繁琐的.所以我们去修改一些网络配置让网卡去自适应工作环境.在linux系统上配置同一个网卡拥有多个IP的技术也就是为网卡添加多个子网卡,如eth0:0、eth1:1这种网络接口,LINUX最多可以支持255个IP子网卡。

在linux系统上有两种方式添加子网卡。一种是使用网络配置命令,这种方式会立即生效,但不会永久生效,如果重启则会立即丢失。如果想要永久生效则是另一种方式去修改网络配置文件。配置子网卡命令前要卸载或者禁用NetworkManager服务,因为和NetworkManager有冲突。

使用ifconfig命令管理子网卡:

ifconfig device[label] [address] [up|down]

ifconfig eth0:0 192.168.1.100/24 up(添加并启用eth0:0子网卡)

ifconfig eth0:0 down(禁用eth0:0子网卡)

使用ip命令管理子网卡:

ip addr add [address] device [label]

ip addr add 172.16.1.2/16 dev eth0(为eth0网卡添加一个IP)

ip addr add 172.16.1.1/16 dev eth0 label eth0:0(为eth0网卡添加一个IP并且指定label)

ip addr del 172.16.1.1/16 dev eth0 label eth0:0(删除eth0上172.16.1.1/16这条IP)

ip addr flush dev eth0 label eth0:0(刷新)

把相关配置写入文件

将上边的命令ifconfig加入到rc.local中去(永久生效)

所有网卡的配置文件都保存在/etc/sysconfig/network-scripts目录中,一个网卡对应一个配置文件

手工添加IP地址的

以下是网卡配置文件的部分信息说明,其他类似信息默认即可:

配置完成重启网卡即可:service network restart


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7218857.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存