MaaS 部署的利器

作者:Kyle Rankin
我在 Canonical 的一天

我最近一直在研究 OpenStack 部署方法,因此当我收到 Canonical 的电子邮件,邀请我了解他们如何在其出色的 Orange Box 演示平台上使用其金属即服务 (MaaS) 软件部署 OpenStack 时,我立刻抓住了这个机会。虽然我从为我的《Official Ubuntu Server Book》进行研究时就已经对 MaaS 和 Juju 有些熟悉,但我从未见过它在这种规模下实际运行。而且,有机会看到 Orange Box——一个包含十台服务器的计算集群和网络堆栈,它的大小与旧台式电脑的盒子差不多——是我不能错过的机会。

我们做好了所有必要的安排,在一个清晨,Dustin Kirkland 带着一台笔记本电脑和我见过的第二大 Pelican 箱子出现在我的办公室。我的团队和他坐下来,看着他打开箱子,并简要介绍了 Orange Box。一整天,我们浏览了 MaaS 和 Juju 的界面,并使用它们来引导启动了几台服务器,这些服务器随后通过 Juju(Canonical 的服务编排项目)进行了配置。到一天结束时,我们不仅部署了 OpenStack,还在此过程中设置了一个 Hadoop 集群,甚至是一个多节点转码集群,该集群将转码任务分配到集群中的不同节点,并在短时间内将高清电影转码为更易于消费的大小。在本文中,我将介绍 MaaS 背后的基本概念,重点介绍它一些更有趣的新功能,并指出我在过程中学到的一些有趣技巧,即使您不使用 MaaS 或 Juju,您也可能会觉得有用。

它是橙色的。它是一个盒子。它是 Orange Box。

图 1:Orange Box

很难开始讨论 Canonical MaaS 演示而不讨论 Orange Box,因为它太酷了。不过,我不会花太多时间在这上面,首先是因为它已经在其他一些新闻媒体(特别是 ArsTechnica 对此进行了精彩的报道)上得到了很好的报道。其次,虽然很酷,但该硬件仍然只是一个演示平台,其目的是展示 MaaS 如何在您可以看见和触摸的真实硬件上工作。Orange Box 内部有十台独立的服务器,规格如下

  • Intel NUC vPro 4"x4" 主板
  • 4 核 i5 CPU
  • 16GB 内存
  • 120Gb SSD 驱动器(主节点具有 2Tb 机械硬盘用于大容量存储)
  • 千兆网卡
  • 32Gb 闪存盘,用作辅助驱动器

TranquilPC 为 Canonical 构建了这台机器,因此如果您想要自己的机器,可以通过他们订购类似的产品。该盒子还包含一个千兆交换机,用于节点之间的通信,并且有网络和 USB 端口暴露在外部。第一个节点充当其余节点的主节点,并托管一些支持其余节点的服务 VM。特别是,主节点运行 MaaS 服务器,并且还充当路由器和 squid Debian 代理。这样,他们可以提前在快速互联网连接上运行演示,并拉取自上次运行以来的任何软件包更新。所有剩余的节点都将通过该代理拉取软件包,因此在进行任何实际演示时,它可以大大减少所需的外部带宽。Kirkland 告诉我,过去他甚至可以将整个 Orange Box 通过手机共享网络连接,而不会出现任何问题,这归功于本地软件包缓存。

MaaS 的核心

过去,我在 PXE 服务器上做了很多工作,甚至为 Linux Journal 撰写了许多关于该主题的文章。即使在服务器仍然有 CD-ROM 驱动器的时候,从网络启动它们来安装操作系统也比在服务器之间携带 CD 更有意义。多年来,我开发了我认为是相当复杂的 PXE 系统,具有菜单和自动化的 preseed 或 kickstart 环境,可以完全通过网络安装基本操作系统。金属即服务 (MaaS) 采用了大规模 PXE 启动的概念并加以发展。传统的 PXE 系统可能仍然需要您在每台单独的服务器上获取控制台,启动它,并选择操作系统——如果您同时需要配置数十或数百台服务器,这种方法的扩展性有限——MaaS 采用了经典的 PXE preseed/kickstart 服务器软件,并增加了以下功能:跟踪所有尝试通过网络启动的系统,远程控制许多服务器使用的远程电源管理系统的电源,以及从单个 Web UI 中选择要在哪些服务器上安装哪些操作系统。

图 2:MaaS 节点管理页面

要引导启动 MaaS 环境,您需要在服务器上安装 Ubuntu,然后安装 maas 软件包。MaaS 将包含它工作所需的所有 PXE、DHCP、DNS 和其他服务。一旦 MaaS 运行起来,您可以使用 oauth 登录到 Web 界面并开始配置。在 MaaS 就位后,当网络上的计算机尝试 PXE 启动时,MaaS 将接收该请求,并使服务器从特殊的临时操作系统启动。该临时操作系统将收集有关服务器及其硬件的各种信息,将其报告回 MaaS,然后关闭服务器。此时,MaaS 将服务器添加到其清单中。您可以选择特定的服务器并选择要安装的操作系统。正如您可能期望的那样,MaaS 支持所有版本的 Ubuntu,但令人惊讶的是,它还支持 CentOS 和 Windows,甚至 SuSE 也即将推出。一旦您选择要安装在服务器上的操作系统,它就可以使用其对通用 IPMI、HP Moonshot、AMT 甚至 virsh 的支持来打开服务器电源、PXE 启动,并让 MaaS 为其提供正确的安装映像。

图 3:MaaS 安装映像选择页面

