私有小规模CloudStack云平台不需要太大的管理网络网段,因此在搭建CS平台时留了50个IP地址(*.*.2.151-*.*.2.200)。一年多,因为断电等原因,系统虚拟机不断删除重建,导致Management IP数用完,控制台提示:
分析:
在搭建CS过程中,设置的2.151-2.200会初始化成一张表:op_dc_ip_address_alloc,表结构如下:
+----------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| ip_address | char(40) | NO | MUL | NULL | |
| data_center_id | bigint(20) unsigned | NO | MUL | NULL | |
| pod_id | bigint(20) unsigned | NO | MUL | NULL | |
| nic_id | bigint(20) unsigned | YES | | NULL | |
| reservation_id | char(40) | YES | | NULL | |
| taken | datetime | YES | | NULL | |
| mac_address | bigint(20) unsigned | NO | | NULL | |
+----------------+---------------------+------+-----+---------+----------------+
并初始化对应数目(这里是50个)的记录:
+----+---------------+----------------+--------+--------+--------------------------------------+---------------------+-------------+
| id | ip_address | data_center_id | pod_id | nic_id | reservation_id | taken | mac_address |
+----+---------------+----------------+--------+--------+--------------------------------------+---------------------+-------------+
| 1 | 192.168.2.151 | 1 | 1 | NULL | NULL | NULL | 1 |
......
| 50 | 192.168.2.200 | 1 | 1 | NULL | NULL | NULL | 50 |
在使用的过程中,不断新建的系统虚拟机会不断的填充在这50个“空记录”(nic_id=NULL,reservation_id=NULL,taken=NULL)中,当50个记录占满,就会出现上面第一张图100%的现象,这时候要新建的 系统虚拟机 因为分配不到 管理网络IP 就建不起来了。
解决方案:
1登录mysql;
2:根据 相同的nic_id号,按时间标签taken,把较早的记录中”nic_id, reservation_id ,taken“置为NULL
先复制备份表“op_dc_ip_address_alloc”的数据,以防更改错了恢复。
use cloud;
select * from op_dc_ip_address_alloc;
update op_dc_ip_address_alloc set nic_id=NULL,reservation_id=NULL,taken=NULL where id= (你要修改的记录ID号);
更新完后,等待CS自己新建的系统虚拟机获取相应的新的management ip address。