1.NMCLI(NetworkManager Command Line Tool):基于命令行的网络管理工具。
RedHat Enterprise Linux 7中默认的网络服务由NetworkManager提供,这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的 ifcfg 类型的配置文件。
NetworkManager是管理和监控网络设置的守护进程,设备即就是网络接口,连接是对网络接口的配置,一个网络接口可以有多个连接配置文件,但默认只有一个配置文件连接生效。NetworkManager 可以用于以下类型的连接:Ethernet、VLANS、Bridges、Bonds、Team、Wi-Fi、mobile boradband以及 IP-over-InfiniBand。针对与这些网络类型,NetworkManager 可以配置他们的网络别名、IP 地址、静态路由、DNS、v*n连接以及很多其它的特殊参数。
NMCLI可用来控制 NetworkManager,本章我们主要是来了解NMCLI针对Team网卡聚合链路的配置。
2.什么是网卡聚合链路?
链路聚合是指将两个或多个数据信道结合成一个单个的信道,该信道以一个单个的更高带宽的逻辑链路出现。链路聚合一般用来连接一个或多个带宽需求大的设备,例如连接骨干网络的服务器或服务器群。
3.了解Team:
Team也是一种链路聚合的方式,Team最多支持8块网卡进行聚合。
Team网卡聚合支持模式有:
广播( broadcast ) -容错,传输来自所有端口的数据包;
轮询( roundrobin )-以轮循的模式进行调度传输所有端口的数据包,即每次调度执行i = (i + 1) mod n,并选出第i块网卡进行数据包的传输。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度;
主备(activebackup )-主备模式这是一个故障迁移程序,监控链接更改并选择活动的端口进行传输;
负载均衡(loadbalance)-将数据分摊到多个操作单元上进行执行,监控流量并使用哈希函数以尝试在选择传输端口的时候达到完美均衡。
4.Team配置网卡聚合链路的优点:
高可用
负载均衡
5.配置team高可用:
5.1查看本地网卡的情况:
[[email protected] ~]# nmcli device show
[[email protected] ~]# nmcli device status
5.2查看team配置的示例文件:
[[email protected] ~]# cd /usr/share/doc/teamd-1.17/example_configs/
[[email protected] example_configs]# ll
[[email protected] example_configs]# vim activebackup_arp_ping_1.conf
5.3Linux操作系统下team的配置操作(实验环境是准备三块网卡,将其中的两块网卡进行绑定测设,team网卡聚合模式为主备模式,注意要绑定的网卡的网络工作方式必须是一致的,本案例中我进行绑定的两块网卡是仅主机模式):
#选择好链路聚合配置模型
#取用以下内容
"runner": {"name": "activebackup"}
#创建team 0设备和team会话
[[email protected] ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"} }' //con-name指定新添加的会话名,ifname指定针对哪一个设备添加新的会话
成功添加的连接 'team0'(1f028006-2f2e-4c93-bcd2-43e4f1ecbfdc)。
#查看创建好的team0会话
[[email protected] ~]# nmcli connection show
#修改team0会话的IP地址和网关及dns
[[email protected] ~]# nmcli connection modify team0 ipv4.addresses 192.168.10.222/24
[[email protected] ~]# nmcli connection modify team0 ipv4.gateway 192.168.10.1
[[email protected] ~]# nmcli connection modify team0 ipv4.dns 114.114.114.114
#在这里我们也可以通过以下命令来完成静态配置ip地址信息等一系列配置内容
[[email protected] ~]# nmcli connection modify team0 ipv4.addresses 192.168.10.222 ipv4.gateway 192.168.10.1 ipv4.dns 114.114.114.114 +ipv4.dns 8.8.8.8 ipv4.method mannul connection.autoconnect yes //注意添加第一个dns服务器地址时要用+连接,ipv4.method mannul代表静态配置,connection.autoconnect yes代表网卡配置信息开机自动启动
#添加物理设备到team0
[[email protected] ~]# nmcli connection add type team-slave con-name team0-port1 ifname eno33554992 master team0
成功添加的连接 'team0-port1'(7cfcb33a-cbcc-4a50-9730-222ff2a84f40)。
[[email protected] ~]# nmcli connection add type team-slave con-name team0-port2 ifname eno50332216 master team0
成功添加的连接 'team0-port2'(ac74f69b-16cc-4ba9-b5c0-4363b313f4ef)。
#**从设备
[[email protected] ~]# nmcli connection up team0-port1
成功**的连接(D-Bus **路径:/org/freedesktop/NetworkManager/ActiveConnection/7)
[[email protected] ~]# nmcli connection up team0-port2
成功**的连接(D-Bus **路径:/org/freedesktop/NetworkManager/ActiveConnection/8)
#**主设备
[[email protected] ~]# nmcli connection up team0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
#查看启动后的team0的状态
[[email protected] ~]# teamdctl team0 state
#查看team0获取到的ip地址信息
[[email protected] ~]# ifconfig
#通过ping命令进行测试
#停用一个从设备会话来检验效果
[[email protected] ~]# nmcli connection down team0-port1
测试分别停一个端口的变化/ 两个端口都停掉的变化/在停掉一个真实物理网卡的变化
停一个端口:
停两个端口:
停掉一个真实物理网卡:
停用之后也可以通过ping命令来进行测试:
停用一个端口、停用两个端口或是停用一块物理设备(注意这里实在虚机的环境上进行实验,所以停掉两个端口之后还能ping通,真实环境中是不可以的):
6.配置软件桥接
#创建一个软件桥接设备和会话
[[email protected] ~]# nmcli connection add type bridge con-name br1 ifname br1
#添加从设备和会话到桥接设备
[[email protected] ~]# nmcli connection add type bridge-slave con-name br1-port0 ifname eno33554984 master br1
#配置软件桥接网卡的IP地址、网关和地址获取方式
[[email protected] ~]# nmcli connection modify br1 ipv4.addresses 192.168.10.66/24
[[email protected] ~]# nmcli connection modify br1 ipv4.gateway 192.168.10.1
[[email protected] ~]# nmcli connection modify br1 ipv4.method manual
#启动从设备会话
[[email protected] ~]# nmcli connection up br1-port0
#启动桥接会话
[[email protected] ~]# nmcli connection up br1
7.配置team桥接
7.1配置team
#创建team1设备和team1会话
[[email protected] ~]# nmcli connection add type team con-name team1 ifname team1 config '{"runner": {"name": "activebackup"} }'
#添加物理设备到team1
[[email protected] ~]# nmcli connection add type team-slave con-name team1-port1 ifname eno33554984 master team1
[[email protected] ~]# nmcli connection add type team-slave con-name team1-port2 ifname eno50332208 master team1
#**从设备
[[email protected] ~]# nmcli connection up team1-port1
[[email protected] ~]# nmcli connection up team1-port2
#**主设备
[[email protected] ~]# nmcli connection up team1
#查看team状态
[[email protected] ~]# teamdctl team1 state
#断掉team1设备
[[email protected] ~]# nmcli device disconnect team1
#停用NetworkManager服务
[[email protected] ~]# systemctl stop NetworkManager.service //网络管理服务
#禁止该服务开机启动(一般默认是开机自动启动)
[[email protected] ~]# systemctl disable NetworkManager.service
#切换到网卡配置目录
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
#编辑team1配置文件
[[email protected] network-scripts]# vim ifcfg-team1
#追加如下内容:
BRIDGE=brteam1
#编辑team1从设备配置文件/etc/sysconfig/network-scripts/ifcfg-team1-port1,只保留以下内容
NAME=team1-port1
UUID=01de42d1-7304-4ef8-8c62-93c405cd8474
DEVICE=eno33554984
ONBOOT=yes
TEAM_MASTER=team1
DEVICETYPE=TeamPort
#配置brteam1配置文件
[[email protected] network-scripts]# cat ifcfg-brteam1
DEVICE=brteam1 //指定当前设备名称
ONBOOT=yes //开机自动启动
TYPE=Bridge //指定当前类型
IPADDR0=192.168.10.66 //桥之后会自动获取IP,防止冲突,手动添加一条
PREFIX0=24 //掩码
#重启网络服务
[[email protected] ~]# systemctl restart NetworkManager
[[email protected] ~]# systemctl restart network //重启网络服务
注意:一定要记住Linux中网卡配置文件在/etc/sysconfig/network-scripts/ifcfg-******路径下。