====== 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''