4.5. 为 Ceph 节点配置多个绑定接口
使用绑定接口组合多个 NIC,并为网络连接添加冗余性。如果在 Ceph 节点上有足够的 NIC,可以在每个节点上创建多个绑定接口来扩展冗余功能。
然后,您可以对节点所需的每个网络连接使用绑定接口。这可为每个网络提供冗余和专用连接。
绑定接口的最简单实现涉及使用两个绑定,一个用于 Ceph 节点使用的每个存储网络。这些网络如下:
- 前端存储网络(
StorageNet) - Ceph 客户端使用此网络与对应的 Ceph 集群交互。
- 后端存储网络(
StorageMgmtNet) - Ceph 集群使用此网络来根据集群的放置组策略来平衡数据。有关更多信息,请参阅 Red Hat Ceph 架构指南中的 放置组(PG)。
要配置多个绑定接口,您必须创建新的网络接口模板,因为 director 不提供可用于部署多个绑定 NIC 的任何示例模板。但是,director 提供部署单个绑定接口的模板。此模板为 /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yaml。您可以在此模板中为附加 NIC 定义额外的绑定接口。
有关创建自定义模板的更多信息,请参阅高级 Overcloud 自定义指南中的创建自定义模板。
以下片段包含 /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yaml 文件中定义的单个绑定接口的默认定义:
type: ovs_bridge //
name: br-bond
members:
-
type: ovs_bond //
name: bond1 //
ovs_options: {get_param: BondInterfaceOvsOptions}
members: //
-
type: interface
name: nic2
primary: true
-
type: interface
name: nic3
-
type: vlan //
device: bond1 //
vlan_id: {get_param: StorageNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageIpSubnet}
-
type: vlan
device: bond1
vlan_id: {get_param: StorageMgmtNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageMgmtIpSubnet}
- 1
- 名为
br-bond的单个网桥包含此模板中定义的绑定。这一行定义网桥类型,即 OVS。 - 2
br-bond网桥的第一个成员是绑定接口本身,名为bond1。此行定义bond1的绑定类型,这也是 OVS。- 3
- 默认绑定名为
bond1。 - 4
ovs_options条目指示 director 使用一组特定的绑定模块指令。这些指令通过BondInterfaceOvsOptions传递,您也可以在此文件中进行配置。有关配置绑定模块指令的详情,请参考 第 4.5.1 节 “配置绑定模块指令”。- 5
绑定的member 部分定义哪些网络接口由bond1绑定。在本例中,绑定接口使用nic2(设置为主接口)和nic3。- 6
br-bond网桥有两个其他成员:前端(StorageNetwork)和后端(StorageMgmtNetwork)存储网络的 VLAN。- 7
device参数定义 VLAN 应使用哪个设备。在本例中,两个 VLAN 都使用绑定接口bond1。
使用至少两个 NIC,您可以定义额外的网桥和绑定接口。然后,您可以将其中一个 VLAN 移到新的绑定接口,这会提高存储网络连接的吞吐量和可靠性。
当您自定义 /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yaml 文件时,红帽建议您使用 Linux 绑定(type: linux_bond ),而不是默认的 OVS (type: ovs_bond)。此绑定类型更适合企业生产部署。
以下编辑的代码片段定义了额外的 OVS 网桥(br-bond2),它存放一个名为 bond2 的新 Linux 绑定。bond2 接口使用两个额外 NIC nic4 和 nic5,仅用于后端存储网络流量:
type: ovs_bridge
name: br-bond
members:
-
type: linux_bond
name: bond1
bonding_options: {get_param: BondInterfaceOvsOptions} //
members:
-
type: interface
name: nic2
primary: true
-
type: interface
name: nic3
-
type: vlan
device: bond1
vlan_id: {get_param: StorageNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageIpSubnet}
-
type: ovs_bridge
name: br-bond2
members:
-
type: linux_bond
name: bond2
bonding_options: {get_param: BondInterfaceOvsOptions}
members:
-
type: interface
name: nic4
primary: true
-
type: interface
name: nic5
-
type: vlan
device: bond1
vlan_id: {get_param: StorageMgmtNetworkVlanID}
addresses:
-
ip_netmask: {get_param: StorageMgmtIpSubnet}
- 1
- 因为
bond1和bond2都是 Linux 绑定(而非 OVS),它们使用bonding_options而不是ovs_options来设置绑定指令。更多信息请参阅 第 4.5.1 节 “配置绑定模块指令”。
有关此自定义模板的完整内容,请参阅 附录 B, 自定义接口模板示例:多个绑定接口。
4.5.1. 配置绑定模块指令 复制链接链接已复制到粘贴板!
添加并配置绑定接口后,使用 BondInterfaceOvsOptions 参数来设置您希望每个绑定接口使用的指令。您可以在 /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yaml 文件的 parameter : 部分找到此信息。以下片段显示了此参数的默认定义(即空):
BondInterfaceOvsOptions:
default: ''
description: The ovs_options string for the bond interface. Set
things like lacp=active and/or bond_mode=balance-slb
using this option.
type: string
在 default: 行中定义您需要的选项。例如,要使用 802.3ad(模式 4)和 LACP 速率 1 (fast),使用 'mode=4 lacp_rate=1':
BondInterfaceOvsOptions:
default: 'mode=4 lacp_rate=1'
description: The bonding_options string for the bond interface. Set
things like lacp=active and/or bond_mode=balance-slb
using this option.
type: string
有关其他支持的绑定选项的更多信息,请参阅高级 Overcloud 优化 指南中的 Open vSwitch 绑定选项。有关自定义 /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans/ceph-storage.yaml 模板的完整内容,请参阅 附录 B, 自定义接口模板示例:多个绑定接口。