Masakari

Masakari 提供了一个 API 和 ENGINE,用于接收来自计算节点上的 MONITOR(代理)的消息,以启用

  • 主机故障时的实例迁移(masakari-hostmonitor) - 需要共享存储

  • 特定实例错误时的实例重启(masakari-instancemonitor)

  • OpenStack 相关进程的监控和重启(masakari-processmonitor)

本规格针对两个 charms,它们将安装 masakari api 和 engine,以及 monitors。

问题描述

如果 OpenStack hypervisor 发生故障,则没有自动恢复的方法。Masakari 提供了一种在集群管理器配合下,将实例从故障主机迁移到正常主机的方法。Masakari 也解决了类似实例和进程故障的问题。

提议的变更

已经验证了一种使用 corosync 和 pacemaker 在每个 hypervisor 上,以及 masakari-hostmonitor 的解决方案。不幸的是,每个节点运行完整集群堆栈的集群仅建议最多 16 个节点

http://clusterlabs.org/pacemaker/doc/en-US/Pacemaker/1.1/html-single/Pacemaker_Remote/#_overview

可以通过将计算节点分解成更小的集群来缓解此初始解决方案的扩展问题,但这应被视为一种变通方法。

他们建议的扩展到更多节点的方法是在 hypervisor 上使用 pacemaker-remote,而不是完整的集群堆栈。不幸的是,由于以下错误,masakari-hostmonitors 目前无法与 pacemaker-remote 配合使用

https://bugs.launchpad.net/masakari-monitors/+bug/1728527

这项工作将涉及以下新的 charms

  • masakari(提供 api、engine 和 python-masakariclient)masakari charm 将具有 identity-service、amqp 和 shared-db 关系

  • masakari-monitors(可选地提供 hostmonitor、instancemonitor、processmonitor 中的一个或全部)masakari-monitors charm 将通过 juju-info 关系与 nova-compute 相关联,并通过 identity-credentials 关系与 keystone 相关联。monitors 需要凭据才能将通知发布到 masakari api 服务。在不使用 pacemaker_remote 时,masakari-monitors 将依赖 hacluster charm 已通过 juju-info 与 nova-compute charm 相关联。

  • pacemaker-remote。此 charm 简单地安装 pacemaker remote 服务,并需要与完整的集群建立关系。

这项工作将涉及以下新的关系

  • hacluster <-> pacemaker-remote 此关系将允许 pacemaker-remote charm 向 hacluster charm 告知要添加到集群的远程节点的位置。它还将用于暴露 pacemaker-remote 的 stonith 信息,以及 pacemaker remote 节点是否应运行资源。在 masakri 部署的情况下,pacemaker-remote 节点应设置为不运行资源。

以下 charm 更新

  • hacluster charm。hacluster charm 需要能够支持将 pacemaker-remote 节点添加到集群,并配置资源,以便在请求时,远程节点不运行任何资源。

  • hacluster charm。hacluster charm 需要能够支持创建 maas stonith 设备

额外工作

  • 修复 masakari-hostmonitors 以支持 pacemaker remote 如前所述,masakari-hostmonitors 目前无法与 pacemaker-remote 配合使用。需要编写一个补丁来修复此问题,并最好将其提交到上游。

  • 编写 maas stonith 驱动程序。重要的是,使用共享存储的实例一次只能在一个计算节点上运行,以避免 split-brained 集群导致两个实例同时写入相同的存储,从而导致数据损坏。

这些 charms 将支持 API 通信的 TLS

备选方案

虽然功能不如 masakari 丰富,但使用 pacemaker/corosync 资源配置可以实现大部分功能。

实现

负责人

主要负责人

gnuoy

二级分配人

admcleod

Gerrit Topic

对于与此规格相关的所有补丁,请使用 Gerrit 主题“masakari”或“masakari-monitors”。

git-review -t masakari
git-review -t masakari-monitors

工作项

  • Masakari charm 清理

  • 将 domain id 信息添加到 identity-credentials 关系。keystone charm 和 identity-credentials 接口都需要更新。

  • Masakari-monitors charm 清理

  • 添加 pacemaker-remote charm

  • 添加 pacemaker-remote 接口

  • 添加功能和单元测试

  • Mojo 规格用于完整的堆栈功能测试。

  • 编写补丁以修复 masakari-hostmonitors 中的 pacemaker-remote 支持

  • 编写 Maas stonith 插件

  • 扩展 hacluster charm 以支持注册 pacemaker_remote 节点。

  • 扩展 hacluster charm 以支持仅在可用节点的子集上运行资源。

  • 扩展 hacluster charm 以支持创建 maas stonith 设备。

  • 编写部署指南说明。

  • 将新的 charms 和接口添加到 OpenStack gerrit。

仓库

https://git.openstack.org/openstack/charm-masakari https://git.openstack.org/openstack/charm-masakari-monitors

文档

两个 charms 都将包含带有说明的 README.md 文件

安全性

我们将把云的凭据存储在计算节点上。在这种情况下,从客户机降级到主机可能会允许用户通过向 masakari api 发送关于一个或多个错误的计算节点故障的信号来破坏云。用于 placement api 的 keystone 凭据已经存储在计算节点上,因此这不会增加攻击面,但值得为了完整性而提及。

我们需要在 nova compute 主机中启用证书关系,以便促进使用 vault charm 来启用 masakari ssl 功能。

测试

代码更改将由单元测试覆盖;功能测试将使用 zaza 和 Mojo 规范的组合进行。

依赖项

  • 需要集群管理,例如 corosync 或 pacemaker。至少,需要 hacluster charm

  • 需要共享存储

  • 主机故障后需要进行一些管理干预。