nmcli--NetworkManager command line tool 基于会话的网络管理

       Redhat Linux 7和CentOS 7中默认的网络服务由NetworkManager提供,它是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接使其处于工作状态,同时也支持传统的ifcfg类型的配置文件。使用命令行工具nmcli来控制NetworkManager。

       NetworkManager可以用于以下类型的连接:Ethernet、VLANS、Bridges、Bonds、Teams、mobile broadband以及IP-Over-InfiniBand。针对这些网络类型,NetworkManager可以配置他们的别名,IP地址、静态路由、DNS、VPN等参数。我们今天着重理解一下Team类型的连接方法。

配置Team高可用

#查看本地网卡情况
[root@localhost ~]# nmcli device show
#查看示例文件
[root@localhost ~]# cd /usr/share/doc/teamd-1.17/example_configs/
[root@localhost example_configs]# ll
total 64
-rw-r--r--. 1 root root 305 Apr  2  2015 activebackup_arp_ping_1.conf
-rw-r--r--. 1 root root 465 Apr  2  2015 activebackup_arp_ping_2.conf
-rw-r--r--. 1 root root 194 Apr  2  2015 activebackup_ethtool_1.conf
-rw-r--r--. 1 root root 212 Apr  2  2015 activebackup_ethtool_2.conf
-rw-r--r--. 1 root root 241 Apr  2  2015 activebackup_ethtool_3.conf
-rw-r--r--. 1 root root 447 Apr  2  2015 activebackup_multi_lw_1.conf
-rw-r--r--. 1 root root 285 Apr  2  2015 activebackup_nsna_ping_1.conf
-rw-r--r--. 1 root root 318 Apr  2  2015 activebackup_tipc.conf
-rw-r--r--. 1 root root  96 Apr  2  2015 broadcast.conf
-rw-r--r--. 1 root root 209 Apr  2  2015 lacp_1.conf
-rw-r--r--. 1 root root  98 Apr  2  2015 loadbalance_1.conf
-rw-r--r--. 1 root root 140 Apr  2  2015 loadbalance_2.conf
-rw-r--r--. 1 root root 183 Apr  2  2015 loadbalance_3.conf
-rw-r--r--. 1 root root  93 Apr  2  2015 random.conf
-rw-r--r--. 1 root root 244 Apr  2  2015 roundrobin_2.conf
-rw-r--r--. 1 root root  97 Apr  2  2015 roundrobin.conf
我们可以看到有许多类型的配置文件
broadcast :广播模式,传输来自所有端口的包。
roundrobin:以轮循的模式传输所有端口的包。
activebackup:主备模式,这是一个故障迁移程序,监控链接更改并选择活动的端口进行传输。
loadbalance:负载均衡,监控流量并使用哈希函数以尝试在选择传输端口的时候达到完美均衡。
我们在实验的时候,添加三个网卡并将其中两个网卡绑定进行测试
#添加网卡
在虚拟机里添加之后,要确保出现添加的网卡信息
5: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0e:22:e5 brd ff:ff:ff:ff:ff:ff
6: eno50332208: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0e:22:ef brd ff:ff:ff:ff:ff:ff
7: eno67109432: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
#选择链路聚合配置模型
[root@localhost example_configs]# cat activebackup_arp_ping_1.conf 
{
	"device":	"team0",
	"runner":	{"name": "activebackup"},
	"link_watch":	{
		"name": "arp_ping",
		"interval": 100,
		"missed_max": 30,
		"source_host": "192.168.23.2",
		"target_host": "192.168.23.1"
	},
	"ports":	{
		"eth1": {
			"prio": -10,
			"sticky": true
		},
		"eth2": {
			"prio": 100
		}
	}
}
#我们只需要选取以下内容
"runner":	{"name": "activebackup"}
#创建team0设备和team0会话
[root@localhost ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner" :{"name" :"activebackup"}}'
Connection 'team0' (40f39d50-8a01-4a45-b329-6429c5d1e007) successfully added.
#查看创建好的team0会话
[root@localhost ~]# nmcli connection show 
NAME         UUID                                  TYPE            DEVICE      
team0        40f39d50-8a01-4a45-b329-6429c5d1e007  team            team0       
eno33554984  51c4dcab-a100-45a9-a2e4-67aaadbb6b81  802-3-ethernet  eno33554984 
eno50332208  3231963b-615e-46db-907f-0b219f207090  802-3-ethernet  eno50332208 
eno16777736  88ba89cd-bd4d-42d1-a0e8-01649a0e2344  802-3-ethernet  eno16777736 
virbr0-nic   86a6bf4b-5153-495c-95ea-3ef8cccd6691  802-3-ethernet  virbr0-nic  
virbr0       1765d2d6-81ff-4ed7-9713-04134f0a48f9  bridge          virbr0      
eno16777736  7044a8cc-c61b-4c65-ae0b-0f7e1cf3cba5  802-3-ethernet  --          
#修改team0会话的ip地址和网关
[root@localhost ~]# nmcli connection modify team0 ipv4.addresses 192.168.100.163/24
[root@localhost ~]# nmcli connection modify team0 ipv4.gateway 192.168.100.1
[root@localhost ~]# nmcli connection modify team0 ipv4.method manual
#查看修改后的team0会话
[root@localhost ~]# nmcli connection show team0
#添加设备到team0
[root@localhost ~]# nmcli connection add type team-slave con-name team0-port1 ifname eno33554984 master team0 
Connection 'team0-port1' (39bcaa95-0e2f-4744-8e1b-e6e2f5dc5760) successfully added.
[root@localhost ~]# nmcli connection add type team-slave con-name team0-port2 ifname eno50332208 master team0 
Connection 'team0-port2' (4cdc7893-7bd7-4581-bb07-9139d5e6268c) successfully added.
#激活从设备
[root@localhost ~]# nmcli connection up team0-port1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@localhost ~]# nmcli connection up team0-port2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
#激活主设备
[root@localhost ~]# nmcli connection up team0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
#查看激活后的team0状态
[root@localhost ~]# nmcli connection up team0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
[root@localhost ~]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  eno33554984
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  eno50332208
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: eno33554984
#停用一个从设备会话来检测效果
[root@localhost ~]# nmcli connection down team0-port1
Connection 'team0-port1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@localhost ~]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  eno50332208
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: eno50332208
#两个都停用
[root@localhost ~]# nmcli connection down team0-port2
Connection 'team0-port2' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)
[root@localhost ~]# teamdctl team0 state
setup:
  runner: activebackup
