分享

Openstack使用问题总结(1)

howtodown 发表于 2014-3-16 00:26:14 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 54878
本帖最后由 howtodown 于 2014-3-16 23:40 编辑

我们在openstack经常遇到的错误,可以作为积累:
1.Openstack迁移环境引起的permission Denied 错误?
2.Quantum Exceeded Maximim Amount of Fixed Ips Per Port 错误?
3.Openstack 数据库中文乱码问题?


没找到任何评论,期待你打破沉寂

howtodown 发表于 2014-3-16 00:26:21
本帖最后由 howtodown 于 2014-3-16 00:28 编辑


1.Openstack迁移环境引起的permission Denied 错误


openstack 迁移错误

openstack 迁移到新的环境。

在新的环境中启动一台虚拟机,发现一直是error状态

查看虚拟机状态提示ComputeHostNotFound_Remote和Compute host 1 could not be found.

但是其实并没有compute 1 节点。

如下
  1. root@controller2:~# nova show d4e4059c-7306-4773-8e01-360a236fd44b
  2. +-----------------------------+--------------------------------------------------------------------------------------------------------------+
  3. | Property                    | Value                                                                                                        |
  4. +-----------------------------+--------------------------------------------------------------------------------------------------------------+
  5. | status                      | ERROR                                                                                                        |
  6. | updated                     | 2013-05-29T12:21:36Z                                                                                         |
  7. | OS-EXT-STS:task_state       | None                                                                                                         |
  8. | key_name                    | None                                                                                                         |
  9. | image                       | precise (6b01928b-056f-4d2e-bb33-988a4853d7f9)                                                               |
  10. | hostId                      | fc6914630cd8a0c64cfaf744b2e85aff0b7c58d16565ff9d5a48ff12                                                     |
  11. | OS-EXT-STS:vm_state         | error                                                                                                        |
  12. | flavor                      | m1.tiny (1)                                                                                                  |
  13. | id                          | d4e4059c-7306-4773-8e01-360a236fd44b                                                                         |
  14. | security_groups             | [{u'name': u'default'}]                                                                                      |
  15. | user_id                     | 05e8636f0cb94171bba93f5a1a73c927                                                                             |
  16. | name                        | api_test                                                                                                     |
  17. | created                     | 2013-05-29T12:20:57Z                                                                                         |
  18. | fault                       | {u'message': u'ComputeHostNotFound_Remote', u'code': 404, u'details': u'Compute host 1 could not be found.   |
  19. |                             | Traceback (most recent call last):                                                                           |
  20. |                             |                                                                                                              |
  21. |                             |   File "/usr/lib/python2.7/dist-packages/nova/openstack/common/rpc/amqp.py", line 430, in _process_data      |
  22. |                             |     rval = self.proxy.dispatch(ctxt, version, method, **args)                                                |
  23. |                             |                                                                                                              |
  24. |                             |   File "/usr/lib/python2.7/dist-packages/nova/openstack/common/rpc/dispatcher.py", line 133, in dispatch     |
  25. |                             |     return getattr(proxyobj, method)(ctxt, **kwargs)                                                         |
  26. |                             |                                                                                                              |
  27. |                             |   File "/usr/lib/python2.7/dist-packages/nova/conductor/manager.py", line 352, in compute_node_update        |
  28. |                             |     prune_stats)                                                                                             |
  29. |                             |                                                                                                              |
  30. |                             |   File "/usr/lib/python2.7/dist-packages/nova/db/api.py", line 200, in compute_node_update                   |
  31. |                             |     return IMPL.compute_node_update(context, compute_id, values, prune_stats)                                |
  32. |                             |                                                                                                              |
  33. |                             |   File "/usr/lib/python2.7/dist-packages/nova/db/sqlalchemy/api.py", line 96, in wrapper                     |
  34. |                             |     return f(*args, **kwargs)                                                                                |
  35. |                             |                                                                                                              |
  36. |                             |   File "/usr/lib/python2.7/dist-packages/nova/db/sqlalchemy/api.py", line 545, in compute_node_update        |
  37. |                             |     compute_ref = _compute_node_get(context, compute_id, session=session)                                    |
  38. |                             |                                                                                                              |
  39. |                             |   File "/usr/lib/python2.7/dist-packages/nova/db/sqlalchemy/api.py", line 455, in _compute_node_get          |
  40. |                             |     raise exception.ComputeHostNotFound(host=compute_id)                                                     |
  41. |                             |                                                                                                              |
  42. |                             | ComputeHostNotFound: Compute host 1 could not be found.                                                      |
  43. |                             | ', u'created': u'2013-05-29T12:21:36Z'}                                                                      |
  44. | OS-DCF:diskConfig           | MANUAL                                                                                                       |
  45. | metadata                    | {u'image_id': u'6b01928b-056f-4d2e-bb33-988a4853d7f9', u'os_name': u'ubuntu', u'My Server Name': u'Apache1'} |
  46. | accessIPv4                  |                                                                                                              |
  47. | accessIPv6                  |                                                                                                              |
  48. | tenant_id                   | a32328ccd3f641c882910a32cdff91fc                                                                             |
  49. | OS-EXT-STS:power_state      | 0                                                                                                            |
  50. | OS-EXT-AZ:availability_zone | nova                                                                                                         |
  51. | config_drive                |                                                                                                              |
  52. +-----------------------------+--------------------------------------------------------------
