Tacker 中用于滚动升级的 Fenix 插件¶
https://blueprints.launchpad.net/tacker/+spec/vnf-rolling-upgrade https://storyboard.openstack.org/#!/story/2005220
本文档描述了 Tacker 中用于滚动升级的 Fenix 插件
问题描述¶
对于主机升级或维护,管理员需要迁移在主机上运行的服务,或者通过 ACT-STB 等冗余模型提供服务。为此,与 Tacker 等管理 VNF 生命周期的 MANO 互操作至关重要。Fenix 项目提出了与 MANO 合作进行维护/升级的流程 [1]。借助 Fenix,Tacker 可以在不停止服务的情况下支持维护流程。此外,如果 VNF 提供商支持 VNF 升级/维护,则此功能也支持。因此,此功能有助于使用 Fenix 进行主机维护/升级的维护/升级流程。此蓝图提出了利用 Fenix(滚动基础设施维护、升级和扩展)的主机维护/升级模式。
提议的变更¶
本文档的范围侧重于
设计用于 VNF 维护的 Fenix 插件。设计一个 VNF 维护驱动程序,用于收集由 Ceilometer/aodh 触发的事件。 在本文档中,VNF 维护驱动程序订阅来自 ceilometer /AODH 的事件,事件类型为 ‘maintenance.planned’ [2]。
使用 TOSCA Policy 格式定义维护策略 [3]。
The VNF maintenance framework:
+-----------------------------------+
| |
| |
| +-----------------+ |
| | VNFM / TOSCA | |
| | | |
| +--------^--------+ |
| | |
| +--------v--------+ |
| | | | +----------------+
| | Fenix Plugin | | | fenix client |
| | | | +----------------+
| +-^-^-------^-^---+ | |
| | | | | | |
| +-v-v-------v-v---+ | |
| | Ceilometer/AODH | | +-------v--------+
| | |<--------------| Fenix-Engine |
| +-----------------+ | +----------------+
+-----------------------------------+
TOSCA 方案可以定义如下
tosca.policies.tacker.Maintenance
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Maintenance VNF with Fenix
metadata:
template_name: tosca-vnfd-maintenance
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
num_cpus: 2
mem_size: 2048 MB
disk_size: 15 GB
properties:
name: VDU1
image: ubuntu18.04
availability_zone: nova
mgmt_driver: noop
maintenance: true
CP11:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
order: 0
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
维护 URL 将通过 Tacker 中的 webhook 创建,如下所示
v1.0/vnfs/<vnf-uuid>/maintenance/<project_id>
vnf-uuid 代表 VNF 的标识。maintenance 表示此 URL 用于维护。project_id 代表生成 VNF 所属的项目。
维护流程¶
使用 VNFD 创建 VNF 时,VNF 会生成“维护 URL”以向 AODH 注册事件。然后,当用户请求维护时,由 Fenix Engine 生成的通知消息将传递到 ADOH,并触发事件。当事件发生时,Tacker 将通过 Tacker 插件执行 Fenix Engine 请求到 Tacker 的操作(例如,VNF 重实例化)。
维护流程可以分为两种情况。
VNF 由于基础设施(主机)维护或升级而受到影响,并且可能需要在操作期间缩小 VNF 的规模。 也可以同时升级 VNF。
VNF 由于基础设施(主机)维护或升级而受到影响。 也可以同时升级 VNF。
在第一种情况下,Tacker 遵循 Fenix 的默认流程,并支持主机维护的准备过程,例如缩小 VNF 规模并将实例迁移到另一个主机,以便为基础设施滚动维护或升级准备一个空闲主机。
流程如下
+--------+ +--------+ +-------+ +-------+
| Tacker | | AODH | | Fenix | | admin |
+--------+ +--------+ +-------+ +-------+
| | | |
VNF Creation | | |
| | | |
|--Register Alarm -->| | |
| maintenance.planned | |
| Event_type : maintenance.* |<-MAINTENANCE-|
| |<----MAINTENANCE-----| |
| | | |
| event | |
|<----MAINTENANCE----| | |
| | | |
|----------------ACK_MAINTENANCE---------->| |
| | | |
|<---------------IN_SCALE------------------| |
| | | |
Scaling | | |
|--------------ACK_IN_SCALE--------------->| |
| | | |
|<-----------PREPARE_MAINTENANCE-----------| |
| | | |
|----------ACK_PREPARE_MAINTENANCE-------->| |
| | | |
|<-----------ADMIN_ACTION_DONE-------------| |
| | | |
|<---------PLANNED_MAINTENANCE-------------| |
| | | |
|-------ACK_PLANNED_MAINTENANCE----------->| |
| | | |
|<--------MAINTENANCE_COMPLETE-------------| |
| | | |
|-------ACK_MAINTENANCE_COMPLETE---------->| |
在第二种情况下,Tacker 不需要遵循所有默认流程。 它仅执行 VNF 维护操作,例如将路径从 STB 更改为 ACT、实例重新实例化或将现有实例迁移到已维护的主机。
+--------+ +--------+ +-------+ +-------+
| Tacker | | AODH | | Fenix | | admin |
+--------+ +--------+ +-------+ +-------+
| | | |
VNF Creation | | |
| | | |
|--Register Alarm -->| | |
| maintenance.planned | |
| Event_type : maintenance.* |<-MAINTENANCE-|
| |<----MAINTENANCE-----| |
| | | |
| event | |
|<----MAINTENANCE----| | |
| | | |
|----------------ACK_MAINTENANCE---------->| |
| | | |
|<-----------ADMIN_ACTION_DONE-------------| |
| | | |
|<---------PLANNED_MAINTENANCE-------------| |
| | | |
|-------ACK_PLANNED_MAINTENANCE----------->| |
| | | |
|<--------MAINTENANCE_COMPLETE-------------| |
| | | |
|-------ACK_MAINTENANCE_COMPLETE---------->| |
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
POST 到 v1.0/vnfs/<vnf-uuid>/maintenance/<project_id>
安全性¶
无
通知影响¶
用户触发维护会话,Tacker 执行维护操作。
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Hyunsik Yang <yangun@dcn.ssu.ac.kr>
- 其他贡献者
Jangwon Lee <jangwon.lee@dcn.ssu.ac.kr>
工作项¶
维护的 TOSCA 模板定义
用于维护警报注册的 URL 创建
用于 Fenix API 的 Fenix 插件实现
单元和功能测试
文档
依赖项¶
Tacker 根据 Fenix 中定义的 API 定义所有维护 API。 Tacker 支持缩小 VNF 的规模。
测试¶
维护 VNF 测试
使用维护进行 AODH 注册
维护事件警报