ETSI NFV-SOL VNF 伸缩¶
本文档描述了在 Tacker v2 API 中如何伸缩 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 调用更改虚拟机数量。
注意
缩减操作会从最后一个注册的虚拟机中删除 VNF。
先决条件¶
应安装以下软件包
tacker
python-tackerclient
执行 ETSI NFV-SOL VNF 部署为带有 LCM 操作用户数据的虚拟机 中的过程,直到“实例化 VNF”。 换句话说,在“终止 VNF”之后的过程不会执行。
VNF 伸缩流程¶
如前提条件中所述,在执行伸缩之前必须实例化 VNF。
CLI 命令的详细信息在 v2 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
capabilities:
virtual_compute:
properties:
requested_additional_capabilities:
properties:
requested_additional_capability_name: m1.tiny
support_mandatory: true
target_performance_parameters:
entry_schema: test
virtual_memory:
virtual_mem_size: 512 MB
virtual_cpu:
num_virtual_cpu: 1
virtual_local_storage:
- size_of_storage: 3 GB
requirements:
- virtual_storage: VDU1-VirtualStorage
...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' --os-tacker-api-version 2
结果
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
| ID | Stack Name | Stack Status | Parent |
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
| f4221c17-0b42-41c8-af4e-66b15a730275 | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU1-0-tnyubgoik7ib | CREATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| 4533da6b-df2e-44bc-b52c-83c1db74aa3f | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU2-0-5whajpoqh5uh | CREATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c | CREATE_COMPLETE | None |
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
可以通过以下 CLI 命令执行伸展 VNF。
$ openstack vnflcm scale --type SCALE_OUT --aspect-id VDU1_scale \
--additional-param-file param_file VNF_INSTANCE_ID --os-tacker-api-version 2
结果
Scale request for VNF Instance df9150a0-8679-4b14-8cbc-9d2d6606ca7c has been accepted.
扩展后堆栈信息
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' \
-c 'Parent' --os-tacker-api-version 2
结果
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
| ID | Stack Name | Stack Status | Parent |
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
| 10a627b8-afde-4ecc-b44a-2200b733ea2e | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU1-1-5vvpoq7l2c2k | CREATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| f4221c17-0b42-41c8-af4e-66b15a730275 | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU1-0-tnyubgoik7ib | UPDATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| 4533da6b-df2e-44bc-b52c-83c1db74aa3f | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU2-0-5whajpoqh5uh | UPDATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c | UPDATE_COMPLETE | None |
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
堆栈详情
$ openstack stack resource list --filter type=VDU1.yaml cbf6a703-f8fc-441a-9e9d-4f5f723a1e69
+---------------+--------------------------------------+---------------+-----------------+----------------------+
| resource_name | physical_resource_id | resource_type | resource_status | updated_time |
+---------------+--------------------------------------+---------------+-----------------+----------------------+
| VDU1-0 | f4221c17-0b42-41c8-af4e-66b15a730275 | VDU1.yaml | UPDATE_COMPLETE | 2023-11-10T04:16:05Z |
| VDU1-1 | 10a627b8-afde-4ecc-b44a-2200b733ea2e | VDU1.yaml | CREATE_COMPLETE | 2023-11-10T04:16:04Z |
+---------------+--------------------------------------+---------------+-----------------+----------------------+
$ openstack stack resource list --filter type=OS::Nova::Server f4221c17-0b42-41c8-af4e-66b15a730275
+---------------+--------------------------------------+------------------+-----------------+----------------------+
| resource_name | physical_resource_id | resource_type | resource_status | updated_time |
+---------------+--------------------------------------+------------------+-----------------+----------------------+
| VDU1 | 3395b07e-8c2e-4fb8-a652-f180d03ab284 | OS::Nova::Server | CREATE_COMPLETE | 2023-11-10T02:58:48Z |
+---------------+--------------------------------------+------------------+-----------------+----------------------+
$ openstack stack resource list --filter type=OS::Nova::Server 10a627b8-afde-4ecc-b44a-2200b733ea2e
+---------------+--------------------------------------+------------------+-----------------+----------------------+
| resource_name | physical_resource_id | resource_type | resource_status | updated_time |
+---------------+--------------------------------------+------------------+-----------------+----------------------+
| VDU1 | 3851c17e-ff76-445f-8286-12e4e1b0c125 | OS::Nova::Server | CREATE_COMPLETE | 2023-11-10T04:16:06Z |
+---------------+--------------------------------------+------------------+-----------------+----------------------+
可以看到,伸展操作增加了具有父堆栈(ID:cbf6a703-f8fc-441a-9e9d-4f5f723a1e69)的子堆栈(ID:10a627b8-afde-4ecc-b44a-2200b733ea2e)。
如何缩减 VNF¶
执行 Scale CLI 命令并检查伸缩前后堆栈的数量。 这用于确认缩减后堆栈的数量已减少。 请参阅 Heat CLI 参考,了解 Heat CLI 命令的详细信息。
缩减前堆栈信息
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' \
-c 'Parent' --os-tacker-api-version 2
结果
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
| ID | Stack Name | Stack Status | Parent |
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
| 10a627b8-afde-4ecc-b44a-2200b733ea2e | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU1-1-5vvpoq7l2c2k | CREATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| f4221c17-0b42-41c8-af4e-66b15a730275 | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU1-0-tnyubgoik7ib | UPDATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| 4533da6b-df2e-44bc-b52c-83c1db74aa3f | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU2-0-5whajpoqh5uh | UPDATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c | UPDATE_COMPLETE | None |
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
可以通过以下 CLI 命令缩减 VNF。
$ openstack vnflcm scale --type SCALE_IN --aspect-id VDU1_scale \
--additional-param-file param_file VNF_INSTANCE_ID --os-tacker-api-version 2
结果
Scale request for VNF Instance df9150a0-8679-4b14-8cbc-9d2d6606ca7c has been accepted.
缩减后堆栈信息
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' \
-c 'Parent' --os-tacker-api-version 2
结果
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
| ID | Stack Name | Stack Status | Parent |
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
| f4221c17-0b42-41c8-af4e-66b15a730275 | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU1-0-tnyubgoik7ib | UPDATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| 4533da6b-df2e-44bc-b52c-83c1db74aa3f | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c-VDU2-0-5whajpoqh5uh | UPDATE_COMPLETE | cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 |
| cbf6a703-f8fc-441a-9e9d-4f5f723a1e69 | vnf-df9150a0-8679-4b14-8cbc-9d2d6606ca7c | UPDATE_COMPLETE | None |
+--------------------------------------+--------------------------------------------------------------+-----------------+--------------------------------------+
有一个父堆栈(ID:cbf6a703-f8fc-441a-9e9d-4f5f723a1e69)和两个子堆栈(ID:f4221c17-0b42-41c8-af4e-66b15a730275 和 ID:10a627b8-afde-4ecc-b44a-2200b733ea2e),可以看到缩减操作减少了一个子堆栈。