TranslateProject/translated/tech/LXD/Part 11 - LXD 2.0--LXD and OpenStack.md
2017-02-02 22:53:38 +08:00

5.8 KiB
Raw Blame History

LXD 2.0 系列LXD和OpenStack

这是 LXD 2.0 系列介绍文章的第十一篇。

LXD logo

介绍

首先对这次的延期抱歉。为了让一切正常我花了很长时间。我第一次尝试是使用devstack时遇到了一些必须解决问题。 然而即使这样,我还是不能够使网络正常。

我终于放弃了devstack并使用用户友好的Juju尝试使用“conjure-up”部署完整的Ubuntu OpenStack。它终于工作了

下面是如何运行一个完整的OpenStack使用LXD容器而不是VM并在LXD容器中运行所有这些嵌套的

要求

这篇文章假设你有一个可以工作的LXD设置提供容器网络访问并且你有一个非常强大的CPU大约50GB给容器空间和至少16GB的内存。

记住我们在这里运行一个完整的OpenStack这东西不是很轻量

设置容器

OpenStack由大量不同做不同事情的组件组成。 一些需要一些额外的特权,这样可以使设置更简单,我们将使用特权容器。

我们将配置支持嵌套的容器,预加载所有需要的内核模块,并允许它访问/dev/mem显然是需要的

请注意这意味着LXD容器的大部分安全特性对该容器被禁用。 然而由OpenStack自身产生的容器将是无特权的并且可以正常使用LXD的安全特性。

lxc launch ubuntu:16.04 openstack -c security.privileged=true -c security.nesting=true -c "linux.kernel_modules=iptable_nat, ip6table_nat, ebtables, openvswitch"
lxc config device add openstack mem unix-char path=/dev/mem

LXD中有一个小bug它会尝试加载已经加载到主机上的内核模块。这已在LXD 2.5中得到修复并将在LXD 2.0.6中修复,但在此之前,可以使用以下方法:

lxc exec openstack -- ln -s /bin/true /usr/local/bin/modprobe

我们需要加几条PPA并安装conjure-up它是我们用来安装Openstack的部署工具。

lxc exec openstack -- apt-add-repository ppa:conjure-up/next -y
lxc exec openstack -- apt-add-repository ppa:juju/stable -y
lxc exec openstack -- apt update
lxc exec openstack -- apt dist-upgrade -y
lxc exec openstack -- apt install conjure-up -y

最后一步是在容器内部配置LXD网络。 所有问题都选择默认,除了:

  • 使用“dir”存储后端“zfs”不在嵌套容器中有用
  • 不要配置IPv6网络conjure-up/juju不太兼容它
lxc exec openstack -- lxd init

现在配置完容器了现在我们部署OpenStack

用conjure-up部署OpenStack

如先前提到的我们用conjure-up部署OpenStack。 这是一个很棒的用户友好的可以与Juju交互来部署复杂服务的工具。

首先:

lxc exec openstack -- sudo -u ubuntu -i conjure-up
  • 选择“OpenStack with NovaLXD”
  • 选择“localhost”作为部署目标使用LXD
  • 点击“Deploy all remaining applications”

接下来会部署OpenStack。整个过程会花费一个多小时这取决于你运行的机器。你将看到所有服务会被分配一个容器然后部署并最终互连。

Conjure-Up deploying OpenStack

部署完成后会显示一个安装完成的界面。它会导入一些初始镜像、设置SSH权限、配置网络最后会显示面板的IP地址。

访问面板并生成一个容器

面板运行在一个容器中,因此你不能直接从浏览器中访问。 最简单的方法是设置一条NAT规则

lxc exec openstack -- iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to <IP>

其中“”是conjure-up在安装结束时给你的面板IP地址。

你现在可以获取“openstack”容器的IP地址来自“lxc info openstack”并将浏览器指向http:///horizon

第一次加载可能需要几分钟。 一旦显示了登录界面输入默认登录名和密码admin/openstack你就会看到OpenStack的欢迎面板

  [oslxd-dashboard]https://www.stgraber.org/wp-content/uploads/2016/10/oslxd-dashboard.png

现在可以选择左边的“Project”选项卡进入“Instances”页面。 要启动一个使用nova-lxd的新实例点击“Launch instance”选择你想要的镜像网络等接着你的实例就产生了。

一旦它运行后你可以为它分配一个浮动IP它将允许你从你的“openstack”容器中访问你的实例。

总结

OpenStack是一个非常复杂的软件你也不会想在家里或在单个服务器上运行它。 但是,不管怎样在你的机器上包含这些服务在一个容器中都是非常有趣的。

conjure-up是部署这种复杂软件的一个很好的工具背后使用Juju驱动部署为每个单独的服务使用LXD容器最后是实例本身。

它也是少数几个容器嵌套多层并实际上有意义的情况之一!


作者简介我是Stéphane Graber。我是LXC和LXD项目的领导者目前在加拿大魁北克蒙特利尔的家所在的Canonical有限公司担任LXD的技术主管。


via: https://www.stgraber.org/2016/10/26/lxd-2-0-lxd-and-openstack-1112/

作者:Stéphane Graber 译者:geekpi 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出