配置链路聚合

在Redhat7链路聚合有两种:bond和team
bond 是把多个网卡绑定在一起,逻辑出一个接口,这样可以提高吞吐量,和冗余功能
bond 是依赖bonding.ko 这个内核模块。
查看内核有没有加载bonding.ko 模块
#modinfo binding
可以查看模块信息。如果有信息,说明已经加载
如果没有加载,可以用命令加载。

#modprobe binding

一个主接口master,由多个从接口slave组成。
接口进行控制管理时,使用的是NetworkManager服务进程
bond配置过程要注意一下几点;
master和slave是关闭和开启是分别进行。
slave不用做任何配置
master可以是用dhcp和可以使用
master 使用dhcp配置时,从接口必须保证物理连接是正确的


bond 的模式:
round-robin mode 0 轮询
active-backup mode 1 主备
broadcast mode 3 广播
实验环境说明:
一台Redhat7 虚拟机。虚拟机添加2块网卡,2块虚拟机网卡类型都设置为自动桥接(地址段为:192.168.9.0/24 网关为:192.168.9.254)
配置完成后,可以连接到互联网

配置步骤:
1,先创建一个bond的master
2,创建两个bond-slave 加入master
3,验证bond是不是生效

在桌面打开一个终端,su - 到root用户。查看一下网卡信息。可以看到除lo以外有两块网卡,
分别是eno16777736和eno33554992。这两块网卡没有任何配置信息(如果不是新添加的网卡,有信息,需要用nmcli connection delete xx 删除对应的网卡)

1,配置bond master 模式为active-backup

#nmcli connection add type bond ifname bond0 con-name bond0 mode active-backup ip4 192.168.9.5/24 gw4 192.168.9.254
现在ip addr show 能够查看到bond0

2创建两个bond-slave 加入master

#nmcli connection add type bond-slave ifname eno16777736 master bond0
 #nmcli connection add type bond-slave ifname eno33554992 master bond0

3验证bond创建是否生效。

#cat /proc/net/bonding/bond0能看到一下内容

[root@localhost ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eno33554992
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eno16777736
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:58:5e:6e
Slave queue ID: 0

Slave Interface: eno33554992
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:58:5e:78
Slave queue ID: 0

说明bond已经配置成功。现在我们用ssh 连接192.168.9.5 能够登录成功。
修改dns配置文件vim /etc/resolv.conf 添加nameserver 8.8.8.8就可以连接到互联网了

我们现在来看一下主备的效果。 另外开启一个ssh
把活动Currently Active Slave: eno33554992 断开连接。
#nmcli device disconnet eno33554992
我们现在查看一下cat /proc/net/bonding/bond0
Currently Active Slave: eno16777736
换成另外一个接口。
#可能是虚拟机的原因,活动的slave 切换了,但是还是掉线。有可能是虚拟机同步有问题。

team和bond的配置类似。(官方说bond和team不冲突)我就直接写步骤了

team的模式:注意和bond的写法区别
roundrobin 轮询
activebackup 主备
broadcast 广播

1,创建一个team master

#nmcli connection add type team con-name team0 ifname team0 autoconnect yes 
config '{"runner": {"name": "activebackup"}}' ip4 192.168.9.7/24 gw4 192.168.9.254

注意,team 指定模式的格式 '{"runner": {"name": "activebackup"}}'

2创建两个team-slave 加入master

#nmcli connection add type team-slave ifname eno16777736 autoconnect yes master team0 
#nmcli connection add type team-slave ifname eno33554992 autoconnect yes master team0 

3检验team是否生效

#teamdctl team0 state 能够查看信息

[root@localhost ~]# teamdctl team0 state
setup:
  runner: activebackup
ports:
  eno16777736
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
  eno33554992
    link watches:
      link summary: up
      instance[link_watch_0]:
        name: ethtool
        link: up
runner:
  active port: eno16777736

查看team有那些port组成
# teamnl team0 ports

 [root@localhost ~]# teamnl team0 ports 
 3: eno33554992: up 1000Mbit FD 
 2: eno16777736: up 1000Mbit FD 

验证方法还是可以上面一样。还是出现同样的问题,一切换网卡,就掉线。查看状态是正常的。

我用的版本是redhat 7.0的版本。vmwarestation 14.1.2的版本。你们有遇到这样的问题给我反馈。。。。

网桥的创建和bond 和team 类似。

#nmcli connection add type bridge ifname br0 con-name br0 autoconnect yes ip4 192.168.9.8  gw4 192.168.9.254
#nmcli connection add type bridge-slave autoconnect yes ifname eno16777736 master br0 

nmcli connection add type bridge-slave autoconnect yes ifname eno33554992 master br0

这样那两个接口就可以当交换机的两个网口用了