neutron: adds elements regardings neutron dhcp agent az aware

Change-Id: Ife47a45740c35e431a3d72709f6a91fce4c9dab7
Signed-off-by: Sahid Orentino Ferdjaoui <sahid.ferdjaoui@industrialdiscipline.com>
This commit is contained in:
Sahid Orentino Ferdjaoui 2024-02-01 12:18:00 +01:00
parent af1088c468
commit 884a0b7749
3 changed files with 96 additions and 0 deletions

View File

@ -10,6 +10,7 @@ Contents:
rabbitmq
database
other
neutron
---------
Configure
@ -25,6 +26,7 @@ Once your cluster is properly configured to handle scale, you can go to the seco
Resources
---------
* :doc:`Large Scale Configuration guidelines for Neutron </journey/configure/neutron>`
* :doc:`Large Scale Configuration guidelines for RabbitMQ </journey/configure/rabbitmq>`
* :doc:`Large Scale Configuration guidelines for Database </journey/configure/database>`
* :doc:`Large Scale Configuration guidelines (other/extra) </journey/configure/other>`

View File

@ -0,0 +1,28 @@
=======
Neutron
=======
Contents:
.. toctree::
:maxdepth: 1
neutron/neutron-dhcp-agents-azaware
Introduction
------------
This document gathers information and references regarding large-scale
configuration for Neutron.
Neutron Agents
--------------
* :doc:`Neutron DHCP Agents AZ Awareness </journey/configure/neutron/neutron-dhcp-agents-azaware>`
Stories
-------
* :doc:`Various latency issues from Société Générale </stories/2023-10-06>`

View File

@ -0,0 +1,66 @@
Neutron DHCP Agents Availability Zone Awareness
===============================================
In large deployments requiring High Availability, it is crucial to ensure
that the network agents and in particular for this document, the DHCP
agent, run on different Availability Zones.
Nova AZ is not Neutron AZ
-------------------------
Logically, an AZ is the same concept between Nova and Neutron, but
functionally, they do not have any relation. This means that when you
define AZ in Nova, it does not impact Neutron.
By default, the `BaseWeightScheduler` schedules networks on DHCP
Agents independently of the related AZ. Even if you set AZ hints for a
network, the scheduler will select agents with the fewest networks to
handle to fulfill the `dhcp_agents_per_network` requirement.
For example, if you configure `dhcp_agents_per_network = 2` and deploy
2 agents in AZ1 and 2 agents in AZ2, the scheduler may schedule the
first network (net1) on both DHCP agents in AZ1 and the second network
on those in AZ2.
This situation is not desirable, as if something goes wrong in AZ1,
network net1 can be unreachable.
AZAwareWeightScheduler
----------------------
Neutron provides a solution to make the scheduler comprehend AZs
better. To achieve this, configure Neutron to use
`AZAwareWeightScheduler`.
.. code-block:: ini
network_scheduler_driver = neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler
dhcp_load_type = networks
Now, the scheduler understands AZs.
The next step is to ensure that all networks are scheduled on both
AZs. Set the default_availability_zones to include both AZs.
.. code-block:: ini
default_availability_zones = AZ1, AZ2
It is also possible to add more granularity for a network by setting
hints:
For example, if you want a network to be scheduled in a specific zone,
say AZ3:
.. code-block:: bash
openstack network create --availability-zone-hint AZ3
Conclusion
-----------
In conclusion, configuring Neutron to be AZ-aware for its agents,
particularly the DHCP agent in the context of this document, is
relatively straightforward. It requires minimal and non-excessive
changes, yet it can significantly elevate your environment to a higher
level of robustness and High Availability.