Show Table of Contents
为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。
5.12. 配置 teamd 运行程序
运行程序是创建实例时编译到成组连接守护进程中的代码单元。有关
teamd
运行程序的简介,请查看 第 5.4 节 “了解网络成组守护进程及“运行程序””。
5.12.1. 配置 broadcast 运行程序
要配置 broadcast 运行程序,请作为
root
使用编辑器,在成组 JSON 格式配置文件中添加以下内容:
{ "device": "team0", "runner": {"name": "broadcast"}, "ports": {"em1": {}, "em2": {}} }
详情请查看
teamd.conf(5)
man page。
5.12.2. 配置 random 运行程序
Random 运行程序与 roundrobin 运行程序行为类似。
要配置 random 运行程序,请作为
root
使用编辑器,在成组 JSON 格式配置文件中添加以下内容:
{ "device": "team0", "runner": {"name": "random"}, "ports": {"em1": {}, "em2": {}} }
详情请查看
teamd.conf(5)
man page。
5.12.3. 配置 roundrobin 运行程序
要配置 roundrobin 运行程序,请作为
root
使用编辑器在成组 JSON 格式配置文件中添加以下内容:
{ "device": "team0", "runner": {"name": "roundrobin"}, "ports": {"em1": {}, "em2": {}} }Roundrobin 的最基本配置。
详情请查看
teamd.conf(5)
man page。
5.12.4. 配置 active-backup 运行程序
active-backup 运行程序可使用所有链接监视程序确定成组中链接的状态。以下任意示例都可添加到成组 JSON 格式配置文件中:
{ "device": "team0", "runner": { "name": "activebackup" }, "link_watch": { "name": "ethtool" }, "ports": { "em1": { "prio": -10, "sticky": true }, "em2": { "prio": 100 } } }这个示例配置使用 active-backup 运行程序 ethtool 作为链接监视程序。端口 em2 有较高优先权。这个粘性标签可保证 em1 处于 active 状态,只要链接处于连接状态,它就仍将保持 active 状态。
{ "device": "team0", "runner": { "name": "activebackup" }, "link_watch": { "name": "ethtool" }, "ports": { "em1": { "prio": -10, "sticky": true, "queue_id": 4 }, "em2": { "prio": 100 } } }这个示例配置添加了队列 ID
4
。它使用 active-backup 运行程序,将 ethtool 作为链接监视程序。端口 em2 有较高的优先权。但粘性标签可保证 em1 处于 active 状态。只要链接处于连接状态,它就会处于 active 状态。
要使用 ethtool 配置 active-backup 运行程序,并应用延迟,请作为
root
使用编辑器在成组 JSON 格式配置文件中添加以下内容:
{ "device": "team0", "runner": { "name": "activebackup" }, "link_watch": { "name": "ethtool", "delay_up": 2500, "delay_down": 1000 }, "ports": { "em1": { "prio": -10, "sticky": true }, "em2": { "prio": 100 } } }这个示例配置使用 active-backup 运行程序,将 ethtool 作为链接监视程序使用。端口 em2 有较高优先权。但粘性标签保证如果 em1 处于 active 状态,则只要链接处于链接状态,它就会保持 active 状态。链接更改不会立即计入该运行程序,但会应用延迟。
详情请查看
teamd.conf(5)
man page。
5.12.5. 配置 loadbalance 运行程序
这个运行程序可用于两种负载平衡,即主动和被动负载平衡。在主动模式中,通过使用最新流量统计不断进行流量再平衡,以便尽可能平均分配流量。在静态模式中,流量会在可用链接之间随机分配。鉴于较低的处理开销,这样有速度优势。在高流量应用程序中通常首选此方式,因为流量通常由多个要在可用链接间随机分配的流组成,使用这种方式时,无需
teamd
介入即可完成负载分布。
要为被动传送(Tx)负载平衡配置 loadbalance 运行程序,请作为
root
在成组 JSON 格式配置文件中添加以下内容:
{ "device": "team0", "runner": { "name": "loadbalance", "tx_hash": ["eth", "ipv4", "ipv6"] }, "ports": {"em1": {}, "em2": {}} }配置基于哈希的被动传送(Tx)负载平衡。
要为主动传送(Tx)负载平衡配置 loadbalance 运行程序,请作为
root
在成组 JSON 格式配置文件中添加以下内容:
{ "device": "team0", "runner": { "name": "loadbalance", "tx_hash": ["eth", "ipv4", "ipv6"], "tx_balancer": { "name": "basic" } }, "ports": {"em1": {}, "em2": {}} }使用基本负载平衡程序配置主动传送(Tx)负载平衡。
详情请查看
teamd.conf(5)
man page。
5.12.6. 配置 LACP (802.3ad) 运行程序
要使用 ethtool 作为链接监视器配置 LACP 运行程序,请作为
root
用户使用编辑器中成组 JSON 格式配置文件中添加以下内容:
{ "device": "team0", "runner": { "name": "lacp", "active": true, "fast_rate": true, "tx_hash": ["eth", "ipv4", "ipv6"] }, "link_watch": {"name": "ethtool"}, "ports": {"em1": {}, "em2": {}} }配置可使用链接聚合控制协议(LACP)对应连接。LCAP 运行程序应使用 ethtool 监控链接状态。使用 ethtool 以外的链接监控方法没有任何意义,因为使用 arp_ping 时,该链接可能永远无法激活。原因是必须首先建立该链接,也只有在建立链接后,数据包(包括 ARP)方可通过。使用 ethtool 可防止此类情况,因为它对每一层中的链接单独监控。
使用这个运行程序可能会以 loadbalance 运行程序类似的方式进行主动负载平衡。要启用主动传送(Tx)负载平衡,请添加以下内容:
"tx_balancer": { "name": "basic" }
详情请查看
teamd.conf(5)
man page。
5.12.7. 配置链接状态监控
以下为可用链接状态监控方法。要采用其中之一,请以
root
授权,使用编辑器在成组 JSON 格式配置文件中添加 JSON 格式字符串。
5.12.7.1. 在 Ethtool 中配置链接状态监控
要在激活链接之后到通知运行程序之前到时间段内添加或编辑现有延迟(单位:毫秒),可按照如下方法操作:
"link_watch": { "name": "ethtool", "delay_up": 2500 }
要在断开链接后到通知运行程序前添加或编辑现有延迟(单位:毫秒),可按照如下方法操作:
"link_watch": { "name": "ethtool", "delay_down": 1000 }
5.12.7.2. 为链接状态监控配置 ARP Ping
成组守护进程
teamd
会向链接远端的地址发送 ARP REQUEST,以确定该链接是否处于连接状态。这个方法与 arping 程序的功能相同,但不会使用该工具程序。
准备一个包含 JSON 格式新配置的文件,类似如下:
{ "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": { "em1": { "prio": -10, "sticky": true }, "em2": { "prio": 100 } } }这个配置使用 arp_ping 作为链接监视器。
missed_max
选项是最多可允许的丢失回复数(比如 ARP 回复)。可与 interval
选项一同使用,以决定将链接报告为断开前的总时间长度。
要为成组端口 em2 从包含 JSON 配置的文件中载入新配置,请作为
root
运行以下命令:
~]# port config update em2 JSON-config-file注:会覆盖旧的配置,同时会将省略的选项重置为默认值。有关成组守护进程控制工具命令示例,请查看
teamdctl(8)
man page。
5.12.7.3. 为链接状态监控配置 IPv6 NA/NS
{ "device": "team0", "runner": {"name": "activebackup"}, "link_watch": { "name": "nsna_ping", "interval": 200, "missed_max": 15, "target_host": "fe80::210:18ff:feaa:bbcc" }, "ports": { "em1": { "prio": -10, "sticky": true }, "em2": { "prio": 100 } } }
要配置发送 NS/NA 数据包的间隔,请添加或编辑以下内容:
"link_watch": { "name": "nsna_ping", "interval": 200 }该数值为正数(单位:毫秒)。可与
missed_max
选项一同使用,以决定将链接状态报告为断开前的总时间长度。
要配置将链接状态报告为断开前最多可丢失的 NS/NA 数据包数,请添加或编辑以下内容:
"link_watch": { "name": "nsna_ping", "missed_max": 15 }最多可丢失的 NS/NA 回复数。如果超过这个数值,则会将该链接状态报告为断开。
missed_max
选项是允许丢失回复(比如 ARP 回复)的最大数值。它可与 interval
选项一同使用,以决定报告链接断开前的总时间长度。
要配置解析为
IPv6
地址(即 NS/NA 数据包的目标地址)的主机名,请添加或编辑以下内容:
"link_watch": { "name": "nsna_ping", "target_host": "MyStorage" }“target_host” 选项包含要转换为
IPv6
地址的主机名,会将该地址作为 NS/NA 数据包的目标地址使用。可在主机名中使用 IPv6
地址。
详情请查看
teamd.conf(5)
man page。
5.12.8. 配置端口选择覆盖
该物理端口传输的帧一般由成组驱动程序内核部分选择,而不是由用户或系统管理员决定。输出端口由所选成组模式(
teamd
运行程序)策略选择。但在实现较为复杂的策略时,偶尔将某些类型的传出流量指向某些物理接口有帮助。默认情况下,成组驱动程序可识别多队列,并在启动该驱动程序时创建 16 个队列。如果需要更多或较少的队列,可在创建成组驱动程序实例时,使用 Netlink 属性 tx_queues
更改这个数值。
可使用端口配置选项
queue_id
配置端口的队列 ID,如下:
{ "queue_id": 3 }这些队列 ID 可与 tc 工具程序一同使用,以便配置多队列原则和过滤器,倾向于将某些流量传送到某些端口设备中。流入:如果使用上述配置,并要强制所有绑定在
192.168.1.100
的流量使用成组中的 eth1 作为输出设备,则请作为 root
用户运行以下格式的命令:
~]#这个机制覆盖运行程序选择逻辑,以便将流量绑定到具体端口,该机制适用于所有运行程序。tc qdisc add dev team0 handle 1 root multiq
~]#tc filter add dev team0 protocol ip parent 1: prio 1 u32 match ip dst \
192.168.1.100 action skbedit queue_mapping 3
5.12.9. 配置基于 BPF 的 Tx 端口选择程序
loadbalance 和 LACP 运行程序使用数据包哈希为网络流量排序。这个哈希计算机制是基于伯克利数据包过滤器(BPF)代码。BPF 代码是用来生成哈希,而不是决定传出数据包的策略。哈希长度为 8 字节,有 256 种变体。就是说很多不同的套接字缓冲(SKB)可有相同的哈希,并因此将流量传递给同一链接。使用短哈希是将流量分入不同 stream 的快速方法,以便在多个链接间取得平衡负载。在静止模式中,只使用哈希决定应该向那个端口发送流量。在活动模式中,运行程序将继续创新将哈希分配给不同的端口,以达到最佳平衡状态。
可在数据包 Tx 哈希计算中使用以下碎片类型或字符串:
eth
— 使用源和目标 MAC 地址。vlan
— 使用 VLAN ID。ipv4
— 使用源和目标IPv4
地址。ipv6
— 使用源和目标IPv6
地址。ip
— 使用源和目标IPv4
和IPv6
地址。l3
— 使用源和目标IPv4
和IPv6
地址。tcp
— 使用源和目标TCP
端口。udp
— 使用源和目标UDP
端口。sctp
— 使用源和目标SCTP
端口。l4
— 使用源和目标TCP
、UDP
和SCTP
端口。
可通过在负载平衡运行程序中添加如下格式的一行使用这些字符串:
"tx_hash": ["eth", "ipv4", "ipv6"]。示例请参考 第 5.12.5 节 “配置 loadbalance 运行程序”。
为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。