是否可以在 juju (1.24) 中手动配置现有的 LXC 控制器?
我已尝试以下操作(ubuntu-trusty):
- 设置 juju local
- 创建一个 lxc 容器,在容器中安装 systemd-services 和 dbus-x11 包
- 通过 Ssh 手动配置容器(juju add-machine ssh:user@container-ip)
- 从容器中的 agent.conf 中删除以下行(“- localhost:17070”)并在容器中重新启动 jujud。这是必需的,否则容器中的 juju-agent 将保持待处理状态。
- 使用 --to juju 开关将 mysql 部署到容器中
MysqL charm 部署启动,花费很长时间,然后“安装钩子”失败。
使用 KVM 机器进行手动配置是可行的(尽管无论如何我都必须执行第 4 步,否则代理状态将保持待定状态)。
我正在进行 MySQL 集群安装,并且想在多台物理机上使用 LXC(而不是 KVM),因为 LXC 相对较轻。
谢谢任何提示。
答案1
我自己想出了一个解决方案:
引导新的 juju 本地环境后,向环境中添加一台机器:
juju add-machine
这将创建 machine-1。在 machine-1 准备就绪后(检查通过juju status
),将创建一个名为类似于juju-trusty-lxc-模板。
现在您可以创建此模板的克隆来创建任意数量的 lxc 容器,并通过 ssh 手动将它们添加到 juju 环境(也可以在远程机器上创建)。
sudo lxc-clone juju-trusty-lxc-template -n lxc-001
sudo lxc-clone juju-trusty-lxc-template -n lxc-002
启动容器
sudo lxc-start -d -n lxc-001
sudo lxc-start -d -n lxc-002
然后通过 ssh 将容器添加到 juju
juju add-machine ssh:lxc-001 #this shall create machine-2
juju add-machine ssh:lxc-002 #this shall create machine-3
在 juju 在机器上安装完代理后,你必须删除对本地主机:170702在容器内的 agent.conf 文件并在容器内重启 jujud。您可以通过以下方式快速完成此操作:
juju run --machine 2 'sudo sed -i "s/\- localhost:17070//" /var/lib/juju/agents/machine-*/agent.conf && sudo pkill jujud -hup'
juju run --machine 3 'sudo sed -i "s/\- localhost:17070//" /var/lib/juju/agents/machine-*/agent.conf && sudo pkill jujud -hup'
检查juju status
代理是否在开始状态,您就完成了,可以向这些机器部署服务了。
希望这可以帮助。
笔记: 在默认的 juju 配置中,lxc 容器将从 juju 创建的网桥获取 DHCP 地址。这些地址在 LAN 上无法访问。您可能希望创建一个自定义网桥并让 juju 使用它(network-bridge: your-lan-br0
在〜/ .juju /环境.yaml在引导之前)。如果您从另一台物理机器添加容器,这也是必要的。您可能还想为 lxc-containers (dnsmasq) 配置静态地址。