VDU 自动修复

https://blueprints.launchpad.net/tacker/+spec/vdu-auto-healing

现在已经部署了反亲和策略,可以部署高可用的 VNF 应用程序(高可用性由运行在 VDU 上的应用程序负责)。如果其中一个 VDU 没有响应,现有的 respawn 操作会删除整个堆栈并创建新的堆栈。

我们的计划是添加一个新的操作 vdu_autohealing 来恢复失败的 VDU,而不是删除整个堆栈并创建新的堆栈。

问题描述

如果其中一个 VDU 没有响应,那么没有办法恢复该特定的失败 VDU,因为现有的 respawn 操作会删除整个堆栈并创建新的堆栈。如果所有 VDU 都被删除并替换为新的 VDU,高可用性功能将会受到影响,因为在 VDU 恢复之前会有一些停机时间。

我们的计划是添加一个新的操作 vdu_autohealing 来恢复失败的 VDU,从而使 VNF 中的其他 VDU 可以切换到主节点以保持服务不中断。

提议的变更

添加一个新的操作 ‘vdu_autohealing’,它首先会使用 ‘resource-mark-unhealthy’ heat api 将与该 VDU 关联的 VDU 和 CP 的状态(这里指的是“Heat”侧的状态)标记为不健康,然后第二步将是更新堆栈,这将使标记为不健康的 VDU 和 CP 再次恢复到“CHECK_COMPLETE”状态。在内部,当堆栈更新时,heat 会删除标记为不健康的 VDU 和 CP,并用新的 VDU 和 CP 替换它们。heat-apis 将由 VNF 使用的相应基础设施驱动程序调用。目前,我们计划为 openstack 基础设施驱动程序支持此操作。堆栈更新后,它将继续检查 VNF 的状态,直到达到 CREATE_COMPLETE,在此之前将停止对该特定 VNF 的监控。

注意:不计划为策略类型 tosca.policies.tacker.alarming 支持新的操作 vdu_autohealing,因此此操作将不包含在 tacker.plugins.common.constants 中定义的常量 DEFAULT_ALARM_ACTIONS 中。如果需要为告警策略类型支持此操作,则需要传递 metadata,其中包含在 VDU 元数据中指定的 metering.server_group 的名称。在操作本身中,基于策略类型和 metadata,我们可以扫描 ‘vnf_dict’ 参数中可用的 VNFD 模板以获取 VDU 名称。一旦我们知道 VDU 名称,将重用相同的逻辑进行自动修复。

下面显示了一个 VNFD 的示例。将使用现有的任何监控驱动程序来监控 VDU。如果它无法监控任何特定的 VDU,它将执行新的操作 vdu_autohealing

:caption: Example VNFD
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Monitoring policy action : vdu_autohealing
topology_templete:
  node_templates:
    VDU:
      type: tosca.nodes.nfv.VDU.Tacker
 # ...snip...
      properties:
          monitoring_policy:
              name: ping
              parameters:
                  monitoring_delay: 45
                  count: 3
                  interval: 1
                  timeout: 2
              actions:
                  failure: vdu_autohealing

备选方案

另一种替代解决方案与 vdu-affinity-policy spec 的替代部分中描述的相同 [1]。在 NSD 中,我们可以添加两个 VNF,一个用于活动状态,另一个用于待机状态。如果 tacker 在监控期间检测到任何问题,则 respawn 操作将删除该特定的 VNF 并创建一个新的 VNF。如果失败的 VNF 是活动状态,则另一个待机 VNF 将变为活动状态并继续提供请求而不会中断。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Bhagyashri Shewale <bhagyashri.shewale@nttdata.com>

其他贡献者

Hiroyuki Jo <jo.hiroyuki@lab.ntt.co.jp>

Tushar Patil <tushar.vitthal.patil@gmail.com>

工作项

  • 添加 vdu_autohealing 操作以标记 VDU 状态为不健康并更新堆栈

  • 单元测试

  • 功能测试

  • Update documentation

依赖项

测试

单元测试和功能测试足以测试 vdu_autohealing 操作。

文档影响

  • 在 samples 下添加 VNFD tosca-template 以显示如何配置 vdu_autohealing 操作。

  • 在 Tacker 监控框架中添加一个新的操作 vdu_autohealing [2]

参考资料