====== APPUNTI SCRITTI NEL MODO MIGLIORE ======
**Da rivedere a più passate**
====== OpenStack con routing Nord/Sud in modalità DVR ======
La chiave del DVR è che il traffico Nord/Sud con floating IP viene gestito direttamente dai compute nodes, mentre il traffico SNAT (senza floating IP) passa ancora attraverso il network node centralizzato.
Questa è una lista di servizi da configurare
* Neutron Server (Controller Node)
* Neutron L3 Agent (Compute Nodes)
* Neutron L3 Agent (Network Node/Controller)
* Neutron Metadata Agent
* Neutron DHCP Agent
* Neutron OVS Agent
===== Architettura OSA =====
Abbiamo optato per una configurazione DVR ibrida (DVR Hybrid Mode) dove:
* Il traffico East-West e il traffico con Floating IP è distribuito sui compute
* Il SNAT per il traffico senza Floating IP è centralizzato sul network node
* Metering Agent: Il servizio di metering permette di monitorare e misurare l'utilizzo della banda per tenant/network
==== Controller Node ====
Il controller node in realtà è un container LXC e ospita in esecuzione i servizi API/RPC di Neutron:
* neutron-server: Espone l'API Neutron, gestisce le richieste degli utenti/servizi
* neutron-rpc-server: Gestisce la comunicazione AMQP/RabbitMQ con gli agent distribuiti (L3, DHCP, OVS, Metadata)
* neutron-periodic-workers segue task schedulati come:
* Cleanup delle risorse orfane
* Sincronizzazione stato
* Health checks periodici
In particolare ''/etc/neutron/neutron.conf'':
# Distributed virtual routing
router_distributed = True
enable_dvr = True
==== Network Node ====
Il network node corrisponde all'host fisico dei controller. Qui sono in esecuzione:
# openstack network agent list --host os-ctrl-1
+--------------------------------------+--------------------+-----------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+-----------+-------------------+-------+-------+---------------------------+
| 129d1377-eb08-4472-ae78-8963238a3adf | L3 agent | os-ctrl-1 | nova | :-) | UP | neutron-l3-agent |
| 6a7d3928-83e4-4733-b8f1-51f6941ab0e3 | DHCP agent | os-ctrl-1 | nova | :-) | UP | neutron-dhcp-agent |
| 6f3b6b48-0ac6-406f-98fc-577549256c3b | Open vSwitch agent | os-ctrl-1 | None | :-) | UP | neutron-openvswitch-agent |
| da35d0e0-f84f-4c81-bad8-db8e2e2cd6f5 | Metadata agent | os-ctrl-1 | None | :-) | UP | neutron-metadata-agent |
| f323441d-e8bb-4229-baa7-cecfce0eb94c | Metering agent | os-ctrl-1 | None | :-) | UP | neutron-metering-agent |
+--------------------------------------+--------------------+-----------+-------------------+-------+-------+---------------------------+
Ovvero:
* neutron-openvswitch-agent.service - OVS Agent
* neutron-dhcp-agent.service - DHCP Agent (centralizzato)
* neutron-l3-agent.service - L3 Agent (modalità legacy per SNAT centralizzato)
* neutron-metadata-agent.service - Metadata Agent (backup/centralizzato)
* neutron-metering-agent.service - Metering Agent (per bandwidth monitoring/accounting)
in ''/etc/neutron/l3_agent.ini''
[DEFAULT]
debug = False
# Drivers
interface_driver = openvswitch
agent_mode = dvr_snat
==== Compute Node ====
Sul ''compute node'' abbiamo:
# openstack network agent list --host os-worker-3
+--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
| 603eaa61-dfb3-4a57-b292-1e8b36359e2d | Metadata agent | os-worker-3 | None | :-) | UP | neutron-metadata-agent |
| a70773c1-9cc0-462c-8510-a284ee17c197 | Open vSwitch agent | os-worker-3 | None | :-) | UP | neutron-openvswitch-agent |
| ed466f61-b3e8-45a2-b0bc-6549d7255449 | L3 agent | os-worker-3 | nova | :-) | UP | neutron-l3-agent |
+--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
* L'agente di routing (L3 Agent) è distribuito su ogni compute node e gestisce il routing Est/Ovest e Nord/Sud per le istanze locali (DVR mode)
* L'agente dei metadati fornisce servizi metadata alle istanze in modalità distribuita
* L'agente Open vSwitch gestisce la configurazione dei virtual switch
'' /etc/neutron/l3_agent.ini''
[DEFAULT]
# Drivers
interface_driver = openvswitch
agent_mode = dvr
===== Comandi esplorativi =====
Per visualizzare lo stato degli agenti registrati:
# openstack network agent list
+--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
| 129d1377-eb08-4472-ae78-8963238a3adf | L3 agent | os-ctrl-1 | nova | :-) | UP | neutron-l3-agent |
| 402cb26e-3362-49bc-850b-65e06c49aa62 | Metadata agent | os-worker-2 | None | :-) | UP | neutron-metadata-agent |
| 5f73dbcc-0dd5-425b-b387-f1836e78e9aa | Open vSwitch agent | os-ctrl-3 | None | :-) | UP | neutron-openvswitch-agent |
| 603eaa61-dfb3-4a57-b292-1e8b36359e2d | Metadata agent | os-worker-3 | None | :-) | UP | neutron-metadata-agent |
| 65456e04-bb6f-4602-8fe6-7e8dac37d2f7 | DHCP agent | os-ctrl-2 | nova | :-) | UP | neutron-dhcp-agent |
| 6681d4d4-b1fa-469e-8565-fb61836a8161 | Open vSwitch agent | os-worker-4 | None | :-) | UP | neutron-openvswitch-agent |
| 6a7d3928-83e4-4733-b8f1-51f6941ab0e3 | DHCP agent | os-ctrl-1 | nova | :-) | UP | neutron-dhcp-agent |
| 6b49877c-8dad-46df-a125-230ccda418ea | Metadata agent | os-worker-4 | None | :-) | UP | neutron-metadata-agent |
| 6f3b6b48-0ac6-406f-98fc-577549256c3b | Open vSwitch agent | os-ctrl-1 | None | :-) | UP | neutron-openvswitch-agent |
| 80063729-2025-4d3a-9d0c-963731dc8e8c | L3 agent | os-worker-2 | nova | :-) | UP | neutron-l3-agent |
| 82deda29-d3f8-43de-a243-0d116425d52a | L3 agent | os-ctrl-2 | nova | :-) | UP | neutron-l3-agent |
| 90768cba-1bda-459f-9350-5a0603e53c45 | DHCP agent | os-ctrl-3 | nova | :-) | UP | neutron-dhcp-agent |
| 94c16b8a-3e0e-41eb-b592-4c10e7e2c50a | Metadata agent | os-ctrl-2 | None | :-) | UP | neutron-metadata-agent |
| 98d4da56-1046-4be8-829e-f6afa0bc9c90 | Open vSwitch agent | os-worker-2 | None | :-) | UP | neutron-openvswitch-agent |
| 9c3c0c49-6a86-4d65-aa9f-8c7c374dc5f0 | Metering agent | os-ctrl-2 | None | :-) | UP | neutron-metering-agent |
| a70773c1-9cc0-462c-8510-a284ee17c197 | Open vSwitch agent | os-worker-3 | None | :-) | UP | neutron-openvswitch-agent |
| b4f7b4c4-ee50-47fb-89f5-361571ff846c | Metadata agent | os-ctrl-3 | None | :-) | UP | neutron-metadata-agent |
| b5e0d5e9-78fc-4480-bf57-3d6e2e7ea04b | Metering agent | os-ctrl-3 | None | :-) | UP | neutron-metering-agent |
| d4c6f8a0-f7fb-41e2-b6da-35e85c9fff60 | L3 agent | os-ctrl-3 | nova | :-) | UP | neutron-l3-agent |
| d7210303-2c7d-4418-9b49-62ede9fa20f5 | L3 agent | os-worker-4 | nova | :-) | UP | neutron-l3-agent |
| da35d0e0-f84f-4c81-bad8-db8e2e2cd6f5 | Metadata agent | os-ctrl-1 | None | :-) | UP | neutron-metadata-agent |
| ed466f61-b3e8-45a2-b0bc-6549d7255449 | L3 agent | os-worker-3 | nova | :-) | UP | neutron-l3-agent |
| f323441d-e8bb-4229-baa7-cecfce0eb94c | Metering agent | os-ctrl-1 | None | :-) | UP | neutron-metering-agent |
| f9d5b41b-41f1-4454-b33f-ac928e9636b8 | Open vSwitch agent | os-ctrl-2 | None | :-) | UP | neutron-openvswitch-agent |
+--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
filtri utili sono nel caso del DVR: 'dhcp', 'open-vswitch', 'l3', 'metadata', 'metering'
openstack network agent list --agent-type l3
oppure ''--host'', per esempio:
openstack network agent list --host os-ctrl-2
Per eseminari i dettagli di un agente (qui richiediamo il formato yaml, opzionale):
# openstack network agent show 129d1377-eb08-4472-ae78-8963238a3adf -f yaml
admin_state_up: true
agent_type: L3 agent
alive: true
availability_zone: nova
binary: neutron-l3-agent
configuration:
agent_mode: dvr_snat
ex_gw_ports: 1
extensions: []
floating_ips: 0
handle_internal_only_routers: true
interface_driver: openvswitch
interfaces: 1
log_agent_heartbeats: false
routers: 2
created_at: '2025-10-07 11:59:17'
description: null
ha_state: null
host: os-ctrl-1
id: 129d1377-eb08-4472-ae78-8963238a3adf
last_heartbeat_at: '2025-10-14 14:48:08'
resources_synced: null
started_at: '2025-10-14 09:13:07'
topic: l3_agent
dove troviamo conferma del modo DVR: ''agent_mode: dvr_snat''