支持 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 部分。
参考资料¶
无
历史¶
无