VNF 自动愈合,由故障通知触发

概述

Tacker 支持使用 FaultNotification 接口进行 AutoHealing。当 VIM 中发生故障事件时,VIM 会通过该接口向 Tacker 发送故障事件通知。Tacker 会主动发起自动愈合。Tacker 会检查故障事件中的 faultID 属性,并确定是否应执行自动愈合。如果执行自动愈合,虚拟机将被删除或创建。

配置

默认情况下,故障通知已禁用。要启用故障通知,请确保将 CONF.server_notification.server_notification 设置为 true。

配置 (CONF.server_notification)

默认值

描述

server_notification

false

启用故障通知接口。

uri_path_prefix

/server_notification

故障通知接口的 URI 路径前缀字符串。更改此配置时,api-paste.ini 中的 server_notification 描述必须更改为相同的值。

timer_interval

20

如果在 timer_interval 秒内通知了针对某个 VNF 实例的多个故障事件,Tacker 会将这些通知打包成单个事件。通过这样做,Tacker 可以避免发出过多的愈合请求。

系统

故障通知自动愈合需要一个名为 Server Notifier 的外部服务。

Server Notifier 是一个监控服务,由每个运营商实现,因此不包含在 Tacker 中。当 Server Notifier 在 VIM 中检测到故障事件时,它会将 FaultNotification 发送到 Tacker。

设置故障通知接口 URI 或为 Server Notifier 启用监控是在 VNF 生命周期期间执行的。因此,Tacker 提供了一个 mgmt driver script 的示例实现,以实现接口注册和监控启用。

                       +--------------------------+
                       |      Client (NFVO)       +--------+
                       +--------------------------+        | 1. Vnf instantiation
                       +-----------------------------------v--------------------------------+
                       |               2.Create VM                                   Tacker |
6.FaultNotification    |               3.Interface registration (in mgmt driver)            |
        +-------------->               7.Perform Healing                                    |
        |              |               8.Delete failed VM and Create new VM                 |
        |              +---------------------------------------+-------------+--------------+
        |       +----------------------------------------------+             |
 +------|-------|------------------------------------------------------------|--------------+
 |      |       | 4.Start monitoring                +---------------+--------+     VIM/NFVI |
 |      |       |                                   |               |                       |
 |   +--+-------v--+                       +--------v----+   +------v------+                |
 |   | Server      | 5.Detects fault event | +--------+  |   | +--------+  |                |
 |   | Notifier    +-------------------------> VNF    |  |   | | VNF    |  |                |
 |   |             |                       | +--------+  |   | +--------+  |                |
 |   |             |                       |          VM |   |          VM |                |
 |   +-------------+                       +-------------+   +-------------+                |
 +------------------------------------------------------------------------------------------+

有关接口的详细信息,请参阅 故障通知接口

Mgmt driver script

用于实现接口注册和监控启用的示例 mgmt driver script 是 tacker/sol_refactored/mgmt_drivers/server_notification.py

将此脚本放入目标 VNF 包中,Server Notifier 就可以检测到 VNF 上的故障事件。

LCM 接口

LCM 接口已修改为设置 Server Notifier 的参数。使用 FaultNotification 时,必须设置 additionalParams

  • 名称:实例化 VNF 任务
    描述:此任务资源表示 Instantiate VNF 操作。客户端可以使用此资源来实例化 VNF 实例。 此处仅描述 FaultNotification additionalParams vnfConfigurableProperties
    方法类型:POST
    资源的 URL:/vnflcm/v2/vnf_instances/{vnfInstanceId}/instantiate
    请求:

    属性名称 (InstantiateVnfRequest)

    数据类型

    基数

    描述

    vnfConfigurableProperties

    KeyValuePairs

    0..1

    提供 VNF 实例当前可配置属性值的附加 VNF 特定属性。

    additionalParams

    KeyValuePairs

    0..1

    用于实例化过程的附加输入参数,特定于正在实例化的 VNF。

    属性名称 (vnfConfigurableProperties)

    数据类型

    基数

    描述

    isAutohealEnabled

    布尔值

    0..1

    如果存在,VNF 支持自动愈合。如果设置为 true,则当前已启用自动愈合。如果设置为 false,则当前已禁用自动愈合。

    属性名称 (additionalParams)

    数据类型

    基数

    描述

    ServerNotifierUri

    字符串

    1

    ServerNotifier 的基本 URI。

    ServerNotifierFaultID

    字符串

    1..N

    指示要检测的警报类型的字符串列表。

ServerNotifierUriServerNotifierFaultID 的值存储在 vnfInstance 的 instantiatedVnfInfo 中。可以使用 vnflcm show 命令显示这些值。例如

$ openstack vnflcm show 6fd264ea-78fb-4862-90c0-1a9597734d95 --os-tacker-api-version 2
+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field                       | Value                                                                                                                                                                |
+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ID                          | 6fd264ea-78fb-4862-90c0-1a9597734d95                                                                                                                                 |
| Instantiated Vnf Info       | {                                                                                                                                                                    |
|                             |  ....                                                                                                                                                                |
|                             |     "metadata": {                                                                                                                                                    |
|                             |         "ServerNotifierUri": "https://:9990/server_notification",                                                                                            |
|                             |         "ServerNotifierFaultID": ["1111", "1234"]                                                                                                                    |
|                             |     }                                                                                                                                                                |
|                             |  ....                                                                                                                                                                |
| VNF Configurable Properties | isAutohealEnabled=True                                                                                                                                               |
|                             |  ....                                                                                                                                                                |
+-----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+

自动愈合

当 VIM 中发生故障事件时,ServerNotifier 会通过 FaultNotification 接口将故障事件通知给 Tacker。

Tacker 会检查故障事件中的 fault_id 属性,并确定是否应执行自动愈合。如果执行自动愈合,虚拟机将通过 Heat 删除和创建。客户端无需处理愈合。

使用供应商特定插件

ServerNotification 插件可以替换为供应商特定的功能。要替换插件,请更改以下配置。替换的类必须是 tacker.sol_refactored.common.monitoring_plugin_base.MonitoringPlugin 的子类。

配置 (CONF.server_notification)

默认值

描述

server_notification_package

tacker.sol_refactored.common.server_notification

服务器通知的包名称。

server_notification_class

ServerNotification

服务器通知的类名称。

错误处理

本章介绍如果在 FaultNotification 功能中 LCM 失败,如何执行错误处理。

FaultNotification 功能的 LCM 将使用 MgmtDriver,因此如果用户想在错误处理的回滚操作中调用 MgmtDriver,则需要提前修改 VNF 包。

有关具体修改方法,请参阅 ETSI NFV-SOL VNF 错误处理 中的 MgmtDriver 的错误处理

注意

修改 VNF 包后,可以正常执行 LCM。如果 LCM 失败,用户可以执行错误处理操作。

有关详细信息,请参阅 ETSI NFV-SOL VNF 错误处理 中的 重试 VNF LCM 操作回滚 VNF LCM 操作 的内容。