7.2. 将计算服务到 RHOSO 数据平面
将您的 Compute (nova)服务纳入 OpenShift (RHOSO)数据平面上的 Red Hat OpenStack 服务。
先决条件
- 您已在 Compute 服务(nova)主机上停止剩余的 control plane 节点、存储库和软件包。如需更多信息,请参阅 停止基础架构管理和计算服务。
-
您已为
NovaLibvirt
服务配置了 Ceph 后端。有关更多信息 ,请参阅配置 Ceph 后端。 您已配置了 IP 地址管理(IPAM):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果在 Compute 服务节点上运行
neutron-sriov-nic-agent
,请确保物理设备映射与OpenStackDataPlaneNodeSet
自定义资源(CR)中定义的值匹配。如需更多信息,请参阅从 director Operator 部署中提取配置。 您已定义 shell 变量来运行运行升级的脚本:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 源云
默认单元
在采用后获取目标云上的新的DEFAULT_CELL_NAME
。在多单元采用场景中,您可以通过提供源云中最后单元的索引来保留原始名称、默认
或 创建新单元默认名称。例如,如果最后一个单元的递增索引是cell5
,新的单元默认名称是cell6
。 - 2
- 对于每个单元,使用连接到
ctlplane
和internalapi
网络的 Compute 服务节点的名称和 IP地址更新 <["standalone.localdomain"]="x
.x.x">值以及COMPUTES_CELL<X
> 值。不要为每个网络指定一个真实的 FQDN。始终对 Compute 节点的每个连接的网络使用相同的主机名。根据需要,提供源云其余网络上的 IP 地址和主机名称。或者,您可以手动调整在此流程的第 9 步中生成的文件。 - 3
- 如果您的部署有自定义 DNS 域,请在节点的 FQDN 值中指定它。此值用于 data plane 节点设置
spec.nodes.<NODE NAME>.hostName
。 - 4
- 将源云
单元1单元
中的所有 Compute 服务节点分配给COMPUTES_CELL1
,以此类推。将<compute1&
gt; , <compute
2> , 和 <compute3
> 替换为 Compute 服务节点的名称。 - 5
- 将源云
默认单元
中的所有 Compute 服务节点分配给COMPUTES_CELL<X>
和COMPUTES_API_CELL<X>'
,其中<X
> 是DEFAULT_CELL_NAME
环境变量值。在本例中,DEFAULT_CELL_NAME
环境变量值等于cell3
。 - 6
- 对于每个单元,使用连接到
ctlplane
和internalapi
网络的 Compute 服务节点的 name 和COMPUTES_API_CELL
值更新 <["standalone.localdomain"]="192.168.122.100
">值以及 COMPUTES_API_CELL 值。不要为每个网络指定一个真实的 FQDN。为每个连接的网络使用相同的主机名。根据需要,提供源云其余网络上的 IP 地址和主机名称。或者,您可以手动调整在此流程的第 9 步中生成的文件。 - 7
- 此模板中省略了不包含 Compute 节点的单元,因为没有为单元创建节点集。
注意如果您使用
默认单元
部署源云,并希望在采用过程中重命名它,请定义您要使用的新名称,如下例所示:DEFAULT_CELL_NAME="cell1" RENAMED_CELLS="cell1"
$ DEFAULT_CELL_NAME="cell1" $ RENAMED_CELLS="cell1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果本地存储后端由 libvirt 的 Compute 服务配置,则不要为 CEPH_FSID
参数设置值。存储后端必须与源云存储后端匹配。您不能在采用过程中更改存储后端。
流程
为 data plane 节点创建 SSH 身份验证 secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<path_to_SSH_key
> 替换为 SSH 密钥的路径。
-
将
生成 ssh 密钥对
nova-migration-ssh-key
secret:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果启用了 TLS Everywhere,将
LIBVIRT_PASSWORD
设置为与现有的 RHOSP 部署密码匹配:declare -A TRIPLEO_PASSWORDS TRIPLEO_PASSWORDS[default]="$HOME/overcloud-passwords.yaml" LIBVIRT_PASSWORD=$(cat ${TRIPLEO_PASSWORDS[default]} | grep ' LibvirtTLSPassword:' | awk -F ': ' '{ print $2; }') LIBVIRT_PASSWORD_BASE64=$(echo -n "$LIBVIRT_PASSWORD" | base64)
declare -A TRIPLEO_PASSWORDS TRIPLEO_PASSWORDS[default]="$HOME/overcloud-passwords.yaml" LIBVIRT_PASSWORD=$(cat ${TRIPLEO_PASSWORDS[default]} | grep ' LibvirtTLSPassword:' | awk -F ': ' '{ print $2; }') LIBVIRT_PASSWORD_BASE64=$(echo -n "$LIBVIRT_PASSWORD" | base64)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 TLS-e 时创建 libvirt-secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个配置映射,用于所有单元来为 libvirt 配置本地存储后端:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您采用 live 云,您可能需要执行存储在 cell1 默认
nova
-extra-confignova
的cell1
默认nova-extra-config
配置映射中的现有配置。覆盖配置可能会破坏依赖于nova-extra-config
配置映射特定内容的数据位置服务。为 libvirt 配置 Red Hat Ceph Storage 后端:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于带有多单元配置的 Red Hat Ceph Storage 环境,您必须命名配置映射和 Red Hat OpenStack Platform 数据平面服务,如下例所示:
nova-custom-ceph-cellX
和nova-compute-extraconfig-cellX
。为 Compute 服务单元创建 data plane 服务以启用预升级临时解决方案,并为您选择的存储后端配置 Compute 服务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果启用了 TLS Everywhere,请将以下内容附加到
OpenStackDataPlaneService
CR 中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 要为 cell<X> 启用本地元数据服务,请附加
spec.dataSources.secretRef
来引用额外的自动生成的nova-cell<X>-metadata-neutron-config
secret。您还应该在OpenStackControlPlane/openstack
CR 中设置spec.nova.template.cellTemplates.cell<X>.metadataServiceTemplate.enable
,如 Adopt ing the Compute 服务 中所述。您可以配置单个顶级元数据,或者定义每个单元的元数据。 - 2
- 每个单元格的 secret
nova-cell<X>-compute-config
auto-generates。 - 3
- 您必须为每个与 Compute 服务相关的自定义
OpenStackDataPlaneService
CR 附加nova-cell<X>-compute-config
和nova-migration-ssh-key
引用。
注意为 Compute 服务单元创建数据平面服务时,请查看以下注意事项:
-
在本例中,相同的
nova-migration-ssh-key
键在单元格之间共享。但是,您应该对不同的单元使用不同的键。 -
对于简单的配置覆盖,您不需要自定义数据平面服务。但是,要重新配置单元
cell1
,st 选项是创建自定义服务和专用配置映射。 -
单元
cell1
已使用名为nova
及其nova-extra-config
配置映射的默认OpenStackDataPlaneService
CR 管理。不要更改默认的 data plane 服务nova
定义。当使用 OLM 更新 RHOSO Operator 时,这些更改将会丢失。 -
当单元跨越多个节点集时,为自定义
OpenStackDataPlaneService
资源提供与节点集合相关的名称,如nova-cell1-nfv
和nova-cell1-enterprise
。然后,自动生成的配置映射命名为nova-cell1-nfv-extra-config
和nova-cell1-enterprise-extra-config
。 - 也支持同一单元的多个节点集合中节点的不同配置,但本指南中不阐述。
为订阅管理器创建 secret:
oc create secret generic subscription-manager \ --from-literal rhc_auth='{"login": {"username": "<subscription_manager_username>", "password": "<subscription_manager_password>"}}'
$ oc create secret generic subscription-manager \ --from-literal rhc_auth='{"login": {"username": "<subscription_manager_username>", "password": "<subscription_manager_password>"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<subscription_manager_username&
gt; 替换为适用的用户名。 -
将
<subscription_manager_password&
gt; 替换为适用的密码。
-
将
为 Red Hat registry 创建 secret:
oc create secret generic redhat-registry \ --from-literal edpm_container_registry_logins='{"registry.redhat.io": {"<registry_username>": "<registry_password>"}}'
$ oc create secret generic redhat-registry \ --from-literal edpm_container_registry_logins='{"registry.redhat.io": {"<registry_username>": "<registry_password>"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<registry_username&
gt; 替换为适用的用户名。 将
<registry_password&
gt; 替换为适用的密码。注意您不需要在
OpenStackDataPlaneService
CR 的dataSources
字段中引用subscription-manager
secret。secret 已通过nodeTemplate
字段中ansibleVarsFrom
属性中的特定于节点的OpenStackDataPlaneNodeSet
CR 传递。
-
将
为每个单元创建 data plane 节点设置定义:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果您的部署有一个自定义 DNS 域,请指定节点的 FQDN。
- 2
- 网络组成必须与源云配置匹配,以避免数据平面连接停机时间。
ctlplane
网络必须首先出现。命令仅保留ctlplane
和internalapi
网络上的主机的 IP 地址。对其他隔离网络重复此步骤,或者手动更新生成的文件。 - 3
- 使用节点集名称,如
openstack-cell1、
openstack-cell2
。仅为包含 Compute 节点的单元创建节点集。 - 4
- 如果启用了 TLS Everywhere,请将
tlsEnabled
更改为true
。 - 5
- 如果没有使用 telemetry 服务,请从 services 列表中省略它。
- 6
- 网桥名称和其他 OVN 和网络服务特定值必须与源云配置匹配,以避免数据平面连接停机时间。
- 7
- 将
<bridge_mappings
> 替换为您的配置中网桥映射的值,如"datacentre:br-ctlplane
"。 - 8
- 要配置巨页,将 <
;size
> 替换为页面的大小。要配置多大小巨页,请在列表中创建更多项目。请注意,挂载点必须与源云配置匹配。
注意在采用前,请确保在 Compute 服务节点中使用的
OpenStackDataPlaneNodeSet
CR 中使用相同的ovn-controller
设置。此配置存储在 Open vSwitch 数据库的Open_vSwitch
表中的external_ids
列中:ovs-vsctl list Open .
$ ovs-vsctl list Open . ... external_ids : {hostname=standalone.localdomain, ovn-bridge=br-int, ovn-bridge-mappings=<bridge_mappings>, ovn-chassis-mac-mappings="datacentre:1e:0a:bb:e6:7c:ad", ovn-encap-ip="172.19.0.100", ovn-encap-tos="0", ovn-encap-type=geneve, ovn-match-northd-version=False, ovn-monitor-all=True, ovn-ofctrl-wait-before-clear="8000", ovn-openflow-probe-interval="60", ovn-remote="tcp:ovsdbserver-sb.openstack.svc:6642", ovn-remote-probe-interval="60000", rundir="/var/run/openvswitch", system-id="2eec68e6-aa21-4c95-a868-31aeafc11736"} ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为每个 Compute 单元部署
OpenStackDataPlaneNodeSet
CR:for CELL in $(echo $RENAMED_CELLS); do test -f nodeset-${CELL}.yaml || continue $ oc apply -f nodeset-${CELL}.yaml done
$ for CELL in $(echo $RENAMED_CELLS); do test -f nodeset-${CELL}.yaml || continue $ oc apply -f nodeset-${CELL}.yaml done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果将 Red Hat Ceph Storage 后端用于块存储服务(cinder),请准备采用的 data plane 工作负载:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意确保使用与原始
OpenStackDataPlaneNodeSet
CR 相同的服务列表,但ceph-client
和ceph-hci-pre
服务除外。可选:在
OpenStackDataPlaneNodeSet
CR 中启用neutron-sriov-nic-agent
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:在
OpenStackDataPlaneNodeSet
CR 中启用neutron-dhcp
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要将
neutron-dhcp
与 OVN 用于裸机置备服务(ironic),您必须将 Networking 服务(neutron)的disable_ovn_dhcp_for_baremetal_ports
配置选项设为true
。您可以在NeutronAPI
spec 中设置此配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 pre-adoption 验证:
创建验证服务:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建仅运行验证的
OpenStackDataPlaneDeployment
CR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果您为不同的
OpenStackDataPlaneService
CR 创建不同的迁移 SSH 密钥,则也应该为代表单元的每个节点设置或节点集定义一个单独的OpenStackDataPlaneDeployment
CR。验证完成后,确认 Ansible EE pod 的状态为
Completed
:watch oc get pod -l app=openstackansibleee
$ watch oc get pod -l app=openstackansibleee
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -l app=openstackansibleee -f --max-log-requests 20
$ oc logs -l app=openstackansibleee -f --max-log-requests 20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待部署变为
Ready
状态:oc wait --for condition=Ready openstackdataplanedeployment/openstack-pre-adoption --timeout=10m
$ oc wait --for condition=Ready openstackdataplanedeployment/openstack-pre-adoption --timeout=10m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果任何 openstack-pre-adoption 验证失败,您必须引用 Ansible 日志来确定哪些失败,然后尝试以下故障排除选项:
-
如果主机名验证失败,请检查 data plane 节点的主机名是否在
OpenStackDataPlaneNodeSet
CR 中正确列出。 -
如果内核参数检查失败,请确保
OpenStackDataPlaneNodeSet
CR 中的edpm_kernel_args
和edpm_kernel_hugepages
变量中的内核参数配置与您在 Red Hat OpenStack Platform (RHOSP) 17.1 节点中使用的内核参数配置相同。 -
如果 tuned 配置集检查失败,请确保
OpenStackDataPlaneNodeSet
CR 中的edpm_tuned_profile
变量配置为使用与 RHOSP 17.1 节点上的设置相同的配置集。
-
如果主机名验证失败,请检查 data plane 节点的主机名是否在
删除剩余的 director Operator 服务:
创建
OpenStackDataPlaneService
CR 来清理您正在使用的数据平面服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
OpenStackDataPlaneDeployment
CR 以运行清理:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
完成清理后,部署
OpenStackDataPlaneDeployment
CR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果将其他节点设置为要部署的,如 Networker 节点,您可以在此步骤的
nodeSets
列表中添加它们,或者稍后创建单独的OpenStackDataPlaneDeployment
CR。您不能在部署后将新节点设置为OpenStackDataPlaneDeployment
CR。
验证
确认所有 Ansible EE pod 都到达
Completed
状态:watch oc get pod -l app=openstackansibleee
$ watch oc get pod -l app=openstackansibleee
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -l app=openstackansibleee -f --max-log-requests 20
$ oc logs -l app=openstackansibleee -f --max-log-requests 20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待 data plane 节点设置为
Ready
状态:for CELL in $(echo $RENAMED_CELLS); do $ oc wait --for condition=Ready osdpns/openstack-$CELL --timeout=30m done
$ for CELL in $(echo $RENAMED_CELLS); do $ oc wait --for condition=Ready osdpns/openstack-$CELL --timeout=30m done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Networking 服务(neutron)代理是否正在运行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
从 director Operator 单元控制器中删除所有服务后,您可以取消单元控制器。要创建新的单元 Compute 节点,您可以将分离的控制器重新置备为新的数据平面主机,并将它们添加到对应或新单元的节点集合中。
后续步骤
- 您必须在计算服务上执行快速升级。如需更多信息,请参阅在计算服务上执行快速升级。