Reutilizar una IP flotante en Openstack

Posted by José Manuel Hernández on


Hoy quería compartir un problema que he tenido en una instalación de Openstack. Como sabéis, Openstack Neutron asigna IPs flotantes de manera consecutiva y hasta que no se consuman todas las IPs del pool no empieza a reciclar las IPs en desuso. En mi caso para evitar modificar la configuración de firewalls, DNS y demás necesitaba rehusar esta misma dirección IP para una instancia.

Tras desasignar la IP y eliminarse esta del Tenant, necesitaba asignarla de nuevo, a continuación os detallo como lo he realizado.

Esta configuración se hace a través de la base de datos de nuestra infraestructura así que vamos a entrar desde un nodo de control a MySQL:

[email protected]:~# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 525603
Server version: 5.6.16-2~u14.04+mos2-log (Ubuntu), wsrep_25.5.rXXXX

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Usamos la BD de Neutron:
mysql> use neutron;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

Identificamos los pools de IPs que tenemos:
mysql> select * from ipavailabilityranges;
+--------------------------------------+-------------+--------------+
| allocation_pool_id                   | first_ip    | last_ip      |
+--------------------------------------+-------------+--------------+
| 1fbbfa85-bc2e-447a-8ddb-8436bb783706 | 10.50.1.48  | 10.50.1.254  |
| 3271e259-2767-4234-816b-101ecf56e152 | 10.50.2.5   | 10.50.2.254  |
| 5ebbce7f-21d6-43a6-be65-5165347eb29d | 10.20.15.35 | 10.20.15.254 |
| d3f1f050-b3c7-4ac5-9318-33c194018e45 | 10.20.10.59 | 10.20.11.254 |
| db102e26-4697-4957-8e68-0c24f656d1fd | 10.50.4.9   | 10.50.4.254  |
+--------------------------------------+-------------+--------------+
5 rows in set (0.00 sec)

Establecemos dentro del pool en cuestión la IP que queremos que sea asignada:
mysql> UPDATE ipavailabilityranges SET first_ip = '10.20.10.24' 
WHERE allocation_pool_id='d3f1f050-b3c7-4ac5-9318-33c194018e45';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

>NOTA: Es importante tener control sobre la asignación de IPs en la infraestructura y mientras realicemos este proceso no se soliciten IPs flotantes.
Asociamos la IP flotante a nuestra instancia:


Devolvemos la primera IP disponible a la que estaba establecida inicialmente para no tener problemas:
mysql> UPDATE ipavailabilityranges SET first_ip = '10.20.10.59' 
WHERE allocation_pool_id='d3f1f050-b3c7-4ac5-9318-33c194018e45';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Con este workaround podremos disponer de una IP reciclada de nuevo en nuestra instancia.

Jose Manuel Hernandez

[*1] Post image by Grant Hutchinson