Linux篇 | 多网卡绑定技术 binding 和 网络组nmcli

多网卡绑定
“Bonding” 和 “nmcli的网络组Network Teaming”
二者实现的功能一样,但从某种角度,网络组要比Bonding的技术要好

网络接口配置:Bonding
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为相同的MAC地址。

一。Bonding工作模式
多网卡绑定有很多模式,如下:

Mode 0 (balance-rr):
轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力。如第一个数据包用网卡1转发,第二个数据包由网卡2转发。

Mode 1 (active-backup)
活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave.为了避免交换机发生混乱,此时绑定的MAC地址只有一个外部端口上可见。即,平时只有一个网卡工作,当网卡坏掉会自动启动第二个网卡工作。

Mode 3 (broadcast)
广播策略:在所有的slave接口上传送所有的报文,提供容错能力。即在所有的网卡上传输一样的数据。

还有其它的模式:
active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式Mode 0、Mode 2 和Mode 3 中使用 EtherChannel,但在模式Mode 4中需要 LACP和EtherChannel
二。Bonding配置
1.bonding设备的配置文件
第一步:创建bonding设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
推荐的配置的项有:
DEVICE=设备名称,如bond0
BOOTPROTO=协议,如none
BONDING_OPTS=指定工作模式,如 “miimon=100 mode=0”表示工作模式"Mode 0",且没100ms监测一次链路连接状态。

说明:
miimon 是用来进行链路监测的。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路

第二步:在要加入bonding的网卡,的配置文件里写入bonding设备的项。如下:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0《======
SLAVE=yes 《======
USERCTL=no
写入上面两行后,网卡就不可以单独工作了,而是成为bonding的附属设备工作。可配置多个网卡配置文件加入bonding设备,且binding所属的网卡,显示的MAC地址都一样。

2.查看bond0的状态
查看bond0的状态:/proc/net/bonding/bond0
查看当前有几个bonding:/sys/class/net/bonding_masters

3.删除bond0
第一步:禁用bonding
ifconfig bond0 down
第二步:卸载bonding驱动模块
rmmod bonding
第三步:删除bonding的配置文件及所属网卡配置文件里bonding的项
第四步:重启网络服务

4.bonding的详细帮助
/usr/share/doc/kernel-doc- version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bonding.txt

5.实验Mond 1 活动-备份(主备)策略
1.确保你有两个网卡,并且都在一个网络,如果用虚拟机做实验,要确保两个网卡是一个模式,如“仅主机模式”。

2.创建bonding设备的配置文件
在/etc/sysconfig/network-scripts目录创建文件ifcfg-bond0
DEVICE=bond0 \设备名称
BOOTPROTO=none \协议
IPADDR=192.168.36.6 \bonding的ip地址
PREFIX=24 \子网掩码
GATEWAY=192.168.36.254 \网关
DNS1=192.168.36.6 \DNS
BONDING_OPTS=miimon=100 mode=1

3.在网卡的配置文件里加入bonding的项
进入/etc/sysconfig/network-scripts/ifcfg-ethXX
添加行:
MASTER=bond0
SLAVE=yes
添加后,文件原来指定的静态或动态地址就会失效,生效的是bonding地址

4.确保NetworkManager服务关闭,并重启network服务
Centos6:
service NetworkManager status 查看服务状态
chkconfig NetworkManager off \关闭自动启动
service NetworkManager stop \关闭服务
service network restart \重启网络服务
Centos7:
systemctl status NetworkManager 查看服务状态
systemctl stop NetworkManager 临时停止
systemctl disable NetworkManager 下次开机即停止服务
systemctl restart network \重启网络服务

5.查看bonding:“ifconfig”

6.检测
停用一个网卡,在ping“bond0”地址,能ping通证明binding的"Mode 1"模式生效了。