此时,MaaS 采用了一种有趣的方法,我想重点介绍一下,因为即使没有 MaaS,系统管理员也应该考虑这一点。过去,MaaS 安装操作系统的方式与任何使用 PXE 服务器的人员都非常相似——它会提供一个预先编程的 preseed/kickstart 配置文件,服务器将以自动方式完成传统的操作系统安装。如果您像我一样,您通常所做的只是在该过程中安装基本操作系统以及 Puppet 或 Chef 等配置管理系统。一旦机器重新启动,配置管理系统就会接管。当然,如果您知道您每次都只想要系统上的基本操作系统,那么运行完整的安装会浪费时间。毕竟,当您在 Amazon 等云平台上启动新映像时,它会在几秒钟内启动。MaaS 所做的是基本上存储一系列 tarball,这些 tarball 反映了它支持的每个发行版的基本操作系统安装。当您告诉 MaaS 安装操作系统时,它会从自定义启动映像启动,该映像对磁盘进行分区,格式化文件系统,在新文件系统上提取根文件系统 tarball,配置 Grub,然后重新启动。正如您可能想象的那样,这会将安装时间缩短到几秒钟而不是几分钟。

14.10 中的 MaaS 新功能

虽然 MaaS 已经存在几年了,但它仍在积极开发中,并且在底层和用户界面方面都发生了很大变化。在最新的 14.10 版本中,MaaS 添加了许多新功能,包括

  • 一个新的图标,用于反映 MaaS 清单中每个节点的电源状态
  • 正在收集有关清单中每台服务器的更多信息,包括内核数、内存量和磁盘信息
  • 能够按这些字段中的任何一个对您的清单进行排序
  • 服务器有一个新的“已获取”状态,用于标记服务器归特定 MaaS 用户所有
  • CentOS 和 Windows 操作系统支持
  • 存储在 MaaS 中的节点电源开启和关闭事件日志
  • 节点的基本网络配置,包括将节点分配给特定的 VLAN
  • 默认仪表板上提供更多总体状态

图 4:14.10 中的 MaaS 服务器清单

现在 14.10 版本已经发布,工作将开始将 14.10 功能反向移植到 14.04,因此如果您正在使用该版本,您不会被排除在外。在未来的版本中,MaaS 将专注于一些更具挑战性的网络配置问题,包括 IPv6 和接口绑定。

使用 Landscape 部署 MaaS OpenStack

在演示期间,我看到的一个更有趣的新功能是 MaaS、Juju 和 Landscape 之间的集成。在 MaaS 完成服务器引导启动后,Juju 可以接管以使其运行特定类型的软件。Juju 是 Canonical 的“服务编排”软件,您可以使用它通过预配置的 Juju “charm” 来配置服务器,并安装和配置 Hadoop、MySQL、Postgres、Apache、Nginx 或任何其他类型的流行服务等软件。Landscape 传统上一直是 Canonical 的服务器管理软件——有点类似于 Red Hat 的 Satellite 服务。有了它,您可以注册、监控和管理大型服务器组,并通过 Web 界面跟踪它们的软件包。

在演示中,我看到 Landscape 中添加了一个新的 Beta 选项卡,专门用于 OpenStack 部署。在这个界面中,只要您在 MaaS 中至少有五台可用机器(以满足 OpenStack 的要求),并且它们有多个磁盘(以满足 Ceph 的要求),您就可以在几分钟内直接从 Web UI 配置和部署完整的 OpenStack 环境。在界面中,您可以配置 open vSwitch,并根据您在 MaaS 中的清单选择哪些节点将成为您的计算引擎、网络和对象存储。然后告诉它部署,您很快就会看到一个完整的 OpenStack 环境涌现出来。

虽然那天我还看到 MaaS 和 Juju 结合起来生成了 Hadoop 和电影转码集群、Elasticsearch 以及许多其他较小的服务,但看到像完整的 OpenStack 安装(包括后端的 Ceph 块存储)这样复杂的东西(从头开始设置既不容易也不快)如此快速和轻松地生成,令人印象深刻。如果您希望大规模部署此类软件,那么 MaaS/Juju/Landscape 环境是您应该评估的东西。

结论

我是一个喜欢对我的系统拥有大量控制权的人。我花了很多时间使用我的配置管理系统来控制在安装后安装到机器上的软件和文件。我从头开始编写了自己的 PXE 引导启动系统,总的来说,我喜欢尽可能自己做事情。话虽如此,在看到像 MaaS 这样的系统中的所有潜力之后,特别是看到它在一个由十台服务器组成的集群上实际运行,下次我需要大规模引导启动服务器时,我将认真考虑用 MaaS 替换我的一个自制解决方案。与此同时,在看到引导启动时间的显着增加后,我绝对受到启发,用某种 tarball 部署系统替换我的 preseed 引导启动过程。

资源

TranquilPC Orange Box:http://www.tranquilpcshop.co.uk/ubuntu-orange-box/

Ubuntu MaaS:http://maas.ubuntu.com/

Ubuntu Juju:https://juju.ubuntu.com/

Canonical Landscape:https://landscape.canonical.com/

Kyle Rankin 是 Linux Journal 的技术编辑和专栏作家,以及 Purism 的首席安全官。他是 Linux Hardening in Hostile NetworksDevOps TroubleshootingThe Official Ubuntu Server BookKnoppix HacksKnoppix Pocket ReferenceLinux Multimedia HacksUbuntu Hacks 的作者,也是许多其他 O'Reilly 书籍的贡献者。Rankin 经常在安全和开源软件方面发表演讲,包括在 BsidesLV、O'Reilly Security Conference、OSCON、SCALE、CactusCon、Linux World Expo 和 Penguicon 上。您可以在 @kylerankin 上关注他。

加载 Disqus 评论