runner:
  active port:
#两个都启用
[root@localhost ~]# nmcli connection up team0-port2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
[root@localhost ~]# nmcli connection up team0-port1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/13)
[root@localhost ~]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  eno33554984
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
  eno50332208
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
        down count: 0
runner:
  active port: eno50332208

配置team桥接

刚才我们已经添加和激活过设备了,现在我们需要把它断开连接,然后编辑配置文件
#断开连接
[root@localhost ~]# nmcli device disconnect team0 
Device 'team0' successfully disconnected.
#停用NetworkManager服务
[root@localhost ~]# systemctl stop NetworkManager
#切到网卡配置目录,编辑team0配置文件
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vi ifcfg-team0
#添加如下内容
BRIDGE=br0
#编辑team0两个从设备配置文件
确保内容如下
NAME=team0-port1
UUID=39bcaa95-0e2f-4744-8e1b-e6e2f5dc5760
DEVICE=eno33554984
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort
#配置br0配置文件
[root@localhost network-scripts]# vi ifcfg-br0
[root@localhost network-scripts]# cat ifcfg-br0 
DEVICE=br0
ONBOOT=yes
TYPE=bridge
IPADDRO=192.168.100.200
PREFIXO=24
#重启网络服务
[root@localhost ~]# systemctl start NetworkManager
[root@localhost ~]# nmcli device connect team0
Device 'team0' successfully activated with '40f39d50-8a01-4a45-b329-6429c5d1e007'.
#查看设备连接
GENERAL.DEVICE:                         br0
GENERAL.TYPE:                           bridge
GENERAL.HWADDR:                         00:0C:29:0E:22:E5
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     Bridge br0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/4
IP6.ADDRESS[1]:                         fe80::e4bf:5cff:fe90:ca3d/64
IP6.GATEWAY:                            

GENERAL.DEVICE:                         team0
GENERAL.TYPE:                           team
GENERAL.HWADDR:                         00:0C:29:0E:22:E5
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     team0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/7
我们可以看到设备的地址
9: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP 
    link/ether 00:0c:29:0e:22:e5 brd ff:ff:ff:ff:ff:ff
10: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 00:0c:29:0e:22:e5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.188.152/24 brd 192.168.188.255 scope global dynamic br0
       valid_lft 1609sec preferred_lft 1609sec
    inet6 fe80::20c:29ff:fe0e:22e5/64 scope link 
       valid_lft forever preferred_lft forever

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值