复制代码
查看 nova scheduler 错误
  1. 2013-05-29 20:21:34.481 ERROR nova.scheduler.filter_scheduler [req-3b009407-bcbb-46a3-8ae9-173574cf7854 05e8636f0cb94171bba93f5a1a73c927 a32328ccd3f641c882910a32cdff91fc] [instance: d4e4059c-7306-4773-8e01-360a236fd44b] Error from last host: compute3 (node compute3): [u'Traceback (most recent call last):\n', u'  File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 834, in _run_instance\n    set_access_ip=set_access_ip)\n', u'  File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1093, in _spawn\n    LOG.exception(_(\'Instance failed to spawn\'), instance=instance)\n', u'  File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__\n    self.gen.next()\n', u'  File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 1089, in _spawn\n    block_device_info)\n', u'  File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 1520, in spawn\n    block_device_info)\n', u'  File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 2433, in _create_domain_and_network\n    self.firewall_driver.setup_basic_filtering(instance, network_info)\n', u'  File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/firewall.py", line 288, in setup_basic_filtering\n    self.refresh_provider_fw_rules()\n', u'  File "/usr/lib/python2.7/dist-packages/nova/virt/firewall.py", line 476, in refresh_provider_fw_rules\n    self._do_refresh_provider_fw_rules()\n', u'  File "/usr/lib/python2.7/dist-packages/nova/openstack/common/lockutils.py", line 221, in inner\n    with lock:\n', u'  File "/usr/lib/python2.7/dist-packages/nova/openstack/common/lockutils.py", line 75, in __enter__\n    self.lockfile = open(self.fname, \'w\')\n', u"IOError: [Errno 13] Permission denied: '/run/lock/nova/nova-iptables'\n"]
复制代码
解决方案

/var/lock/nova 的权限是 nova:root , 应该是nova:nova
  1. chown -R nova:nova /var/lock/nova
复制代码
2.Quantum Exceeded Maximim Amount of Fixed Ips Per Port 错误

openstack 运行过程中突然出现这个错误

在 network节点上/var/log/quantum/dhcp-agent.log

出现如下错误日志

提示Exceeded maximim amount of fixed ips per port.

应该是跟quota有关的。
  1. 013-05-22 16:31:10    ERROR [quantum.agent.dhcp_agent] Unable to enable dhcp.
  2. Traceback (most recent call last):
  3.   File "/usr/lib/python2.7/dist-packages/quantum/agent/dhcp_agent.py", line 129, in call_driver
  4.     getattr(driver, action)()
  5.   File "/usr/lib/python2.7/dist-packages/quantum/agent/linux/dhcp.py", line 117, in enable
  6.     reuse_existing=True)
  7.   File "/usr/lib/python2.7/dist-packages/quantum/agent/dhcp_agent.py", line 528, in setup
  8.     port = self.plugin.get_dhcp_port(network.id, device_id)
  9.   File "/usr/lib/python2.7/dist-packages/quantum/agent/dhcp_agent.py", line 377, in get_dhcp_port
  10.     topic=self.topic))
  11.   File "/usr/lib/python2.7/dist-packages/quantum/openstack/common/rpc/proxy.py", line 80, in call
  12.     return rpc.call(context, self._get_topic(topic), msg, timeout)
  13.   File "/usr/lib/python2.7/dist-packages/quantum/openstack/common/rpc/__init__.py", line 140, in call
  14.     return _get_impl().call(CONF, context, topic, msg, timeout)
  15.   File "/usr/lib/python2.7/dist-packages/quantum/openstack/common/rpc/impl_kombu.py", line 798, in call
  16.     rpc_amqp.get_connection_pool(conf, Connection))
  17.   File "/usr/lib/python2.7/dist-packages/quantum/openstack/common/rpc/amqp.py", line 613, in call
  18.     rv = list(rv)
  19.   File "/usr/lib/python2.7/dist-packages/quantum/openstack/common/rpc/amqp.py", line 562, in __iter__
  20.     raise result
  21. RemoteError: Remote error: InvalidInput Invalid input for operation: Exceeded maximim amount of fixed ips per port.
  22. [u'Traceback (most recent call last):\n', u'  File "/usr/lib/python2.7/dist-packages/quantum/openstack/common/rpc/amqp.py", line 430, in _process_data\n    rval = self.proxy.dispatch(ctxt, version, method, **args)\n', u'  File "/usr/lib/python2.7/dist-packages/quantum/common/rpc.py", line 43, in dispatch\n    quantum_ctxt, version, method, **kwargs)\n', u'  File "/usr/lib/python2.7/dist-packages/quantum/openstack/common/rpc/dispatcher.py", line 133, in dispatch\n    return getattr(proxyobj, method)(ctxt, **kwargs)\n', u'  File "/usr/lib/python2.7/dist-packages/quantum/db/dhcp_rpc_base.py", line 104, in get_dhcp_port\n    dict(port=port))\n', u'  File "/usr/lib/python2.7/dist-packages/quantum/plugins/openvswitch/ovs_quantum_plugin.py", line 612, in update_port\n    context, id, port)\n', u'  File "/usr/lib/python2.7/dist-packages/quantum/db/db_base_plugin_v2.py", line 1341, in update_port\n    p[\'fixed_ips\'])\n', u'  File "/usr/lib/python2.7/dist-packages/quantum/db/db_base_plugin_v2.py", line 657, in _update_ips_for_port\n    raise q_exc.InvalidInput(error_message=msg)\n', u'InvalidInput: Invalid input for operation: Exceeded maximim amount of fixed ips per port.\n'].
复制代码
解决方法

在quantum server上设置 /etc/quantum/quantum.conf
  1. # Maximum number of fixed ips per port
  2. max_fixed_ips_per_port = 1000
复制代码
3.Openstack 数据库中文乱码问题

openstack的sql connection 需要配置成utf-8才不会中文乱码
  1. sql_connection = mysql://nova:xxx@qa-mysql1:3306/nova?charset='utf-8'
复制代码
但是如果之前就没有设置utf-8,数据库又不能随便清空,想要更新openstack数据库某个字段,就不能直接采用utf-8的数据库连接,否则会出现插入到数据库中的是中文,但是openstack中显示的是乱码。更坏的是如果插入的是全角中文字符,openstack就会出错。

那么如何更新这种情况下的数据库呢?

答案很简单,就是采用和openstack一样的数据库连接方式,openstack使用的是 sqlalchemy 我写一个一个简单的数据库连接如下
  1. #!/usr/bin/python
  2. # coding=utf-8
  3. from sqlalchemy import create_engine
  4. from sqlalchemy import MetaData
  5. from sqlalchemy.sql import select
  6. from sqlalchemy.sql import update
  7. engine = create_engine('mysql://nova:password@qa-mysql1:3306/nova',convert_unicode=True)
  8. metadata=MetaData()
  9. meta=metadata
  10. meta.reflect(bind=engine)
  11. conn=engine.connect()
  12. secgroup=meta.tables['security_groups']
  13. u=update(secgroup).where(secgroup.c.id==60).values(name='中文')
  14. result=conn.execute(u)
复制代码
这里需要注意的是在create_engine的时候,需要添加convert_unicode=True,如果不添加,会出如下解码错误的错误
  1. query = query % db.literal(args)
  2. File "/usr/share/pyshared/MySQLdb/connections.py", line 264, in literal
  3. return self.escape(o, self.encoders)
  4. File "/usr/share/pyshared/MySQLdb/connections.py", line 202, in unicode_literal
  5. return db.literal(u.encode(unicode_literal.charset))
  6. UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条