我想在 MAAS 环境(没有 OpenStack)上部署一个或多个带有 juju 的 charms。MAAS 控制器的环境是带有 2 个 NIC 的 Ubuntu 12.10。其中一个 NIC 连接到外部 DHCP,另一个由 MAAS-dhcp 持有,并连接到带有 2 个客户端服务器(Ubuntu 12.04 LTS)的交换机。设置如下
$ sudo vim /etc/network/interfaces
自动 em1
iface em1 inet 静态
地址 [输出 IP]
网络掩码 [外部网络掩码]
网关 [外网关]
dns 名称服务器 [out-dns]
自动 em2
iface em2 inet 静态
地址 [内部 IP]
网络[内部网络]
网络掩码 [内部网络掩码]
广播[内部广播地址]
$ sudo vim /etc/sysctl.conf
取消注释 net.ipv4.ip_forward=1
$ sudo vim /etc/rc.local
/sbin/iptables -P 转发接受
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -P 转发接受
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo /etc/init.d/networking 重启
$ sudo dpkg-重新配置 maas-区域控制器
[内部 IP]
$ sudo dpkg-重新配置 maas-cluster-controller
http://[内网ip]:80/MAAS
$ sudo vim /etc/maas/ephameralss
设置 ARCHES="amd64"
$ sudo maas 创建超级用户
$ sudo maas-impoart-pxe-files
打开 Web UI(http://[内部 ip]/MAAS)并按设置按钮并设置集群控制器
$ sudo vim /var/share/preseeds/preseed-master…
打开计算机让客户端设置为就绪状态(请勿按“启动节点”按钮)
检查节点是否全部处于 READY 状态
MAAS 客户端已全部就绪:
设置 juju 环境.yaml
juju bootstrap(检查其中一个节点是否分配给*)
打开分配的服务器进行 PXE 启动并设置 Ubuntu
安装后
符咒状态
machines:
0:
agent-state: running
dns-name: node-4487fc70b037
instance-id: /MAAS/api/1.0/nodes/node-xxx
instance-state: unknown
service{}
当我尝试部署一个 charm (例如 mysql ) 时,另一个客户端已启动并安装了 ubuntu。但是,安装后,charm 仍然未部署。我尝试:
符咒状态
machines:
0:
agent-state: running
dns-name: node-4487fc70b037
instance-id: /MAAS/api/1.0/nodes/node-64248652-6a9b-11e2-9347-842b2b6a17a3/
instance-state: unknown
1:
agent-state: not-started
dns-name: node-0025b31884f5
instance-id: /MAAS/api/1.0/nodes/node-011c5b14-6a9d-11e2-9c04-842b2b6a17a3/
instance-state: unknown
services:
mysql:
charm: cs:precise/mysql-15
relations: {}
units:
mysql/0:
agent-state: pending
machine: 1
public-address: null
我还检查了机器 1(未启动的机器)的 /var/log/juju/machine-agent.log,它显示
2013-01-30 01:19:58,444: twisted@ERROR: Unhandled error in Deferred:
2013-01-30 01:19:58,454: twisted@ERROR: Unhandled Error
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1181, in unwindGenerator
return _inlineCallbacks(None, gen, Deferred())
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1039, in _inlineCallbacks
result = g.send(result)
File "/usr/lib/python2.7/dist-packages/juju/agents/base.py", line 238, in startService
yield self.connect()
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1181, in unwindGenerator
return _inlineCallbacks(None, gen, Deferred())
--- <exception caught here> ---
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1039, in _inlineCallbacks
result = g.send(result)
File "/usr/lib/python2.7/dist-packages/juju/agents/base.py", line 208, in connect
self.config["zookeeper_servers"])
File "/usr/lib/python2.7/dist-packages/txzookeeper/retry.py", line 302, in connect
return self.client.connect(*args, **kw)
File "/usr/lib/python2.7/dist-packages/txzookeeper/client.py", line 468, in connect
self._servers, callback, self._session_timeout)
zookeeper.ZooKeeperException: Could not internally obtain zookeeper handle
我等待着有一天它继续待办的。机器 1 也处于未启动状态。我还检查了 ssh 两个客户端,它们都很好。但是,我无法使用ssh 1 复制代码连接到客户端。我真的不知道该怎么办。请帮帮我。
答案1
机器 1 无法连接到机器 0 上的 ZK 进程。造成这种情况的原因可能有很多:DNS 问题、防火墙问题等。
我将通过 ssh 进入机器 1,并尝试手动连接到在机器 0 上运行的 Zookeeper(使用 telnet),看看您是否可以确定确切的问题。
答案2
我认为这可能与 mDNS 有关。我也遇到了同样的问题。
默认情况下启用 mDNS,我无法解析 machine-0/zk 主机名!但是,使用 dig,我的 DNS 工作正常。
只有当它经过 mdns 层时才会导致超时/挂起。当使用非 FQDN 时,它似乎可以工作,当使用 FQDN 时,甚至已知的,它为什么会先寻找 avahi?需要深入挖掘。
编辑:我发现问题是 avahi 优先于 .local 域,甚至是它的子域。我正在寻找一种方法来将 avahi 列入黑名单域,我们可能必须为黑名单域选项提供补丁。
尝试更改 /etc/nsswitch.conf 以不使用带有 NOTFOUND=return 的 mDNS,即,使 hosts: 行:hosts: files dns mdns4
或者编辑 MaaS 的通用预置并从自动安装列表中删除 avahi-daemon。
答案3
/etc/hosts
在每台机器上手动添加主机名()后,juju 成功在机器 1 上部署了服务。