我正在使用 MAAS 和 Juju 处理一个相当奇怪的问题,在引导程序成功创建机器“0”后,我无法部署任何服务,只需发出一个简单的juju deploy mysql
。为了给出一个简短的环境概述,我在 Ubuntu Server 13.04 上运行 MAAS,IP 为 10.0.0.10,并且juju
在juju-core
同一台服务器上运行。这些也都在本地测试实验室中运行。发出 会juju status
显示以下内容:
root@maas:~# juju status
2013-04-30 10:24:32,876 INFO Connecting to environment...
2013-04-30 10:24:33,439 INFO Connected to environment.
machines:
0:
agent-state: not-started
dns-name: test4.master
instance-id: /MAAS/api/1.0/nodes/node-ee044686-b100-11e2-9927-52540089abb8/
instance-state: unknown
5:
instance-id: pending
services:
mysql:
charm: cs:precise/mysql-19
relations: {}
units:
mysql/0:
agent-state: pending
machine: 5
public-address: null
2013-04-30 10:24:33,496 INFO 'status' command finished successfully
该实例无限期地保持某种pending
状态,查看调试日志可发现没有建立连接来配置该实例:
2013-04-30 10:27:26,562: juju.agents.provision@ERROR: Cannot get machine list
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/juju/agents/provision.py", line 175, in process_machines
provider_machines = yield self.provider.get_machines()
ProviderInteractionError: Unexpected ConnectionRefusedError interacting with provider: Connection was refused by other side: 111: Connection refused.
现在,由于此错误每隔一分钟左右就会在机器“0”上生成一次,因此我查看了 tcpdump 以尝试找出发生了什么。经过一番挖掘,我在记录错误的确切时间发现了这一点:
10:27:26.561631 IP 127.0.0.1.33607 > 127.0.0.1.80: Flags [S], seq 1222093882, win 32792, options [mss 16396,sackOK,TS val 454628 ecr 0,nop,wscale 6], length 0
10:27:26.561651 IP 127.0.0.1.80 > 127.0.0.1.33607: Flags [R.], seq 0, ack 1222093883, win 0, length 0
由于机器“0”是通过 Juju 部署 MAAS 的,我认为它也不会运行 MAAS。为了解决这个问题,我在机器“0”上创建了一个 SSH 隧道,监听端口 80(localhost)到 MAAS 服务器端口 80,例如 80:MAAS-Server-IP:80。之后,juju status
更改为显示新机器脱离待处理状态:
5:
agent-state: not-started
dns-name: test5.master
instance-id: /MAAS/api/1.0/nodes/node-fe882bb2-b100-11e2-ba1c-52540089abb8/
instance-state: unknown
综上所述,有人能帮我理解为什么部署的机器“0”试图连接到本地主机端口 80 而不是 MAAS 服务器吗?这是因为我在同一台服务器上运行 Juju 和 MAAS 吗?
答案1
当环境启动时,您必须注意 environment.yaml 中的主机名,因为它似乎是推送到后续机器的内容。就我而言,我将服务器设置为http://localhost:80/MAAS
,从而导致机器“0”以及任何其他机器尝试连接到 localhost 而不是 MAAS 服务器的 IP/主机名。在破坏我的环境并使用服务器再次启动它之后http://10.0.0.10:80/MAAS
,一切似乎都正确部署了。这完全是我的疏忽。