跳至主要內容

Chapter3 - 配置链路聚合和桥接

Change Lee...大约 9 分钟LinuxRHEL134

配置网络合作(team)

网络合作是一种以逻辑方式将NIC 链接到一起,从而实现故障转移或更高吞吐量的方法。合作是一种新实施,不会影响 Linux 内核中的更早绑定驱动程序。其提供备选实施。为了向后兼容。RHEL7 支持通道绑定。网络合作提供更好的性能,并且由于其模块化设计,因此可扩展性更强。

RHEL7 使用一个小的内核驱动 程序 和一个用户空间守护进程 teamd 来实施网络合作。内核高效地处理网络包,而 teamd 负责逻辑和接口处理。称为运行程序的软件实施负载均衡和主动备份逻辑,如 roundrobin 。以下运行程序可供teamd使用:

  • broadcast:一个简单运行程序,传输来自所有端口的每个包
  • rundrobin:一个简单运行程序 ,以轮循方式传输来自每个端口的包
  • activebackup:这个一个故障转移运行程序,监视链接更改并选择活动端口进行数据输入。
  • loadbalance:此运行程序监控流量并使用哈希函数以尝试在为包传输选择端口时达到完美均衡。
  • lacp:实施 802.3ad 链接聚合控制协议,可以使用与loadbalance 运行程序相同的传输端口选择可能性。

所有网络交互均通过组接口(包含多个网络端口接口)完成。使用NetworkManager 控制合作端口接口时,特别是在查找故障时,请牢记以下几点:

  • 启动网络组接口不会自动启动端口接口
  • 启动端口接口始终会启动合作端口
  • 停止合作接口也会停止端口接口
  • 不含端口的合作接口可以启动静态IP连接
  • 在启动 DHCP 连接时,不含端口的组将等待端口。
  • 当添加具有载波的端口时,等待端口且有 DHCP 连接的组会完成
  • 当添加不具有载波的端口时,等待端口且有DHCP 连接的组合继续等待。

配置网络组

nmcli 命令用于创建和管理组和端口接口。以下四个步骤用于创建和激活网络组接口:

1、创建组接口

2、确定组接口的 IPV4 或/和 IPV6 属性

3、分配端口接口

4、启动/关闭组接口和端口接口。

创建接口组

使用nmcli 命令可为网络组接口创建连接,语法如下:

nmcli con add type team con-name CNAME ifname INAME [config JSON]

其中 CNAME 用于引用连接的名称,INAME 是接口名称,而JSON 指定要使用的运行程序 。JSON 的语法如下:

'{"runner": {"name" : "METHOD"}}'

其中 method 是下列之一:broadcast , roundrobin ,activebackup, loadbalance , 或lacp

示例:
nmcli con add type team con-name team0 ifname team0 config '{"runner" : {"name" : "loadbalance" }}'

确定组接口的 IPV4/IPV6 属性

一旦创建了网络组接口,便可以为其分配 ipv4 /ipv6 属性。如果DHCP 可用,则此步骤是可选的,因为默认属性将接口配置为使用dhcp 来获取其ip设置。

以下示例演示如何为接口 team0 分配静态 Ipv4 地址:

nmcli con mod team0 ipv4.addresses 1.2.3.4/24
nmcli con mod team0 ipv4.method manual

请注意,必须首先分配 ipv4.addresses ,然后才能将 ipv4.method 设置为 manual 。

分配端口接口

使用 nmcli 命令创建端口接口,语法如下:

nmcli con add type team-slave con-name CNAME ifname INAME master TEAM

其中 CNAME 将为用于引用端口的名称,INAME 将为现在的接口的名称,TEAM 指定网络组接口的连接名称。

可以显式指定连接名称,否则默认情况下为 team-salve-IFACE 。

示例:
nmcli con add type team-slave ifname eth1 master team0
nmcli con add type team-slave ifname eth2 master team0 con-name team0-eth2

启动/关闭 组接口和端口接口

nmcli 命令还可用于管理组接口和端口接口的连接,语法如下:

nmcli dev dis INAME 
nmcli con up CNAME

INAME 为要管理的组接口或端口接口的设备名称。CNAME 是该接口的连接名称。其中 CNAME 是要管理的组接口或端口的连接名称。

示例:
nmcli con up team0
nmcli dev dis eth2

当组接口启动时,teamctl 命令可用于显示合作的状态,此命令的输入包括端口接口状态。

img
img

管理合作网络

网络合作配置文件

与针对其他接口一样,NetworkManager 在 /etc/sysconfig/network-scripts 中为网络合作创建配置文件,将为每个接口创建一个配置文件:对于组,则为每个端口创建一个配置文件。

合作接口的配置文件定义了接口的IP设置。 DEVICETYPE 变量告知初始化脚本,这是一个网络组接口。teamd 配置的参数在 TEAM_CONIFG 变量中定义.请注意,TEAM_CONFIG 的内容使用 JSON 语法。

img
img

以下是端口组接口的配置文件示例

img
img

DEVICETYPE 变更告知初始化脚本,这是一个组端口接口。TEAM_MASTER 变更定义端口所适用于的组设备。

设置和调整组配置

当创建组接口时,便会设置初始化网络组配置。默认运行程序是 roundrobin 。但可以通过在使用 team.config 子命令创建组时指定 JSON 字符串来选择其他运行程序 。如果没有指定运行程序参数,则将使用默认值。

可以将其他运行程序分配给现有组。也可以使用nmcli con mod命令来调整运行程序参数,可以作为 JSON 字符串来指定配置更改(如果是简单更改),也可以提供包含更复杂JSON 配置的文件名。

