10.5. 其他 overcloud 网络配置
本章介绍了 第 10.4 节 “自定义网络接口模板” 中概述的概念和程序,并提供一些额外的信息来帮助配置 overcloud 网络的一部分。
10.5.1. 配置自定义接口 复制链接链接已复制到粘贴板!
单个接口可能需要修改。以下示例显示了使用第二个 NIC 来连接到带有 DHCP 地址的基础架构网络的修改,并将另一个 NIC 用于绑定:
网络接口模板使用实际接口名称(eth0, eth1, enp0s25)或一组编号的接口(nic1, nic2, nic3)。当使用编号接口(nic1, nic2 等)而不是命名接口(eth0, eno2 等)时,角色中的主机的网络接口不必完全相同。例如,一个主机可能具有接口 em1 和 em2,而另一个主机具有 eno1 和 eno2,但您可以将两个主机的 NIC 指代为 nic1 和 nic2。
编号接口的顺序与指定网络接口类型的顺序对应:
-
ethX接口,如eth0、eth1等。这些通常是板载接口。 -
enoX接口,如eno0、eno1等。这些通常是板载接口。 -
enX接口,按字母数字排序,如enp3s0、enp3s1、ens3等。这些通常是附加接口。
编号的 NIC 方案仅包含实时接口,例如当接口有电缆连接到交换机时。如果您有一些主机具有四个接口,且一些有六个接口,请使用 nic1 到 nic4,并且每个主机上仅连接四个电缆。
为预置备节点自定义 NIC 映射
如果使用预置备节点,您可以通过在环境文件中配置 NetConfigDataLookup heat 参数来指定特定节点的 os-net-config 映射。
NetConfigDataLookup heat 参数的配置等同于节点定义文件中的 net_config_data_lookup 属性,即 overcloud-baremetal-deploy.yaml。如果没有使用预置备节点,您必须在节点定义文件中配置 NIC 映射。有关配置 net_config_data_lookup 属性的更多信息,请参阅 裸机节点置备属性。
您可以为每个节点上的物理接口分配别名,以预先确定哪个物理 NIC 映射到特定别名,如 nic1 或 nic2,您可以将 MAC 地址映射到指定的别名。您可以使用 MAC 地址或 DMI 关键字映射特定节点,也可以使用 DMI 关键字映射一组节点。以下示例为物理接口配置三个节点和具有别名的两个节点组。生成的配置由 os-net-config 应用。在每个节点上,您可以在 /etc/os-net-config/mapping.yaml 文件的 interface_mapping 部分中看到应用的配置。
os-net-config-mappings.yaml示例
通常,os-net-config 仅注册已在 UP 状态连接的接口。但是,如果您硬编码接口带有自定义映射文件,接口也会注册,即使它处于 DOWN 状态。
10.5.2. 配置路由和默认路由 复制链接链接已复制到粘贴板!
您可以通过以下两种方式之一设置主机的默认路由:如果接口使用 DHCP,并且 DHCP 服务器提供网关地址,则系统为该网关使用默认路由。否则,您可以在具有静态 IP 的接口上设置默认路由。
虽然 Linux 内核支持多个默认网关,但它仅使用具有最低指标的网关。如果有多个 DHCP 接口,这可能会导致无法预计的默认网关。在这种情况下,建议为使用默认路由的接口以外的接口设置 defroute: false。
例如,您可能希望 DHCP 接口(nic3)是默认路由。使用以下 YAML 片段禁用另一个 DHCP 接口上的默认路由(nic2):
defroute 参数仅适用于通过 DHCP 获取的路由。
要在具有静态 IP 的接口上设置静态路由,请指定到子网的路由。例如,您可以通过内部 API 网络上 172.17.0.1 上的网关将路由设置为 10.1.2.0/24 子网:
10.5.3. 配置基于策略的路由 复制链接链接已复制到粘贴板!
要在 Controller 节点上配置来自不同网络的无限访问,请配置基于策略的路由。基于策略的路由使用路由表,在具有多个接口的主机上,您可以根据源地址通过特定接口发送流量。您可以将来自不同源的数据包路由到不同的网络,即使目的地是相同的。
例如,您可以将路由配置为根据数据包的源地址将流量发送到内部 API 网络,即使外部网络的默认路由也是如此。您还可以为每个接口定义特定的路由规则。
Red Hat OpenStack Platform 使用 os-net-config 工具为 overcloud 节点配置网络属性。os-net-config 工具管理 Controller 节点上的以下网络路由:
-
/etc/iproute2/rt_tables文件中的路由表 -
/etc/sysconfig/network-scripts/rule-{ifname}文件中的 IPv4 规则 -
/etc/sysconfig/network-scripts/rule6-{ifname}文件中的 IPv6 规则 -
路由表在
/etc/sysconfig/network-scripts/route-{ifname}中特定路由
先决条件
- 您已成功安装了 undercloud。如需更多信息,请参阅 Director 安装和使用 指南中的 安装 director。
流程
从
/home/stack/templates/custom-nics目录中创建自定义 NIC 模板中的接口条目,为接口定义路由,并定义与您的部署相关的规则:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在部署命令中包含您的自定义 NIC 配置和网络环境文件,以及与部署相关的任何其他环境文件:
openstack overcloud deploy --templates \ -e /home/stack/templates/<custom-nic-template> -e <OTHER_ENVIRONMENT_FILES>
$ openstack overcloud deploy --templates \ -e /home/stack/templates/<custom-nic-template> -e <OTHER_ENVIRONMENT_FILES>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在 Controller 节点上输入以下命令,以验证路由配置是否正常工作:
cat /etc/iproute2/rt_tables $ ip route $ ip rule
$ cat /etc/iproute2/rt_tables $ ip route $ ip ruleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5.4. 配置巨型帧 复制链接链接已复制到粘贴板!
最大传输单元(MTU)设置决定了通过单一以太网帧传输的最大数据量。使用较大的值会降低开销,因为每个帧以标头的形式添加数据。默认值为 1500,使用更高的值要求配置交换机端口来支持巨型帧。大多数交换机支持至少 9000 的 MTU,但很多交换机默认配置为 1500。
VLAN 的 MTU 无法超过物理接口的 MTU。确保在绑定或接口上包含 MTU 值。
存储、存储管理、内部 API 和租户网络都可从巨型帧中受益。
您可以在 jinja2 模板或 network_data.yaml 文件中更改 mtu 的值。如果您在 network_data.yaml 文件中设置值,它会在部署过程中渲染。
路由器通常无法在第 3 层边界之间转发巨型帧。为避免连接问题,请不要更改 Provisioning 接口、外部接口和任何浮动 IP 接口的默认 MTU。
10.5.5. 配置 ML2/OVN 北向路径 MTU 发现,以实现巨型帧碎片 复制链接链接已复制到粘贴板!
如果您的内部网络上的虚拟机将巨型帧发送到外部网络,并且内部网络的最大传输单元(MTU)超过外部网络的 MTU,则北向帧可以轻松地超过外部网络的容量。
ML2/OVS 会自动处理通过大小的数据包问题,ML2/OVN 会自动处理它用于 TCP 数据包。
但是,为了确保在使用 ML2/OVN 机制驱动程序的部署中正确处理过度北向 UDP 数据包,您需要执行额外的配置步骤。
这些步骤将 ML2/OVN 路由器配置为将 ICMP"碎片处理所需的"数据包返回到发送虚拟机,其中发送应用可以将有效负载分成较小的数据包。
在 east/west 流量中,RHOSP ML2/OVN 部署不支持大于 east/west 路径上最小 MTU 的数据包碎片。例如:
- VM1 位于 Network1 上,其 MTU 为 1300。
- VM2 位于 Network2 上,其 MTU 为 1200。
在 VM1 和 VM2 之间带有大小为 1171 或不成功的一个 ping。大于 1171 的 ping 会导致数据包丢失百分比。
由于没有客户的具体要求,红帽还没有计划提供对它的支持。
流程
在 ml2_conf.ini 的 [ovn] 部分中设置以下值:
ovn_emit_need_to_frag = True
ovn_emit_need_to_frag = TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5.6. 在中继接口上配置原生 VLAN 复制链接链接已复制到粘贴板!
如果中继接口或绑定在原生 VLAN 上有网络,则该 IP 地址直接分配给网桥,且没有 VLAN 接口。
以下示例配置了一个绑定接口,其中 External 网络位于原生 VLAN 中:
当您将地址或路由语句移到网桥时,从网桥中删除对应的 VLAN 接口。对所有适用的角色进行更改。外部网络仅位于控制器上,因此只有控制器模板需要更改。Storage 网络会附加到所有角色,因此如果存储网络位于默认的 VLAN 上,则所有角色都需要修改。
10.5.7. 增加 netfilter 跟踪的最大连接数 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP)网络服务(neutron)使用 netfilter 连接跟踪来构建有状态的防火墙,并在虚拟网络上提供网络地址转换(NAT)。有些情况下,可能会导致内核空间达到最大连接限制,并导致错误,如 nf_conntrack: 表 full、丢弃数据包。您可以增加连接跟踪(conntrack)的限制,并避免这些类型的错误。您可以在 RHOSP 部署中为一个或多个角色或所有节点增加 conntrack 限制。
先决条件
- RHOSP undercloud 安装成功。
流程
-
以
stack用户身份登录 undercloud 主机。 提供 undercloud 凭证文件:
source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建自定义 YAML 环境文件。
示例
vi /home/stack/templates/custom-environment.yaml
$ vi /home/stack/templates/custom-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您的环境文件必须包含 keyword
参数_defaults和ExtraSysctlSettings。为 netfilter 可在变量net.nf_conntrack_max中跟踪的最大连接数输入新值。示例
在本例中,您可以在 RHOSP 部署中的所有主机中设置 conntrack 限制:
parameter_defaults: ExtraSysctlSettings: net.nf_conntrack_max: value: 500000parameter_defaults: ExtraSysctlSettings: net.nf_conntrack_max: value: 500000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 &
lt;role>Parameter参数为特定角色设置 conntrack 限制:parameter_defaults: <role>Parameters: ExtraSysctlSettings: net.nf_conntrack_max: value: <simultaneous_connections>parameter_defaults: <role>Parameters: ExtraSysctlSettings: net.nf_conntrack_max: value: <simultaneous_connections>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<role> 替换为角色的名称。例如,使用
ControllerParameters为 Controller 角色设置 conntrack 限制,或使用ComputeParameters为 Compute 角色设置 conntrack 限制。将
<simultaneous_connections> 替换为您要允许的同时连接的数量。示例
在本例中,您只能为 RHOSP 部署中的 Controller 角色设置 conntrack 限制:
parameter_defaults: ControllerParameters: ExtraSysctlSettings: net.nf_conntrack_max: value: 500000parameter_defaults: ControllerParameters: ExtraSysctlSettings: net.nf_conntrack_max: value: 500000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意net.nf_conntrack_max的默认值为500000连接。最大值为:4294967295。
运行部署命令,并包括核心 heat 模板、环境文件和新的自定义环境文件。
重要环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。
示例
openstack overcloud deploy --templates \ -e /home/stack/templates/custom-environment.yaml
$ openstack overcloud deploy --templates \ -e /home/stack/templates/custom-environment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow