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