在 Juju-local 中手动配置现有的 LXC 容器

在 Juju-local 中手动配置现有的 LXC 容器

是否可以在 juju (1.24) 中手动配置现有的 LXC 控制器?

我已尝试以下操作(ubuntu-trusty):

  1. 设置 juju local
  2. 创建一个 lxc 容器,在容器中安装 systemd-services 和 dbus-x11 包
  3. 通过 Ssh 手动配置容器(juju add-machine ssh:user@container-ip)
  4. 从容器中的 agent.conf 中删除以下行(“- localhost:17070”)并在容器中重新启动 jujud。这是必需的,否则容器中的 juju-agent 将保持待处理状态。
  5. 使用 --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) 配置静态地址。

相关内容