使用当前 Landscape 的“OpenStack Beta”选项在我的 MAAS 设置上部署 OpenStack。我完成了 98%,在“配置可用区域”上失败了 1 次。我的设置使用了 KVM、Open vSwitch,目前我使用 Ceph 作为对象和块存储。当我查看/var/log/landscape/作业处理程序-1.log在横向机器上看到超过 100 个错误,关于:
2015-03-05 21:18:38 INFO root RetryingCall for '_get_nova_info' 失败,尝试 103 次以上:2015-03-05 21:18:38 INFO root Traceback:: 缺少 4 个 nova-compute 单元
/usr/lib/python2.7/threading.py:783:__bootstrap
/usr/lib/python2.7/threading.py:810:__bootstrap_inner
/usr/lib/python2.7/threading.py:763:run
--- < 此处捕获异常> ---
/usr/lib/python2.7/dist-packages/twisted/python/threadpool.py:191:_worker
/usr/lib/python2.7/dist-packages/twisted/python/context.py:118:callWithContext
/usr/lib/python2.7/dist-packages/twisted/python/context.py:81:callWithContext
/usr/lib/python2.7/dist-packages/storm/twisted/transact.py:76:_wrap
/opt/canonical/landscape/canonical/landscape/model/openstack/jobs.py:751:_get_nova_info
笔记:jobs.py 中的行号不对,因为我添加了一些用于调试的打印语句。它是 _get_nova_info() 函数中靠近第 741 行的断言(如果我没记错的话),是的,我使用的是今天来自 trusty 的 Landscape PPA 的最新版本的 Landscape。
所以我修改了/opt/canonical/landscape/canonical/landscape/model/openstack/jobs.py的_获取新星信息()打印出长度的函数nova_compute_hostnames我得到了零。所以我追问/opt/canonical/landscape/canonical/landscape/model/openstack/region.py的获取 nova_compute_hostnames()并发现self.juju_environment.get_computer_ids()。count()也零。所以我添加了一个调用self.juju_environment.has_computers()并得到错误的然后我就跑了自我.juju_environment.获取_juju_home()并得到/var/lib/landscape/juju-homes/20。(是的,这是我第二次重建景观盒的第 20 次尝试,我已经这样做了一段时间)。所以我跑了符咒状态使用上面提到的 juju home,一切看起来都很好。所有 5 台机器和服务都已启动,没有待处理或错误状态。(包括 4 个 nova-compute 节点)有什么想法吗?我对景观、MAAS、JUJU 和 python 有点陌生,所以我的调试有点慢。
更新 1:
根据要求我拿到了 2 份日志(虽然我的家现在是 23 号) 符咒状态和经纪人日志。我认为我现在知道我的问题是什么了,根据下面的 broker.log 片段。(感谢 dpb 指出我的问题)我的 MAAS 机器正在向我的景观 LXC 提供 DHCP 地址,但我的景观 LXC 不在 MAAS 控制的 DNS 中,因为它不是由 MAAS 提供的。因此,配置的机器无法通过名称连接到景观服务器。
因此,这引出了一个相关的问题,有没有一种好的方法可以让 MAAS 使用未配置的机器(或在 MAAS 控制下)自动更新 DNS?如果没有,我必须给它一个 DHCP 范围之外的静态 IP,然后手动设置 DNS。
2015-03-06 17:09:50,665 INFO [MainThread] Broker 已启动,配置为 /etc/landscape/client.conf
2015-03-06 17:09:52,382 INFO [MainThread] 已开始与https://landscape/message-system.
2015-03-06 17:09:52,389 错误 [PoolThread-twisted.internet.reactor-1] 连接服务器时出错https://landscape/message-system.
回溯(最近一次调用最后一次):
文件“/usr/lib/python2.7/dist-packages/landscape/broker/transport.py”,第 71 行,在 exchange
message_api 中)
文件“/usr/lib/python2.7/dist-packages/landscape/broker/transport.py”,第 45 行,在 _curl
headers=headers、cainfo=self._pubkey、curl=curl))
文件“/usr/lib/python2.7/dist-packages/landscape/lib/fetch.py”,第 109 行,在 fetch 中
引发 PyCurlError(e.args[0],e.args1)
PyCurlError: 错误 6:无法解析主机:landscape
2015-03-06 17:09:52,390 INFO [MainThread] 消息交换失败。2015-03-06
17:09:52,391 INFO [MainThread] 消息交换在 0.01 秒内完成。
更新2:
我的设置有点受限,因为我只给了 6 台机器(5 个节点和 1 个控制器)来展示 OpenStack/Landscape 的功能,所以我不能使用专用机器进行景观设计。我使用的是景观服务器快速启动在一个龙芯在我的 MAAS 控制器上,这样我就可以快速将其吹走并重新开始。
所以我放弃了景观设置,将 LXC 设置为静态 IP,然后修改 DNS(由 MAAS 控制)以让景观服务器拥有静态 DNS 条目。然后我使用上面提到的 Landscape-server-quickstart 方法在 LXC 上安装了 Landscape Dedicated Server。
重新安装后(主要是为了清除所有调试混乱),我终于能够横向安装 OpenStack。谢谢。
答案1
“缺少 N 个 nova-compute 单元”消息是关于景观客户端代理注册回景观,请检查/var/log/landscape/broker.log
缺失的单元。
更新:
正如您正确指出的那样,如果将 LDS(Landscape 专用服务器)安装到您的 openstack 所在的同一 MAAS,则一切工作会最顺利,这主要是因为网络路由和 DNS。但是,存在无数种有效拓扑的变化,包括网络之间的路由等。
以下是一些值得尝试的建议,请全部阅读。最后,您需要确定您的部署拓扑:
为了进行测试,将 LDS 部署到您的 openstack 所在的同一 MAAS —— 只是为了检查那里是否正常工作。使用openstack 安装工具,或者景观密集型MAAS直接与 juju-quickstart 捆绑以方便这一点。
正如您所说,您的客户端需要能够访问 LDS。如果他们可以通过 IP 路由到部署 LDS 的位置,您可以拆除 openstack 安装,更改您的 apache 服务器名称设置,然后重试。
juju set apache2 servername=IP_ADDRESS
完成此操作后,请按照 juju debug-log 操作,确保一切正常,并确保您可以浏览到 LDS GUIhttps://IP 地址/网址。