第 8 章 为 Red Hat OpenStack Platform 环境自定义网络
您可以为 Red Hat OpenStack Platform (RHOSP)环境自定义 undercloud 和 overcloud 物理网络。
8.1. 自定义 undercloud 网络
您可以自定义 undercloud 网络配置,以使用特定的网络功能安装 undercloud。如果您有 IPv6 节点和基础架构,您还可以将 undercloud 和 provisioning 网络配置为使用 IPv6 而不是 IPv4。
8.1.1. 配置 undercloud 网络接口
在 undercloud.conf
文件中包含自定义网络配置,以使用特定的网络功能安装 undercloud。例如,一些接口可能没有 DHCP。在这种情况下,您必须在 undercloud.conf
文件中禁用这些接口的 DHCP,以便 os-net-config
可在 undercloud 安装过程中应用配置。
步骤
- 登录 undercloud 主机。
创建新文件
undercloud-os-net-config.yaml
,并包含所需的网络配置。在
addresses
部分中,包含local_ip
,如172.20.0.1/26
。如果在 undercloud 中启用了 TLS,还必须包含undercloud_public_host
,如172.20.0.2/32
和undercloud_admin_host
,如172.20.0.3/32
。下面是一个示例:
network_config: - name: br-ctlplane type: ovs_bridge use_dhcp: false dns_servers: - 192.168.122.1 domain: lab.example.com ovs_extra: - "br-set-external-id br-ctlplane bridge-id br-ctlplane" addresses: - ip_netmask: 172.20.0.1/26 - ip_netmask: 172.20.0.2/32 - ip_netmask: 172.20.0.3/32 members: - type: interface name: nic2
要为特定接口创建网络绑定,请使用以下示例:
network_config: - name: br-ctlplane type: ovs_bridge use_dhcp: false dns_servers: - 192.168.122.1 domain: lab.example.com ovs_extra: - "br-set-external-id br-ctlplane bridge-id br-ctlplane" addresses: - ip_netmask: 172.20.0.1/26 - ip_netmask: 172.20.0.2/32 - ip_netmask: 172.20.0.3/32 members: - name: bond-ctlplane type: linux_bond use_dhcp: false bonding_options: "mode=active-backup" mtu: 1500 members: - type: interface name: nic2 - type: interface name: nic3
将
undercloud-os-net-config.yaml
文件的路径包含在undercloud.conf
文件的net_config_override
参数中:[DEFAULT] ... net_config_override=undercloud-os-net-config.yaml ...
注意director 使用您在
net_config_override
参数中包含的文件作为模板来生成/etc/os-net-config/config.yaml
文件。os-net-config
管理您在模板中定义的接口,因此您必须在此文件中执行所有 undercloud 网络接口自定义。- 安装 undercloud。
验证
在 undercloud 安装成功完成后,验证
/etc/os-net-net-config/config.yaml
文件是否包含相关配置:network_config: - name: br-ctlplane type: ovs_bridge use_dhcp: false dns_servers: - 192.168.122.1 domain: lab.example.com ovs_extra: - "br-set-external-id br-ctlplane bridge-id br-ctlplane" addresses: - ip_netmask: 172.20.0.1/26 - ip_netmask: 172.20.0.2/32 - ip_netmask: 172.20.0.3/32 members: - type: interface name: nic2
8.1.2. 为使用 IPv6 的裸机置备配置 undercloud
如果有使用 IPv6 的节点和基础架构,您可以将 undercloud 和置备网络配置为使用 IPv6 而不是 IPv4,以便 director 能够在 IPv6 节点上置备和部署 Red Hat OpenStack Platform。但是,有一些注意事项:
- 双堆栈 IPv4/6 不可用。
- Tempest 验证可能无法正确执行。
- 在升级过程中,无法进行 IPv4 到 IPv6 的迁移。
修改 undercloud.conf
文件,以便在 Red Hat OpenStack Platform 中启用 IPv6 置备。
先决条件
- undercloud 上的 IPv6 地址。如需更多信息,请参阅 Overcloud 的 IPv6 网络指南中的在 undercloud 上配置 IPv6 地址。
流程
-
打开
undercloud.conf
文件。 将 IPv6 地址模式指定为 stateless 或 stateful :
[DEFAULT] ipv6_address_mode = <address_mode> ...
-
根据 NIC 支持的模式,将 <
address_mode
> 替换为dhcpv6-stateless
或dhcpv6-stateful
。
注意当您使用有状态地址模式时,固件、链加载程序和操作系统可能会使用不同的算法来生成 DHCP 服务器跟踪的 ID。DHCPv6 不会通过 MAC 跟踪地址,如果请求者的标识符值改变但 MAC 地址保持不变,则不会提供相同的地址。因此,当您使用有状态 DHCPv6 时,还必须完成下一步来配置网络接口。
-
根据 NIC 支持的模式,将 <
如果您将 undercloud 配置为使用有状态 DHCPv6,请指定用于裸机节点的网络接口:
[DEFAULT] ipv6_address_mode = dhcpv6-stateful ironic_enabled_network_interfaces = neutron,flat ...
为裸机节点设置默认网络接口:
[DEFAULT] ... ironic_default_network_interface = neutron ...
指定 undercloud 是否应该在 provisioning 网络中创建一个路由器:
[DEFAULT] ... enable_routed_networks: <true/false> ...
-
将
<true/false>
替换为true
来启用路由网络,并防止 undercloud 在置备网络上创建路由器。为true
时,数据中心路由器必须提供路由器公告。 -
将
<true/false>
替换为false
来禁用路由网络,并在 provisioning 网络中创建一个路由器。
-
将
配置本地 IP 地址,以及通过 SSL/TLS 的 director Admin API 和公共 API 端点的 IP 地址:
[DEFAULT] ... local_ip = <ipv6_address> undercloud_admin_host = <ipv6_address> undercloud_public_host = <ipv6_address> ...
-
将
<ipv6_address
> 替换为 undercloud 的 IPv6 地址。
-
将
可选:配置 director 用来管理实例的 provisioning 网络:
[ctlplane-subnet] cidr = <ipv6_address>/<ipv6_prefix> ...
-
将
<ipv6_address
> 替换为在没有使用默认 provisioning 网络时用于管理实例的网络的 IPv6 地址。 -
在不使用默认置备网络时,将 <
ipv6_prefix
> 替换为网络的 IP 地址前缀,用于管理实例。
-
将
为置备节点配置 DHCP 分配范围:
[ctlplane-subnet] cidr = <ipv6_address>/<ipv6_prefix> dhcp_start = <ipv6_address_dhcp_start> dhcp_end = <ipv6_address_dhcp_end> ...
-
将
<ipv6_address_dhcp_start
> 替换为用于 overcloud 节点的网络范围的 IPv6 地址。 -
将
<ipv6_address_dhcp_end
> 替换为用于 overcloud 节点的网络范围末尾的 IPv6 地址。
-
将
可选:配置将流量转发到外部网络的网关:
[ctlplane-subnet] cidr = <ipv6_address>/<ipv6_prefix> dhcp_start = <ipv6_address_dhcp_start> dhcp_end = <ipv6_address_dhcp_end> gateway = <ipv6_gateway_address> ...
-
在不使用默认网关时,将
<ipv6_gateway_address>
替换为网关的 IPv6 地址。
-
在不使用默认网关时,将
将 DHCP 范围配置为在检查过程中使用:
[ctlplane-subnet] cidr = <ipv6_address>/<ipv6_prefix> dhcp_start = <ipv6_address_dhcp_start> dhcp_end = <ipv6_address_dhcp_end> gateway = <ipv6_gateway_address> inspection_iprange = <ipv6_address_inspection_start>,<ipv6_address_inspection_end> ...
-
将 <
ipv6_address_inspection_
start> 替换为在检查过程中要使用的网络范围的 IPv6 地址。 -
将 <
ipv6_address_inspection_
end> 替换为在检查过程中要使用的网络范围末尾的 IPv6 地址。
注意这个范围不得与
dhcp_start
和dhcp_end
定义的范围重叠,但必须位于同一 IP 子网。-
将 <
为子网配置 IPv6 名称服务器:
[ctlplane-subnet] cidr = <ipv6_address>/<ipv6_prefix> dhcp_start = <ipv6_address_dhcp_start> dhcp_end = <ipv6_address_dhcp_end> gateway = <ipv6_gateway_address> inspection_iprange = <ipv6_address_inspection_start>,<ipv6_address_inspection_end> dns_nameservers = <ipv6_dns>
-
将
<ipv6_dns>
替换为特定于子网的 DNS 名称服务器。
-
将
-
使用
virt-customize
工具修改 overcloud 镜像,以禁用cloud-init
网络配置。有关更多信息,请参阅红帽知识库解决方案 使用 virt-customize 修改 Red Hat Linux OpenStack Platform Overcloud 镜像。