让Linux内核支持网卡绑定驱动。常见的网卡绑定驱动有三种模式——mode0、mode1、mode6。
mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。
mode1(平衡备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。
mode6(平衡负载模式):平时两块网卡工作,且自动备援,无需交换机设备提供辅助支持。
网卡bond是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡。在应用部署中是一种常用的技术。bond不支持负载均衡。
命令后面没有解释的会在图片中详细解释其参数代表的含义
[root@localhost ~]# ifconfig 查看也没有以及配置的网卡有的话删除
[root@localhost ~]# nm-connection-editor 以图形界面删除,或者/etc/sysconfig/network-scripts/删除其文件
[root@localhost ~]# nmcli connection add con-name bond0 ifname bond0 type bond mode active-backup ip4 172.25.254.160/24
[root@localhost ~]# watch -n 1 cat /proc/net/bonding/bond0 监控命令
[root@localhost ~]# nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0
[root@localhost ~]# nmcli connection add con-name eth1 ifname eth1 type bond-slave master bond0
[root@localhost ~]# ifconfig eth0 down 后面这三条命令为测试命令
[root@localhost ~]# ifconfig eth1 down 控制变量法测试
[root@localhost ~]# ifconfig eth1 up
这里介绍以下nmcli 以及nmcli控制 NetworkManager
Red Hat Enterprise Linux 7 与 CentOS 7 中默认的网络服务由 NetworkManager 提供,这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的 ifcfg 类型的配置文件。
NetworkManager 可以用于以下类型的连接:Ethernet,VLANS,Bridges,Bonds,Teams,Wi-Fi,mobile boradband(如移动3G)以及 IP-over-InfiniBand。针对与这些网络类型,NetworkManager 可以配置他们的网络别名,IP 地址,静态路由,DNS,VPN连接以及很多其它的特殊参数。
可以用命令行工具 nmcli 来控制 NetworkManager。
在CentOS / RHEL 7中网络管理命令行工具,也叫nmcli。经常使用ifconfig的用户应该在CentOS 7中避免使用ifconfig了。nmcli的功能要强大、复杂的多。
地址配置工具:nmcli
nmcli – command-line tool for controlling NetworkManager
命令语法:
nmcli[ OPTIONS ] OBJECT { COMMAND | help }
OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面我们平时用的最多的就是connection和device,这里需要简单区分一下connection和device。
device叫网络接口,是物理设备
device -show and manage network interfaces
nmcli device help
connection是连接,偏重于逻辑设置
connection -start, stop, and manage network connections
nmcli connection help
多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应connection
con add – 添加新的连接
con-name – 连接名
type – 设备类型
ifname – 接口名
autoconnect no – 禁止开机自动启动
[root@localhost ~]# nm-connection-editor 删除,不要直接删除配置文件
[root@localhost network-scripts]# vim ifcfg-bond0
[root@localhost network-scripts]# vim ifcfg-eth0
[root@localhost network-scripts]# vim ifcfg-eth1
[root@localhost network-scripts]# systemctl restart network 记得重启网络
[root@localhost network-scripts]# nmcli connection show
[root@localhost network-scripts]# cat ifcfg-bond0
DEVICE=bond0 名称为bond0
ONBOOT=yes
BOOTRPOTO=none
IPADDR=172.25.254.160
NETMASK=255.255.255.0
TYPE=Bond 类型为Bond,这里B大写
BONDING_OPTS=mode=active-backup 轮循模式
[root@localhost network-scripts]# cat ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTRPOTO=none
MASTER=bond0 指向bond0下
[root@localhost network-scripts]# cat ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTRPOTO=none 指向bond0下
MASTER=bond0
### 然后用另一台主机进行测试就行了
在 linux 中, centos7之前都是使用bond机制来实现多网络绑定同一个IP 地址,来对网络提供访问,并按不同的模式来负载均衡或者轮回接替管理处理数据。而到了contos7之后,提供了一种强大的工具,nmcli工具命令,使用此工具,将会根据命令参数的配置来重新生成特定的配置文件来供网络接口使用,方便而又灵活。在linux不再使用bond机制定义,而是使用网路组 team 机制,把 team 组当作一个设备。
team :也是链路聚合 最多支持8块网卡,Team 不需要手动加载相应内核模块
支持模式:
broadcast 广播容错
roundrobin 轮询
activebackup 主备
loadbalance 负载均衡
思路和做法都和bond设置没有多少区别,下面把设置方式简单说一边,以下图片中包含个人在实验中存在的错误,以及纠正方法,比较乱,慎看!!!
[root@localhost ~]# nm-connection-editor 删除上次实验的配置
[root@localhost ~]# nmcli connection show
[root@localhost ~]# watch -n 1 teamdctl team0 stat 监控命令,这里的监控的时程序而不是文件
[root@localhost ~]# nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}' ip4 172.25.254.160/24 这里需要理解Linux中转义字符的作用,意会!
[root@localhost ~]# nmcli connection add con-name eth0 ifname eth0 type team-slave master team0
[root@localhost ~]# nmcli connection add con-name eth1 ifname eth1 type team-slave master team0
[root@localhost ~]# nmcli connection show
[root@localhost ~]# ping 172.25.254.60
[root@localhost ~]# ifconfig eth0 down 控制变量法测试
[root@localhost ~]# ifconfig eth1 down
[root@localhost ~]# ifconfig eth1 up
[root@localhost ~]# ifconfig eth1 down
[root@localhost ~]# ifconfig eth0 up
按照这个方法再做一边没出现以下的错误
反思,删除的时候nmcli connection delete 命令,而不是直接删除配置文件,谁删谁傻逼
正确姿势:
[root@localhost ~]# nmcli connection delete team0
[root@localhost ~]# nmcli connection delete eth0
[root@localhost ~]# nmcli connection delete eth1
[root@localhost ~]# systemctl restart network
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-team0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
[root@localhost ~]#
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
TEAM_CONFIG='{"runner":{"name":"activebackup"}}'
DEVICETYPE=Team
BOOTPROTO=none
IPADDR=172.25.254.160
PREFIX=24
NAME=team0
ONBOOT=yes
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=none
DEVICE=eth0
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=none
DEVICE=eth1
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort
实验真机里面
关掉wifi
删除
[root@foundation60 Desktop]# cd /etc/sysconfig/network-scripts/
[root@foundation60 network-scripts]# ls
[root@foundation60 network-scripts]# nm-connection-editor
[root@foundation60 network-scripts]# ls
[root@foundation60 network-scripts]# vim ifcfg-enp6s0
[root@foundation60 network-scripts]# vim ifcfg-br0
[root@foundation60 network-scripts]# systemctl restart network
[root@foundation60 network-scripts]# brctl show
[root@foundation60 network-scripts]# cat ifcfg-enp6s0
DEVICE=enp6s0
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0
[root@foundation60 network-scripts]# cat ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.254.60
NETMASK=255.255.255.0
TYPE=Bridge