4.2.4. 网络接口绑定
您可以将多个物理 NIC 捆绑在一起,形成一个名为绑定的单个逻辑通道。您可以配置绑定来为高可用性系统或增加吞吐量提供冗余。
Red Hat OpenStack Platform 支持 Open vSwitch (OVS)内核绑定、OVS-DPDK 绑定和 Linux 内核绑定。
| 绑定类型 | 类型值 | 允许网桥类型 | 允许的成员 |
|---|---|---|---|
| OVS 内核绑定 |
|
|
|
| OVS-DPDK 绑定 |
|
|
|
| Linux 内核绑定 |
|
|
|
不要在同一节点上组合 ovs_bridge 和 ovs_user_bridge。
ovs_bond在 Open vSwitch (OVS)中定义一个绑定,将两个或多个
接口连接在一起。这有助于冗余,并增加带宽。Expand 表 4.3. ovs_bond options 选项 默认 描述 name
绑定的名称。
use_dhcp
False
使用 DHCP 获取 IP 地址。
use_dhcpv6
False
使用 DHCP 获取 v6 IP 地址。
addresses
分配给绑定的 IP 地址列表。
Routes
分配给绑定的路由列表。如需更多信息,请参阅 第 4.2.7 节 “Routes”。
mtu
1500
连接的最大传输单元(MTU)。
primary
False
将接口定义为主接口。
成员
要在绑定中使用的接口对象序列。
ovs_options
创建绑定时传递给 OVS 的一组选项。如需更多信息,请参阅 表 4.4 “OVS 绑定的
ovs_options参数”。ovs_extra
在绑定的网络配置文件中设置为 OVS_EXTRA 参数的一组选项。
defroute
True
使用 DHCP 服务提供的默认路由。仅在启用
use_dhcp或use_dhcpv6时应用。persist_mapping
False
编写设备别名配置而不是系统名称。
dhclient_args
无
要传递给 DHCP 客户端的参数。
dns_servers
无
要用于绑定的 DNS 服务器列表。
Expand 表 4.4. OVS 绑定的 ovs_options 参数 ovs_option描述 bond_mode=balance-slb源负载均衡(slb)根据源 MAC 地址和输出 VLAN 平衡流,并在流量模式发生变化时定期重新平衡。当您使用
balance-slbbonding 选项配置绑定时,远程交换机不需要配置。Networking 服务(neutron)将每个源 MAC 和 VLAN 对分配给一个链接,并通过该链接传输来自该 MAC 和 VLAN 的所有数据包。使用基于源 MAC 地址和 VLAN 号的简单哈希算法,随着流量模式的变化定期重新平衡。balance-slb模式与 Linux 绑定驱动程序使用的模式 2 绑定类似。即使交换机没有配置为使用 LACP,也可以使用此模式来提供负载均衡。bond_mode=active-backup当您使用
active-backup绑定模式配置绑定时,网络服务会将一个 NIC 保留为待机状态。当活跃连接失败时,待机 NIC 会恢复网络操作。物理交换机仅会显示一个 MAC 地址。这个模式不需要切换配置,链接连接到单独的交换机时可以正常工作。这个模式不提供负载均衡。lacp=[active | passive | off]控制链路聚合控制协议(LACP)行为。只有某些交换机支持 LACP。如果您的交换机不支持 LACP,请使用
bond_mode=balance-slb或bond_mode=active-backup。other-config:lacp-fallback-ab=true如果 LACP 失败,则将 active-backup 设置为绑定模式。
other_config:lacp-time=[fast | slow]将 LACP heartbeat 设置为 1 秒 (fast) 或 30 秒 (slow)。默认设置会较慢。
other_config:bond-detect-mode=[miimon | carrier]将链路检测设置为使用 miimon heartbeats (miimon)或监控载体(carrier)。默认值为载体。
other_config:bond-miimon-interval=100如果使用 miimon,请设置心跳间隔(毫秒)。
bond_updelay=1000设置链接必须激活的时间间隔(毫秒),以防止流量过长。
other_config:bond-rebalance-interval=10000设置流在绑定成员间重新平衡的时间间隔(毫秒)。将此值设置为 0,以禁用绑定成员之间的流重新平衡。
- 示例 - OVS 绑定
... edpm_network_config_template: | --- {% set mtu_list = [ctlplane_mtu] %} {% for network in nodeset_networks %} {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }} {%- endfor %} {% set min_viable_mtu = mtu_list | max %} network_config: ... members: - type: ovs_bond name: bond1 mtu: {{ min_viable_mtu }} ovs_options: {{ bond_interface_ovs_options }} members: - type: interface name: nic2 mtu: {{ min_viable_mtu }} primary: true - type: interface name: nic3 mtu: {{ min_viable_mtu }}- 示例 - OVS DPDK 绑定
在本例中,绑定是作为 OVS 用户空间网桥的一部分创建的:
edpm_network_config_template: | --- {% set mtu_list = [ctlplane_mtu] %} {% for network in nodeset_networks %} {{ mtu_list.append(lookup(vars, networks_lower[network] ~ _mtu)) }} {%- endfor %} {% set min_viable_mtu = mtu_list | max %} network_config: ... members: - type: ovs_user_bridge name: br-dpdk0 members: - type: ovs_dpdk_bond name: dpdkbond0 rx_queue: {{ num_dpdk_interface_rx_queues }} members: - type: ovs_dpdk_port name: dpdk0 members: - type: interface name: nic4 - type: ovs_dpdk_port name: dpdk1 members: - type: interface name: nic5