OpenStack Folsom中有一个BUG,那就是Fixed_Ips的配额问题
查阅官方文档得出,OpenStack的的默认quota配额如下:
Configuration option=Default value | (Type) Description |
---|---|
quota_cores=20 | (IntOpt) number of instance cores allowed per project (tenant) |
quota_floating_ips=10 | (IntOpt) number of floating ips allowed per project (tenant) |
quota_gigabytes=1000 | (IntOpt) number of volume gigabytes allowed per project (tenant) |
quota_injected_file_content_bytes=10240 | (IntOpt) number of bytes allowed per injected file |
quota_injected_file_path_bytes=255 | (IntOpt) number of bytes allowed per injected file path |
quota_injected_files=5 | (IntOpt) number of injected files allowed |
quota_instances=10 | (IntOpt) number of instances allowed per project (tenant) |
quota_key_pairs=100 | (IntOpt) number of key pairs allowed per user |
quota_metadata_items=128 | (IntOpt) number of metadata items allowed per instance |
quota_ram=51200 | (IntOpt) megabytes of instance ram allowed per project (tenant) |
quota_security_group_rules=20 | (IntOpt) number of security rules per security group |
quota_security_groups=10 | (IntOpt) number of security groups per project (tenant) |
quota_volumes=10 | (IntOpt) number of volumes allowed per project (tenant) |
在控制台的Project中可Modify Quotas的功能中,也没有发现可修改的Fix_Ips项,如下图:
再查阅官方Nova配置文档,表明Quotas默认值可以通过修改nova配置文件/etc/nova/nova.conf进行配置,官方文档地址:http://docs.openstack.org/folsom/openstack-compute/admin/content/list-of-compute-config-options.html,其中关于quotas的配置参数说明如下:
Configuration option=Default value | (Type) Description |
max_age=0 | (IntOpt) number of seconds between subsequent usage refreshes |
quota_cores=20 | (IntOpt) number of instance cores allowed per project (tenant) |
quota_driver=nova.quota.DbQuotaDriver | (StrOpt) Default driver to use for quota checks |
quota_floating_ips=10 | (IntOpt) number of floating ips allowed per project (tenant) |
quota_gigabytes=1000 | (IntOpt) number of volume gigabytes allowed per project (tenant) |
quota_injected_file_content_bytes=10240 | (IntOpt) number of bytes allowed per injected file |
quota_injected_file_path_bytes=255 | (IntOpt) number of bytes allowed per injected file path |
quota_injected_files=5 | (IntOpt) number of injected files allowed |
quota_instances=10 | (IntOpt) number of instances allowed per project (tenant) |
quota_key_pairs=100 | (IntOpt) number of key pairs allowed per user |
quota_metadata_items=128 | (IntOpt) number of metadata items allowed per instance |
quota_ram=51200 | (IntOpt) megabytes of instance ram allowed per project (tenant) |
quota_security_group_rules=20 | (IntOpt) number of security rules per security group |
quota_security_groups=10 | (IntOpt) number of security groups per project (tenant) |
quota_volumes=10 | (IntOpt) number of volumes allowed per project (tenant) |
reservation_expire=86400 | (IntOpt) number of seconds until a reservation expires |
until_refresh=0 | (IntOpt) count of reservations until usage is refreshed |
仔细查找,其中并无关于Fixed_Ips的配置,比较疑惑,但是问题的确存在,在Project中创建超过10个实例时发生错误,日志显示错误内容如下:
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] Traceback (most recent call last):
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 749, in _spawn
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] block_device_info)
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 117, in wrapped
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] temp_level, payload)
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] self.gen.next()
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 92, in wrapped
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] return f(*args, **kw)
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 1086, in spawn
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] block_device_info=block_device_info)
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 1863, in to_xml
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] rescue, block_device_info)
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 1821, in get_guest_config
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] cfg = self.vif_driver.plug(instance, (network, mapping))
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/vif.py", line 111, in plug
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] return self._get_configurations(instance, network, mapping)
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/vif.py", line 68, in _get_configurations
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] conf.add_filter_param("IP", mapping['ips'][0]['ip'])
2013-04-24 12:14:05 10555 TRACE nova.compute.manager [instance: cc8a04a5-c320-464a-b21c-9014ce3e56ca] IndexError: list index out of range
百思不得其解,Google也未找到问题,官方bug修改只说已经修改该BUG,并且在最新的Grizzly版本中已经没有该问题,但是并未给出Folsom版和Essex版本中的解决办法,于是,抱着侥幸心理根据官方文档中Quota其他参数的配置,在nova.conf文件中添加了一条配置:
quota_fixed_ips=100
然后重启nova服务
cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i restart; done
在控制节点和网络节点都执行一遍,回到Dashboard控制台一看,发现Quotas中的Fixed Ips已经改变,并且再创建实例,正常,问题解决。