nmcli con mod IFACE team.config JSON-configuration-file-or-string

以下示例说明了如何为 active-backup 组中端口接口分配不同优先级:

img
img
[root@server ~]# cat team.conf
{
  "device": "team0",
  "mcast_rejoin": {
    "count": 1
  },
  "notify_peers": {
    "count": 1
  },
  "ports": {
    "ens38": {
  "prio": -10,
  "sticky": true,
         "link_watch": {
             "name": "ethtool"
         }
    },
    "ens39": {
  "prio": 100,
         "link_watch": {
             "name": "ethtool"
      }
    }
        },
    "runner": {
      "name": "activebackup"

  }
}
[root@server ~]#

注意

进行任何更改都将在端口接口下次启动后才会生效。

配置文件中的 link_watch 设置确定如何 监控接口的链路状态。默认值如下所示,并使用类似的ethtool 命令的功能来检查每个接口的链接:

"link_watch": {
    "name": "ethtool"
}

检查链路的另一个方法是定期使用ARP ping包来检查远程连接。必须指定本地和远程 IP 地址及超时。完成的配置将与以下类似:

"link_watch": {
  "name": "arp_ping",
  "interval": "100",
  "missed_max": 30,
  "source_host": "192.168.23.2",
  "target_host": "192.168.23.1"
},

注意

请注意,如果省略的选项未在 JSON 文件中指定,则将恢复为默认值。

网络故障排除

teamnlteamdctl命令对于网络组的故障排除非常有用。这些命令仅在启动的网络组上有效。以下示例显示这些命令的一些典型用法。

显示 team0 接口组的端口

[root@server ~]# teamnl team0 port
 6: ens39: up 1000Mbit FD
 5: ens38: up 1000Mbit FD
[root@server ~]#

显示 team0 的当前活动端口

[root@server ~]# teamnl team0 getoption activeport
5    ##参数上个示例
[root@server ~]#

设置 team0 的活动端口的选项

teamnl team0 setoption activeport 6

teamnl显示可用于组设备的选项

[root@server0 ~]# teamnl team0 option
 queue_id (port:eno2) 0 
 priority (port:eno2) 0 
 user_linkup_enabled (port:eno2) false 
 user_linkup (port:eno2) true 
 enabled (port:eno2) false 
 queue_id (port:eno1) 0 
 priority (port:eno1) 0 
 user_linkup_enabled (port:eno1) false 
 user_linkup (port:eno1) true 
 enabled (port:eno1) true 
 activeport 4 
 mcast_rejoin_interval 0 
 mcast_rejoin_count 1 
 notify_peers_interval 0 
 notify_peers_count 1 
 mode activebackup 
[root@server0 ~]#

使用teamdctl 可显示 team0 接口的当前状态

img
img

使用 teamctl 可显示 team0 的当前 JSON 配置:

img
img

配置软件网桥

软件网桥

网桥是一个链路层设备,可基于MAC 地址在网络之间转发流量。网桥识别哪些主机连接到每个网络,构建 MAC 地址表,然后根据该表做出包转发决策。可以在 linux 环境中使用软件网桥以仿真硬件网桥。软件网桥的最常见应用是在虚拟化应用程序中,用于在一个或多个虚拟NIC 中共享硬件 NIC 。

配置软件网桥

nmcli 可用于持久方式配置软件网桥。首先要创建软件网桥。然后现有接口与其连接。例如,以下命令将创建名为 br0 的网桥并将 eth1 和eth2 接口都连接到此网桥。

[root@server ~]# nmcli connection add type bridge con-name br0 ifname br0
连接"br0"(9a869fed-6341-47bc-ac3e-c853ffff29f6) 已成功添加。
[root@server ~]# nmcli con add type bridge-slave con-name br0-ens38 ifname ens38 master br0
连接"br0-ens38"(818f233e-536d-4279-9543-2a213a2723a4) 已成功添加。
[root@server ~]# nmcli con add type bridge-slave con-name br0-ens39 ifname ens38 master br0
连接"br0-ens39"(0bea4f9a-1950-4270-be28-66897227bf0e) 已成功添加。
[root@server ~]#

注意

NetworkManager 只能将以太网接口的连接到网桥。不支持聚合接口,如合作接口或绑定接口。必须通过操作 /etc/sysconfig/network-scripts中的配置文件来进行配置

软件网桥配置文件

软件网桥由 /etc/sysconfig/network-scripts 目录中的接口配置文件来管理。每个软件网桥都有一个ifcfg-* 配置文件。

以下是软件网桥的示例配置文件:

img
img

TYPE=Bridge 定义指定了这是一个软件网桥。BRIDGING_OPTS 定义其他网桥选项。请注意,已经为此网桥分配了一个静态IP地址。

以下配置文件将以太网接口连接到软件网桥:

img
img

将此接口与软件网桥br1 进行绑定的是单个变量定义 BRIDGE=br1

注意

要在 NetworkManager 管理的现有合作或绑定网络接口上实施软件网桥,必须禁用 NetworkManager ,因为它仅支持简单以太网接口上的网桥。网桥的配置文件必须手动创建 。ifupifdown 实用程序可用于管理软件网桥和其他网络接口。

brctl show 命令将显示软件网桥以及连接到该软件网桥的接口的列表。

[root@server ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c291a911d       yes             ens38
virbr0          8000.525400175763       yes             virbr0-nic

配置网桥需要删除接口中的IP相关信息配置

上次编辑于:
贡献者: change,lichangyangccm@163.com
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3