Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1694224

Summary: [Docs][RFE] Document Setting Neutron AZ and number of DHCP agents for compute nodes
Product: Red Hat OpenStack Reporter: Dan Sneddon <dsneddon>
Component: documentationAssignee: Stephen Finucane <stephenfin>
Status: CLOSED EOL QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 13.0 (Queens)CC: bdobreli, broskos, cfields, joflynn, mariel, rheslop, sputhenp
Target Milestone: ---Keywords: Documentation, FutureFeature
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-09-13 15:00:07 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Dan Sneddon 2019-03-29 20:02:23 UTC
Description of problem:
When using OSP 13 DCN, the compute nodes in each site are attached to provider networks in the site in order to be autonomous. There should not be any dependencies on the central site for networking (apart from the Neutron DB). In order to do this, the compute nodes in each site must be configured to be in a unique Neutron Autonomous Zone. Additionally, the number of redundant DHCP agents in each AZ needs to be set in Neutron. Then, Neutron will automatically schedule the DHCP agents across available computes.

We need to document how to deploy with this configuration using OSP-Director.

Version-Release number of selected component (if applicable):
OSP 13 DCN

Actual results:
This procedure is not documented.

Expected results:
This procedure should be documented.

Additional info:
One entry that need to be made are in neutron.conf on the compute nodes, where the availability_zone is set:
https://review.openstack.org/#/c/183369/40/etc/neutron.conf

On the controller, the router scheduler needs to be changed:
network_scheduler_driver = neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler

The dhcp_load_type should be unset or set to the default of "networks" on the controller:
dhcp_load_type = networks

The dhcp_agents_per_network should be set to a value of 2 or higher for redundancy:
dhcp_agents_per_network = 3

It isn't clear how these parameters should be set. There do not appear to be TripleO parameters to set these values in TripleO Heat Templates.

Comment 7 Chris Fields 2021-04-28 14:03:02 UTC
There is an upstream doc that explains these Neutron AZ settings very well: https://docs.openstack.org/mitaka/networking-guide/config-az.html

Customers can find the TripleO parameters for these settings in a number of ways.  One is to export the Overcloud plan and then search for them:

[stack@undercloud-0 plan]$ grep -r --include="*" availability_zone ./deployment/neutron  -A 1
./deployment/neutron/neutron-api-container-puppet.yaml:              neutron::server::default_availability_zones:
./deployment/neutron/neutron-api-container-puppet.yaml-                {get_param: NeutronDefaultAvailabilityZones}
--
./deployment/neutron/neutron-dhcp-container-puppet.yaml:       - neutron::agents::dhcp::availability_zone: {get_param: NeutronDhcpAgentAvailabilityZone}
--
./deployment/neutron/neutron-l3-container-puppet.yaml:            - neutron::agents::l3::availability_zone: {get_param: NeutronL3AgentAvailabilityZone}

[stack@undercloud-0 plan]$ grep -R  --include="*" dhcp_agents_per_network  .
./deployment/neutron/neutron-base.yaml:            - tripleo::profile::base::neutron::dhcp_agents_per_network: {get_param: NeutronDhcpAgentsPerNetwork}

Of these TripleO parameters (NeutronDefaultAvailabilityZones, NeutronDhcpAgentAvailabilityZone,NeutronL3AgentAvailabilityZone, NeutronDhcpAgentsPerNetwork), the first and last are described here: https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/16.1/html-single/overcloud_parameters/index.   

Where there are no explicit TripleO parameters: 
 
[stack@undercloud-0 plan]$ grep -R  --include="*" network_scheduler_driver   .
./deployment/neutron/neutron-api-container-puppet.yaml:              neutron::server::network_scheduler_driver: 

[stack@undercloud-0 plan]$ grep -R  --include="*" router_scheduler_driver   .
./deployment/neutron/neutron-api-container-puppet.yaml:              neutron::server::router_scheduler_driver:

Set like this in templates: 

parameter_defaults: 
  ControllerExtraConfig:
    neutron::server::network_scheduler_driver: <value> 
    neutron::server::router_scheduler_driver: <value>