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.
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>