跳转到: 导航, 搜索

Sahara/HeatIntegration

Heat集成

Savanna 有两个主要部分负责与虚拟机交互

  • 启动虚拟机,进行常见配置,例如填充 /etc/hosts,配置实例之间的无密码访问;
  • 执行 Hadoop 安装和/或配置,这部分特定于发行版,并由相应的插件实现。


我们应该首先集成 Heat,方法是将第一部分转换为 Heat,然后再转换第二部分。我们的目标是添加可扩展的机制,以便最终能够从使用 Nova、Cinder 和 Neutron 进行“直接”编排切换到基于 Heat 的编排,而不会破坏 Savanna 的配置部分。当此过程完成后,“直接”插件可以被移除。

启动虚拟机,常见配置

使用 Heat 启动虚拟机应该相当简单,除了以下几点

1. Savanna 提供了一个选项,可以启动具有反亲和性过滤器的集群节点,这似乎 Heat 尚未实现。

目前的计划是等待 Nova 中的实例节点组(https://blueprints.launchpad.net/nova/+spec/instance-group-api-extension)在早期 Icehouse 中实现,并将该功能集成到 Heat 中。

2. 在实例启动后执行常见配置。我们还需要将实例启动 _后_ 收到的信息传递给实例。例如,生成 /etc/hosts 需要:我们需要将所有实例的 IP 传递给每个节点。

初步研究表明,cloud-init、os-collect-config 和 os-apply-config 的组合应该可以工作。

Hadoop 安装和/或配置

这部分更复杂,目前不太清楚,因为它涉及到更改几个现有的插件。我们需要重新定义插件 SPI,使其

  • 适合所有插件的需求;
  • 可以部分地移动到 Heat 模板中。


一般来说,以下方法看起来是合适的:使插件能够为每个节点定义配置脚本。稍后可以将该脚本传递给 cloud-init。如果配置需要一些只有在集群实例启动后才能获得的知识,那么它也可以使用 os-collect-config 和 os-apply-config 来执行。这样的脚本可以执行一些准备工作,之后 Savanna 将仅使用安装和配置的管理控制台进行通信,例如使用 REST API 来完成 Hadoop 服务的配置。

相关蓝图