ETSI NFV-SOL VNF 扩展¶
本文档描述了在 Tacker v1 API 中扩展 VNF 的方法。
注意
这是 Tacker v1 API 的文档。有关 Tacker v2 API,请参阅 ETSI NFV-SOL VNF 扩展。
概述¶
下图显示了 VNF 扩展的概述。
请求伸缩 VNF
用户通过请求
scale VNF使用 tacker-client,向 tacker-server 请求伸缩 VNF 或所有 VNF。调用 OpenStack Heat API
收到 tacker-client 的请求后,tacker-server 会将其重定向到 tacker-conductor。在 tacker-conductor 中,请求会再次根据实例化参数的内容重定向到适当的基础设施驱动程序(在本例中为 OpenStack 基础设施驱动程序)。然后,OpenStack 基础设施驱动程序调用 OpenStack Heat API。
更改虚拟机数量
OpenStack Heat 根据 API 调用更改虚拟机数量。
注意
扩展 API 版本 1 支持 is_reverse 选项。使用此选项进行的缩减操作会从最后注册的虚拟机中删除 VNF。
先决条件¶
应安装以下软件包
tacker
python-tackerclient
应根据 VIM 管理 注册默认 VIM。
下面使用的 VNF 包(sample_vnf_package_csar.zip)是通过参考 VNF 包 准备的。
从“注册 VIM”到“实例化 VNF”的扩展操作的准备过程,基本参考 ETSI NFV-SOL VNF 作为具有 LCM 操作用户数据的 VM 部署。
此过程使用示例 VNF 包。
VNF 扩展流程¶
如“先决条件”中所述,在执行扩展之前必须实例化 VNF。
CLI 命令的详细信息在 使用 v1 Tacker 进行 VNF 生命周期管理 中描述。
VNF 扩展有两种主要方法。
伸缩 VNF
缩容 VNF
如何识别 ASPECT_ID¶
为了执行扩展,有必要指定 ASPECT_ID,这是目标扩展组的 ID。首先,将描述指定 ID 的方法。
ASPECT_ID 在 VNF 包中包含的 VNFD 中描述。在以下 VNFD 摘录中,VDU1_scale 对应于 ASPECT_ID。
node_templates:
VDU1:
type: tosca.nodes.nfv.Vdu.Compute
properties:
name: VDU1
description: VDU1 compute node
vdu_profile:
min_number_of_instances: 1
max_number_of_instances: 3
...snip VNFD...
policies:
- scaling_aspects:
type: tosca.policies.nfv.ScalingAspects
properties:
aspects:
VDU1_scale:
name: VDU1_scale
description: VDU1 scaling aspect
max_scale_level: 2
step_deltas:
- delta_1
- VDU1_initial_delta:
type: tosca.policies.nfv.VduInitialDelta
properties:
initial_delta:
number_of_instances: 1
targets: [ VDU1 ]
- VDU1_scaling_aspect_deltas:
type: tosca.policies.nfv.VduScalingAspectDeltas
properties:
aspect: VDU1_scale
deltas:
delta_1:
number_of_instances: 1
targets: [ VDU1 ]
- instantiation_levels:
type: tosca.policies.nfv.InstantiationLevels
properties:
levels:
instantiation_level_1:
description: Smallest size
scale_info:
VDU1_scale:
scale_level: 0
instantiation_level_2:
description: Largest size
scale_info:
VDU1_scale:
scale_level: 2
default_level: instantiation_level_1
- VDU1_instantiation_levels:
type: tosca.policies.nfv.VduInstantiationLevels
properties:
levels:
instantiation_level_1:
number_of_instances: 1
instantiation_level_2:
number_of_instances: 3
targets: [ VDU1 ]
...snip VNFD...
注意
有关 ASPECT_ID 的详细信息,请参阅 NFV-SOL001 v2.6.1 附录 A.6。
如何扩展 VNF¶
执行 Scale CLI 命令并检查扩展前后堆栈的数量。这是为了确认扩展后堆栈的数量已增加。有关 Heat CLI 命令的详细信息,请参阅 Heat CLI 参考。
扩展前堆栈信息
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' -c 'Parent'
结果
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
| ID | Stack Name | Stack Status | Parent |
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
| 3315a9f5-9c55-45ec-8b52-91875856c6e6 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep | CREATE_COMPLETE | e9d4576f-950c-4076-a54d-35b5cf43ebdd |
| 1b0bd450-3154-4301-b004-46a8b21152c1 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-gfrxqjt6nfqb-2ufs4pbsedui | CREATE_COMPLETE | 3315a9f5-9c55-45ec-8b52-91875856c6e6 |
| e9d4576f-950c-4076-a54d-35b5cf43ebdd | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a | CREATE_COMPLETE | None |
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
可以通过以下 CLI 命令执行扩展 VNF。
$ openstack vnflcm scale --type SCALE_OUT --aspect-id VDU1_scale VNF_INSTANCE_ID
结果
Scale request for VNF Instance 0c3644ff-b207-4a6a-9d3a-d1295cda153a has been accepted.
扩展后堆栈信息
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' -c 'Parent'
结果
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
| ID | Stack Name | Stack Status | Parent |
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
| 909dc6a6-f60a-4410-84a1-9cfbfb788be1 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-cvfcy4h2rmuh-6zmqn6ason36 | CREATE_COMPLETE | 3315a9f5-9c55-45ec-8b52-91875856c6e6 |
| 3315a9f5-9c55-45ec-8b52-91875856c6e6 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep | UPDATE_COMPLETE | e9d4576f-950c-4076-a54d-35b5cf43ebdd |
| 1b0bd450-3154-4301-b004-46a8b21152c1 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-gfrxqjt6nfqb-2ufs4pbsedui | UPDATE_COMPLETE | 3315a9f5-9c55-45ec-8b52-91875856c6e6 |
| e9d4576f-950c-4076-a54d-35b5cf43ebdd | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a | CREATE_COMPLETE | None |
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
堆栈详情
$ openstack stack resource list 3315a9f5-9c55-45ec-8b52-91875856c6e6
+---------------+--------------------------------------+---------------+-----------------+----------------------+
| resource_name | physical_resource_id | resource_type | resource_status | updated_time |
+---------------+--------------------------------------+---------------+-----------------+----------------------+
| gfrxqjt6nfqb | 1b0bd450-3154-4301-b004-46a8b21152c1 | VDU1.yaml | UPDATE_COMPLETE | 2023-12-28T02:36:50Z |
| cvfcy4h2rmuh | 909dc6a6-f60a-4410-84a1-9cfbfb788be1 | VDU1.yaml | CREATE_COMPLETE | 2023-12-28T02:36:50Z |
+---------------+--------------------------------------+---------------+-----------------+----------------------+
$ openstack stack resource list 1b0bd450-3154-4301-b004-46a8b21152c1
+---------------+--------------------------------------+-------------------+-----------------+----------------------+
| resource_name | physical_resource_id | resource_type | resource_status | updated_time |
+---------------+--------------------------------------+-------------------+-----------------+----------------------+
| VDU1 | f32848eb-598f-4158-8896-5ea9479456de | OS::Nova::Server | CREATE_COMPLETE | 2023-12-28T02:32:04Z |
| VDU1_CP4 | e21dc5cc-eb46-4cf9-a352-7aa3cf659af7 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:32:04Z |
| VDU1_CP2 | 0988d9dc-97ba-43be-944d-185e316785f9 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:32:04Z |
| VDU1_CP3 | d125eec4-4e85-43cb-9887-cd5373b0abae | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:32:04Z |
| VDU1_CP5 | 16e66a58-c75c-4afe-be4f-e7eaafdfa506 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:32:04Z |
| VDU1_CP1 | d581db6b-eac8-49cf-99e0-3c494450b33b | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:32:04Z |
+---------------+--------------------------------------+-------------------+-----------------+----------------------+
$ openstack stack resource list 909dc6a6-f60a-4410-84a1-9cfbfb788be1
+---------------+--------------------------------------+-------------------+-----------------+----------------------+
| resource_name | physical_resource_id | resource_type | resource_status | updated_time |
+---------------+--------------------------------------+-------------------+-----------------+----------------------+
| VDU1 | e92cb6ca-72bb-46c8-91f1-531eb1d01315 | OS::Nova::Server | CREATE_COMPLETE | 2023-12-28T02:36:52Z |
| VDU1_CP4 | 838a673d-d684-4eaa-92ff-78f1d145b4e1 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:36:52Z |
| VDU1_CP2 | e10f8b96-7e90-4232-b8aa-ec72b9a39d55 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:36:52Z |
| VDU1_CP3 | 40960abd-5a3d-439f-8f2d-4ad70b5eb1ea | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:36:52Z |
| VDU1_CP5 | b71a8b32-5ce4-48fb-9cf5-8bb6328b3679 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:36:52Z |
| VDU1_CP1 | 35344427-eff6-47e3-820b-11782996e805 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:36:52Z |
+---------------+--------------------------------------+-------------------+-----------------+----------------------+
可以看到,通过扩展操作,具有父堆栈(ID:3315a9f5-9c55-45ec-8b52-91875856c6e6)的子堆栈(ID:909dc6a6-f60a-4410-84a1-9cfbfb788be1)增加了。
如何缩减 VNF¶
执行 Scale CLI 命令并检查扩展前后堆栈的数量。这是为了确认缩减后堆栈的数量已减少。有关 Heat CLI 命令的详细信息,请参阅 Heat CLI 参考。
缩减前堆栈信息
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' -c 'Parent'
结果
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
| ID | Stack Name | Stack Status | Parent |
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
| 909dc6a6-f60a-4410-84a1-9cfbfb788be1 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-cvfcy4h2rmuh-6zmqn6ason36 | CREATE_COMPLETE | 3315a9f5-9c55-45ec-8b52-91875856c6e6 |
| 3315a9f5-9c55-45ec-8b52-91875856c6e6 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep | UPDATE_COMPLETE | e9d4576f-950c-4076-a54d-35b5cf43ebdd |
| 1b0bd450-3154-4301-b004-46a8b21152c1 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-gfrxqjt6nfqb-2ufs4pbsedui | UPDATE_COMPLETE | 3315a9f5-9c55-45ec-8b52-91875856c6e6 |
| e9d4576f-950c-4076-a54d-35b5cf43ebdd | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a | CREATE_COMPLETE | None |
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
可以通过以下 CLI 命令缩减 VNF。
$ openstack vnflcm scale --type SCALE_IN --aspect-id VDU1_scale VNF_INSTANCE_ID
结果
Scale request for VNF Instance 0c3644ff-b207-4a6a-9d3a-d1295cda153a has been accepted.
缩减后堆栈信息
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' -c 'Parent'
结果
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
| ID | Stack Name | Stack Status | Parent |
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
| 909dc6a6-f60a-4410-84a1-9cfbfb788be1 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-cvfcy4h2rmuh-6zmqn6ason36 | UPDATE_COMPLETE | 3315a9f5-9c55-45ec-8b52-91875856c6e6 |
| 3315a9f5-9c55-45ec-8b52-91875856c6e6 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep | UPDATE_COMPLETE | e9d4576f-950c-4076-a54d-35b5cf43ebdd |
| e9d4576f-950c-4076-a54d-35b5cf43ebdd | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a | CREATE_COMPLETE | None |
+--------------------------------------+-----------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
有一个父堆栈(ID:3315a9f5-9c55-45ec-8b52-91875856c6e6)有两个子堆栈(ID:1b0bd450-3154-4301-b004-46a8b21152c1 和 ID:909dc6a6-f60a-4410-84a1-9cfbfb788be1),可以看到其中一个被缩减操作减少了。