[OVN] Split NeutronWorkers and NeutronMetadataWorkers for OVN

Prior to this patch, the OVN metadata reused the NeutronWorkers
configuration to set the number workers it should spawn. This is not
ideal for OVN metadata because it works differently than the OVS
metadata agent, for example:

1) The OVN metadata workers are deployed onto the compute nodes and not
   on the controllers/gateways as the OVS ones are. This means it's
   better distributed.

2) Even tho we could have multiple workers, the OVN SB IDL in the OVN
   metadata agents acquires a lock while listening to OVSDB events.
   Therefore, even tho we could have dozens of agents only one of them
   is listening to the events.

3) Instantiating IDLs means maintaining in-memory replicas of the
   OVSDB (or, the tables of that DB that is being watched). This puts a
   burden on OVSDBs to maintain all these replicas updated, reducing
   this number workers also reduces the burden on the OVSDBs.

With this patch, we are adding a new configuration called
NeutronMetadataWorkers so that we can set different values for the API
workers and the metadata workers in a OVN deployment.

Change-Id: I5f0151d70977b3fdbf04c41ffb224f364a027e5c
Signed-off-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
This commit is contained in:
Lucas Alvares Gomes 2020-02-12 10:46:26 +00:00
parent 0599bc2f12
commit 33843c49ff
3 changed files with 16 additions and 6 deletions

View File

@ -69,11 +69,11 @@ parameters:
description: Shared secret to prevent spoofing
type: string
hidden: true
NeutronWorkers:
NeutronMetadataWorkers:
default: ''
description: |
Sets the number of worker processes for the neutron metadata agent. The
default value results in the configuration being left unset and a
Sets the number of worker processes for the neutron OVN metadata agent.
The default value results in the configuration being left unset and a
system-dependent default will be chosen (usually the number of
processors). Please note that this can result in a large number of
processes and memory consumption on systems with a large core count. On
@ -128,7 +128,7 @@ conditions:
docker_enabled: {equals: [{get_param: ContainerCli}, 'docker']}
service_debug_unset: {equals : [{get_param: OVNWrapperDebug}, false]}
internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
neutron_workers_unset: {equals : [{get_param: NeutronWorkers}, '']}
neutron_metadata_workers_unset: {equals : [{get_param: NeutronMetadataWorkers}, '']}
resources:
@ -189,9 +189,9 @@ outputs:
- 'http'
-
if:
- neutron_workers_unset
- neutron_metadata_workers_unset
- {}
- neutron::agents::ovn_metadata::metadata_workers: {get_param: NeutronWorkers}
- neutron::agents::ovn_metadata::metadata_workers: {get_param: NeutronMetadataWorkers}
- if:
- internal_tls_enabled
- tripleo::profile::base::neutron::ovn_metadata::ovn_sb_ca_cert: {get_param: InternalTLSCAFile}

View File

@ -5,6 +5,7 @@ parameter_defaults:
HeatWorkers: 1
KeystoneWorkers: 1
NeutronWorkers: 1
NeutronMetadataWorkers: 1
NovaWorkers: 1
NovaSchedulerWorkers: 1
SaharaWorkers: 1

View File

@ -0,0 +1,9 @@
---
upgrade:
- |
Adds a new parameter ``NeutronMetadataWorkers`` for OVN. This
parameters allows users to configure the number of OVN metadata
workers separately from the value of ``NeutronWorkers``. The OVN
metadata workers are deployed onto the compute nodes and not on the
controllers/gateways as the OVS ones.