本文共 5625 字,大约阅读时间需要 18 分钟。
“Bonding” 和 “nmcli的网络组Network Teaming”
二者实现的功能一样,但从某种角度,网络组要比Bonding的技术要好将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡被修改为相同的MAC地址。
多网卡绑定有很多模式,如下:
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设备的配置文件
/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地址都一样。查看bond0的状态:/proc/net/bonding/bond0
查看当前有几个bonding:/sys/class/net/bonding_masters第一步:禁用bonding
ifconfig bond0 down
第二步:卸载bonding驱动模块 rmmod bonding
第三步:删除bonding的配置文件及所属网卡配置文件里bonding的项 第四步:重启网络服务 /usr/share/doc/kernel-doc- version/Documentation/networking/bonding.txt
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=13.在网卡的配置文件里加入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文件
1.创建网络组接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]
2.创建port接口
`nmcli con add type team-slave con-name CNAME ifname INAME master TEAM3.新网络组的配置文件
示例网络组的配置文件/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.addresses192.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加入网络组etam0nmcli con add con-name team0-port1 type team-slave ifname eth1 master team0将物理网卡eth2加入网络组etam0nmcli con add con-name team0-port2 type team-slave ifname eth2 master team0将网络组关联的两个物理网卡启用nmcli con up team0-port1nmcli con up team0-port2查看网络组状态teamdctl team0 statenmcli connection2.删除网络组team0首先禁用网络组team0nmcli connection down team0查看网络组teamdctl team0 statenmcli connection show删除网络组的网卡设备nmcli connectioni delete team0-eth0nmcli connectioni delete team0-eth1在查看网络组查看网络组teamdctl team0 statenmcli 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/13465487/2374959