For OvS-DPDK deployments, FFU upgrade from newton (OSP10) to queens (OSP13) requires extra care on migrating the templates. Undercloud upgrade procedure does not involve NFV specific cases, so following the documented procedure should be enough. Below sections provides the changes required in addition to the general FFU procedure.
Using Custom Role for OvS-DPDK
This section details the changes required on the templates, when a custom role
is used for OvS-DPDK, instead of the default Compute
role.
Limitation of Newton
In newton, the OvS-DPDK service definition is in
puppet/services/neutron-ovs-dpdk-agent.yaml
file. And in queens, with the
implementation of containers, the containerized version of the OvS-DPDK
service definition has to be used, which is available in file
docker/services/neutron-ovs-dpdk-agent.yaml
.
In newton, the OvS-DPDK service definition file is mapped to the existing
TripleO service registry OS::TripleO::Services::ComputeNeutronOvsAgent
.
As the existing service registry (of regular OvS agent) is used for DPDK, in
order to deploy a cluster with both Compute and ComputeOvsDpdk roles, the
existing environment file environments/neutron-ovs-dpdk.yaml
could not
be used.
Deployer have to create a custom TripleO service registry in the user
environment file. The same registry mapping has to be maintained for the FFU
upgrade and any other options after the upgrade too. The same
roles_data.yaml
file has to be maintained along with user’s defined
OvS-DPDK service registry. A sample user registry environment could look like:
resource_registry:
'OS::TripleO::Services::ComputeNeutronOvsDpdkAgentCustom':
/usr/share/openstack-tripleo-heat-templates/puppet/services/neutron-ovs-dpdk-agent.yaml
In the above user’s environment file, a new registry has been added as
OS::TripleO::Services::ComputeNeutronOvsDpdkAgentCustom
, which has to be
added to the custom role, on which DPDK should be enabled (like
ComputeOvsDpdk
).
Enhancements in Queens
In order to avoid the user registry mapping, in queens, a new TripleO service
registry mapping OS::TripleO::Services::ComputeNeutronOvsDpdk
has been
introduced, which as been added to the new role definitions of ComputeOvsDpdk
and ComputeOvsDpdkSriov. And the container service definition has been added
to the existing environment file, mapped to the new service.
This change is backward in-compatible and it requires upgrades to maintain the
same old service registry, but it requires to update to the containerized
version of the service definition. For FFU upgrades, if the user has used a
custom registry like ComputeNeutronOvsDpdkAgentCustom
, the same environment
file has to be updated like below:
resource_registry:
'OS::TripleO::Services::ComputeNeutronOvsDpdkAgentCustom':
/usr/share/openstack-tripleo-heat-templates/docker/services/neutron-ovs-dpdk-agent.yaml
The name ComputeNeutronOvsDpdkAgentCustom
is used only as an example, the
actual service registry name of the newton deployment has to be used instead,
for a given cluster environment.
Using Compute
Role for OvS-DPDK
This section explains the changes required when OvS-DPDK is enabled on the
existing Compute
role itself.
It is also possible to enable OvS-DPDK on the default Compute
role itself,
by using the provided environment file (neutron-ovs-dpdk.yaml
). In queens,
the same environment file has been updated to the new service registry
definition instead of ComputeNeutronOvsAgent
. So, using the default
roles_data file with this environment file will not enable OvS-DPDK. In order
to fix this, user environment file with the required registry mapping as like
newton has to be added (to the containerized service):
resource_registry:
'OS::TripleO::Services::ComputeNeutronOvsAgent':
/usr/share/openstack-tripleo-heat-templates/docker/services/neutron-ovs-dpdk-agent.yaml
Note: In both the cases, ensure that the
parameter VhostuserSocketGroup
is configured as hugetlbfs
, as it is
mandatory parameter for OvS-DPDK deployment. It has been made as default
parameter to the OvS-DPDK role in queens, refer to the file
/usr/share/openstack-tripleo-heat-templates/roles/ComputeOvsDpdk.yaml
for this parameter. Ensure this parameter is merged accordingly for all
OvS-DPDK roles or globally like below:
parameter_defaults:
VhostuserSocketGroup: hugetlbfs
Kernel Args Configuration
In newton, the kernel args configuration and reboot of the node is achieved
using the first-boot
scripts. In queens, the same has been achieved by using
the host-config-and-reboot.yaml
environment file. During the upgrade, it is
required to maintain the same first-boot
scripts. Adding the new environment
file will result in an additional reboot during the upgrade process. There is
on going work on supporting the new environment for FFU upgrade, until then it
should not be used.
Parameters Changes
Note: Below changes are only for
information. As the first-boot
scripts will be still using the older
parameters, it is not required to change to new parameters during upgrade.
first-boot
scripts will not be used during the upgrades, but after the
upgrade, if there is any scale-up operations, then it will be used. Until the
dependency of first-boot
is removed, this parameter change is not required.
OvS-DPDK parameters defined in newton are deprecated in queens (but it is still supported). Those deprecated parameters has been removed the rocky (OSP14) release. Below are the list of deprecated and their alternatives: