【问题标题】:Nova compute and network is unable to contact nova service after restart manage servicesNova 计算和网络在重启管理服务后无法联系 nova 服务
【发布时间】:2013-01-21 15:34:19
【问题描述】:

我为 openstack 设置了 2 个节点。

第一个节点包含管理服务,如nova-apinova-scheduler、'glance` ... 第二个节点包含网络和计算服务。

当我检查nova-manage service list 时,所有服务都出现了。

当我重新启动管理节点(节点 1)时,计算已断开连接。

当计算尝试连接管理节点时,它在计算日志中显示错误。

2013-01-21 20:49:28 TRACE nova.manager Traceback (most recent call last):
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib/python2.6/site-packages/nova/manager.py", line 155, in periodic_tasks
2013-01-21 20:49:28 TRACE nova.manager     task(self, context)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib/python2.6/site-packages/nova/compute/manager.py", line 2244, in _heal_instance_info_cache
2013-01-21 20:49:28 TRACE nova.manager     context, self.host)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib/python2.6/site-packages/nova/db/api.py", line 594, in instance_get_all_by_host
2013-01-21 20:49:28 TRACE nova.manager     return IMPL.instance_get_all_by_host(context, host)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib/python2.6/site-packages/nova/db/sqlalchemy/api.py", line 103, in wrapper
2013-01-21 20:49:28 TRACE nova.manager     return f(*args, **kwargs)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib/python2.6/site-packages/nova/db/sqlalchemy/api.py", line 1582, in instance_get_all_by_host
2013-01-21 20:49:28 TRACE nova.manager     return _instance_get_all_query(context).filter_by(host=host).all()
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py", line 1922, in all
2013-01-21 20:49:28 TRACE nova.manager     return list(self)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2032, in __iter__
2013-01-21 20:49:28 TRACE nova.manager     return self._execute_and_instances(context)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2047, in _execute_and_instances
2013-01-21 20:49:28 TRACE nova.manager     result = conn.execute(querycontext.statement, self._params)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1399, in execute
2013-01-21 20:49:28 TRACE nova.manager     params)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1532, in _execute_clauseelement
2013-01-21 20:49:28 TRACE nova.manager     compiled_sql, distilled_params
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1640, in _execute_context
2013-01-21 20:49:28 TRACE nova.manager     context)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1633, in _execute_context
2013-01-21 20:49:28 TRACE nova.manager     context)
2013-01-21 20:49:28 TRACE nova.manager   File "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/default.py", line 330, in do_execute
2013-01-21 20:49:28 TRACE nova.manager     cursor.execute(statement, parameters)
2013-01-21 20:49:28 TRACE nova.manager OperationalError: (OperationalError) socket not open

当我重新启动计算和网络服务时,它解决了问题。但在我重新启动计算或网络之前,它会给出错误。

当我在计算上检查为控制器打开的套接字时。

[root@compute ~]# ps -ef | grep compute
nova     30859     1 27 18:51 ?        00:00:03 /usr/bin/python /usr/bin/nova-compute --config-file /etc/nova/nova.conf --logfile /var/log/nova/compute.log
root     30996 30807  0 18:51 pts/0    00:00:00 grep compute

[root@compute ~]# netstat -p | grep 30859
tcp        0      0 compute:56988        controller:postgres     ESTABLISHED 30859/python
tcp        0      0 compute:37869        controller:amqps        ESTABLISHED 30859/python
tcp        0      0 compute:37871        controller:amqps        ESTABLISHED 30859/python
unix  3      [ ]         STREAM     CONNECTED     3588759 30859/python

控制器有 2 个插槽打开。 postgresamqps。 当我在控制器上运行reboot now 并检查控制器有多少可用套接字时。

[root@compute ~]# netstat -p | grep 30859
tcp      208      0 compute:56988        controller:postgres     CLOSE_WAIT  30859/python
unix  3      [ ]         STREAM     CONNECTED     3590103 30859/python
unix  3      [ ]         STREAM     CONNECTED     3588759 30859/python

在此postgres 中,套接字已关闭。

当所有服务都出现在控制器中时。我运行相同的命令来检查连接到控制器的套接字。我得到了同样的结果。

为什么计算不为postgres 创建新套接字?

【问题讨论】:

  • 检查 nova.conf 以了解您的 sql server 配置。但看起来您的 sql server 可能无法正常运行。我会从那里开始。
  • sql 服务器已启动并正在运行。当我检查nova-manage service list 时,它显示所有服务处于:-) 状态。只有计算和网络处于 XXX 状态。当我检查计算日志时出现此错误。

标签: python sqlalchemy openstack postgresql-9.0 openstack-nova


【解决方案1】:

正如马特乔伊斯在上面指出的那样,您收到的套接字错误来自 nova-compute 尝试联系您在 nova.conf 中配置的数据库。在日志的前面部分,您可以看到配置服务的所有值。寻找字符串“Full set of FLAGS”——这至少会暗示那里的配置——它从日志输出中隐藏了“sql_connection”的实际值(因为它通常嵌入了密码),但它可能有助于解释那里发生了什么。

根据我正在阅读的您的问题,nova-compute 日志文件显示此错误直到您重新启动服务。我是否正确地阅读了它之后的工作原理?

假设这是正确的,在安装基本包后是否有配置 nova 的东西?在服务启动后添加配置详细信息的厨师、木偶之类的运行可能使用不正确的配置?

【讨论】:

  • 感谢您的回复。我正在检查问题。我得到了一些提示。问题是当服务运行时,它会为amqppostgres 创建套接字。当控制器从计算端关闭两个套接字时。当服务出现在控制器端计算上时,尝试连接它。它为amqp 创建套接字,但无法为postgres 创建套接字,因此它给出了socket not open 错误。
  • 错误还是一样 - nova-compute 服务在启动时无法打开到您的数据库的套接字连接。我以前没有部署过 Postgres,但我怀疑您使用的 postgres 驱动程序和 nova-compute 服务不能一起工作以在初始失败时自动尝试重新连接。
  • 请告知如何查看驱动版本?我正在使用 Essax Nova Copute 和 PostgreSQL 9.0。
猜你喜欢
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 2020-05-03
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
相关资源
最近更新 更多