7.查看binding设备中,“Mode 1”模式下,binding所属的哪个网卡在活动:
方法一:使用watch -n1 netstat -i查看,不明显可以用另一台电脑ping“binding”的IP地址
方法二:查看/proc/net/bonding/bond0文件
网络组Network Teaming
概念:
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现.
多种方式(模式)runner:
broadcast(广播策略)《===》对应bonding模式mode 3
roundrobin(轮转策略)《===》对应bonding模式mode 0
activebackup(活动-备份(主备)策略)《===》对应bonding模式mode 1
loadbalance(限定流量)《===》对应bonding模式mode 2
lacp(implements the 802.3ad Link Aggregation Control Protocol:实现802.3ad链路聚合控制协议)《===》对应bonding模式mode 4
参考链接:https://www.cnblogs.com/lqynkdcwy/p/9548668.html
注意事项:
启动网络组接口不会自动启动网络组中的port接口
启动网络组接口中的port接口总会自动启动网络组接口
禁用网络组接口会自动禁用网络组中的port接口
没有port接口的网络组接口可以启动静态IP连接
启用DHCP连接时,没有port接口的网络组会等待port接口的加入
创建网络组
1.创建网络组接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]

CNAME表示连接名
INAME表示接口名
JSON指定runner方式(模式),格式如下:
'{"runner": {"name": "METHOD"}}',其中METHOD 可以是:
broadcast
roundrobin
activebackup
loadbalance
lacp
2.创建port接口
`nmcli con add type team-slave con-name CNAME ifname INAME master TEAM

CNAME 连接名
INAME 网络接口名
TEAM 网络组接口名
连接名若不指定,默认为team-slave-IFACE
nmcli dev dis INAME
nmcli con up CNAME
INAME 设备名 CNAME 网络组接口名或port接口
3.新网络组的配置文件
示例

网络组的配置文件/etc/sysconfig/network-scripts/ifcfg-team0

DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{\"runner\": {\"name\": \"broadcast\"}}"
BOOTPROTO=none
IPADDR0=172.16.0.100
PREFIX0=24
NAME=team0
ONBOOT=yes

网络组所属网卡的配置文件/etc/sysconfig/network-scripts/ifcfg-team0-eth1

DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes

4.创建网络组示例

示例1:
nmcli con add type team con-name myteam0 ifname team0 config
'{“runner”: {“name”: “loadbalance”}}' ipv4.addresses
192.168.1.100/24 ipv4.method manual
示例2:
nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0
示例3:
nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
示例4:
nmcli con up myteam0
示例5:
nmcli con up team0-eth1
示例6:
nmcli con up team0-eth2
示例7:查看tean0状态
teamdctl team0 state
示例8:
nmcli dev dis eth1
5.实验:创建、删除网络组

1)创建网络组team0
查看网络连接
ip link
创建网络组team0,名字为myteam0,模式是主备模式
nmcli con add type team con-name myteam0 ifname team0 config'{"runner": {"name": "activebackup"}}'
给网络组添加IP地址
nmcli con mod team0 ipv4.addresses '192.168.0.100/24'
手工指定
nmcli con mod team0 ipv4.method manual
将物理网卡eth1加入网络组etam0
nmcli con add con-name team0-port1 type team-slave ifname eth1 master team0
将物理网卡eth2加入网络组etam0
nmcli con add con-name team0-port2 type team-slave ifname eth2 master team0
将网络组关联的两个物理网卡启用
nmcli con up team0-port1
nmcli con up team0-port2
查看网络组状态
teamdctl team0 state
nmcli connection

2.删除网络组team0
首先禁用网络组team0
nmcli connection down team0
查看网络组
teamdctl team0 state
nmcli connection show
删除网络组的网卡设备
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
在查看网络组
查看网络组
teamdctl team0 state
nmcli connection show
删除网络组
示例:删除网络组team0
首先禁用网络组team0
nmcli connection down team0
查看网络组
teamdctl team0 state
nmcli connection show
删除网络组的网卡设备
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
在查看网络组
查看网络组
teamdctl team0 state
nmcli connection show

`

转载于:https://blog.51cto.com/kingding/2376950

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值