支持 Watcher HA 主动-主动模式

https://blueprints.launchpad.net/watcher/+spec/support-watcher-ha-active-active-mode

Watcher 决策引擎和应用器目前不支持 HA 主动-主动模式。

问题描述

在实际环境中,通常会存在多个控制器。Watcher 决策引擎和应用器部署在控制器上。现在只有一个 Watcher 决策引擎或应用器处于活动状态。否则,Watcher 决策引擎将为 CONTINUOUS 审计生成重复的行动计划,并且我们不知道哪个应用器正在执行行动计划。另一个问题是如何同步决策引擎的数据模型。现在,决策引擎根据 Nova 的通知更新其数据模型。如果有多个决策引擎,我们需要找到一种广播通知的方式。一种解决方案是不依赖通知,而是在每次审计之前更新 CDM。

用例

作为操作员,我希望在所有控制器上启用所有 Watcher 决策引擎和应用器。

提议的变更

如果我们启用多个 Watcher 决策引擎,问题在于如何知道审计与 Watcher 决策引擎之间的关系。我们可以向 Audit 表添加一个新的 ‘host’ 字段来解决这个问题。当我们将审计状态从 PENDING 更改为 ONGOING 时,我们将 host 字段设置为记录 Watcher 决策引擎的主机名。

因此,更改将包括

  • Watcher 决策引擎 CDM 应该以广播模式消耗来自 Nova 的通知,以使 CDM 同步。

  • 向 audit 表添加一个新的 ‘host’ 字段

  • 向 actionplan 表添加一个新的 ‘host’ 字段

  • 在将 audit 的状态从 PENDING 更改为 ONGOING 时记录 host

  • 在将 actionplan 的状态从 PENDING 更改为 ONGOING 时记录 host

  • 对于 CONTINUOUS 审计,我们需要检查正在运行决策引擎的主机和 audit 表中记录的 host 值。如果它们不同,则跳过该审计。

  • 当启动应用器进程时,如果有具有相同 host 的 ONGOING actionplan,则取消这些过时的 actionplan。这些过时 actionplan 的操作也应标记为 CANCELLED。

  • 行动计划包括不同的资源,这些资源在 Actions 中表示。如果用户想要同时运行多个行动计划,Watcher 应该检查新的行动计划的资源是否与已经运行的资源重叠。如果是,Watcher 应该通过引发适当的错误来防止运行新的行动计划。

备选方案

数据模型影响

  • 在 audit 表中添加一个新的 ‘host’ 字段

  • 在 actionplan 表中添加一个新的 ‘host’ 字段

REST API 影响

安全影响

通知影响

向 AuditPayload、ActionPlanPayload 添加 ‘host’ 字段

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

alexchadin

其他贡献者

licanwei

工作项

  • 为 DE 添加广播通知

  • 更新数据库以添加一个新的 ‘host’ 字段

  • 在将状态从 PENDING 更改为 ONGOING 时记录 host

  • 为 CONTINUOUS 审计添加 host 检查

  • 启动应用器时检查过时的 actionplan

依赖项

测试

为每个更改添加单元测试。

文档影响

应添加适当的文档,其中包含新的 HA 部分。

参考资料

历史