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 24885822e1
2 changed files with 67 additions and 0 deletions

View File

@ -28,6 +28,7 @@ Resources
* :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>`
* :doc:`Neutron DHCP Agent AZ Awareness </journey/configure/neutrondhcpagentsazaware>`
External resources

View File

@ -0,0 +1,66 @@
Neutron 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.