05bce7441e
The current document doesn't have an overview of VNF LCM operations, e.g., Deployment, Scaling and Healing. For example, the VNF scaling creates/changes VMs with OpenStack Heat API and users have to confirm results of an operation with `openstack stack` command, but the relationship between OpenStack Tacker and OpenStack Heat is not explicitly described. For ease of understanding, added diagrams and brief explanation of the LCM operations listed below. - ETSI NFV-SOL VNF Deployment as VM with TOSCA - ETSI NFV-SOL VNF Deployment as VM with LCM operation user data - ETSI NFV-SOL CNF (Containerized VNF) Deployment - ETSI NFV-SOL VNF Healing - ETSI NFV-SOL VNF Scaling - ETSI NFV-SOL CNF Healing - ETSI NFV-SOL CNF Scaling Change-Id: I3ddf9e5ec68c0e84ccc9df4fea9ee274562a3e88
338 lines
15 KiB
ReStructuredText
338 lines
15 KiB
ReStructuredText
========================
|
|
ETSI NFV-SOL VNF Scaling
|
|
========================
|
|
|
|
This document describes how to scale VNF in Tacker.
|
|
|
|
Overview
|
|
--------
|
|
|
|
The diagram below shows an overview of the VNF scaling.
|
|
|
|
1. Request scale VNF
|
|
|
|
A user requests tacker-server to scale a VNF or all VNFs with tacker-client
|
|
by requesting ``scale VNF``.
|
|
|
|
2. Call OpenStack Heat API
|
|
|
|
Upon receiving a request from tacker-client, tacker-server redirects it to
|
|
tacker-conductor. In tacker-conductor, the request is redirected again to
|
|
an appropriate infra-driver (in this case OpenStack infra-driver) according
|
|
to the contents of the instantiate parameters. Then, OpenStack infra-driver
|
|
calls OpenStack Heat APIs.
|
|
|
|
3. Change the number of VMs
|
|
|
|
OpenStack Heat change the number of VMs according to the API calls.
|
|
|
|
.. figure:: ../_images/etsi_vnf_scaling.png
|
|
:align: left
|
|
|
|
|
|
Prerequisites
|
|
-------------
|
|
|
|
The following packages should be installed:
|
|
|
|
* tacker
|
|
* python-tackerclient
|
|
|
|
A default VIM should be registered according to
|
|
:doc:`../cli/cli-legacy-vim`.
|
|
|
|
The VNF Package(sample_vnf_pkg.zip) used below is prepared
|
|
by referring to :doc:`./vnf-package`.
|
|
|
|
Execute up to "Instantiate VNF" in the procedure of
|
|
:doc:`./etsi_vnf_deployment_as_vm_with_tosca` or
|
|
:doc:`./etsi_vnf_deployment_as_vm_with_user_data`.
|
|
In other words, the procedure after "Terminate VNF" is not executed.
|
|
|
|
|
|
VNF Scaling Procedure
|
|
---------------------
|
|
|
|
As mentioned in Prerequisites, the VNF must be instantiated
|
|
before performing scaling.
|
|
|
|
Details of CLI commands are described in
|
|
:doc:`../cli/cli-etsi-vnflcm`.
|
|
|
|
There are two main methods for VNF scaling.
|
|
|
|
* Scale out VNF
|
|
* Scale in VNF
|
|
|
|
|
|
How to Identify ASPECT_ID
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
In order to execute scaling, it is necessary to specify
|
|
ASPECT_ID, which is the ID for the target scaling group.
|
|
First, the method of specifying the ID will be described.
|
|
|
|
ASPECT_ID is described in VNFD included in the VNF Package.
|
|
In the following VNFD excerpt, **VDU1_scale**
|
|
corresponds to ASPECT_ID.
|
|
|
|
.. code-block:: yaml
|
|
|
|
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
|
|
|
|
...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...
|
|
|
|
|
|
.. note:: See `NFV-SOL001 v2.6.1`_ annex A.6 for details about ASPECT_ID.
|
|
|
|
|
|
How to Scale Out VNF
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Execute Scale CLI command and check the number of stacks
|
|
before and after scaling.
|
|
This is to confirm that the number of stacks has increased
|
|
after Scale-out.
|
|
See `Heat CLI reference`_. for details on Heat CLI commands.
|
|
|
|
|
|
Stack information before scale-out:
|
|
|
|
.. code-block:: console
|
|
|
|
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' -c 'Parent'
|
|
|
|
|
|
Result:
|
|
|
|
.. code-block:: console
|
|
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
| ID | Stack Name | Stack Status | Parent |
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
| 43b183c8-53cc-430f-b4e8-b0e1adc4e702 | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx-rlitsss7zfsx-oa4wsjz5yfcf | CREATE_COMPLETE | b96169b5-d692-4b5c-81b2-86010775180e |
|
|
| b96169b5-d692-4b5c-81b2-86010775180e | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx | CREATE_COMPLETE | 6f48a8cf-0acb-4271-ae72-562c903f5381 |
|
|
| 6f48a8cf-0acb-4271-ae72-562c903f5381 | vnflcm_edd306c3-647c-412c-a033-74aa40118038 | CREATE_COMPLETE | None |
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
|
|
|
|
Scale-out VNF can be executed by the following CLI command.
|
|
|
|
.. code-block:: console
|
|
|
|
$ openstack vnflcm scale --type SCALE_OUT --aspect-id VDU1_scale VNF_INSTANCE_ID
|
|
|
|
|
|
Result:
|
|
|
|
.. code-block:: console
|
|
|
|
Scale request for VNF Instance edd306c3-647c-412c-a033-74aa40118038 has been accepted.
|
|
|
|
|
|
Stack information after scale-out:
|
|
|
|
.. code-block:: console
|
|
|
|
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' -c 'Parent'
|
|
|
|
|
|
Result:
|
|
|
|
.. code-block:: console
|
|
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
| ID | Stack Name | Stack Status | Parent |
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
| 44c364a0-1928-4717-bd95-43a74a5fe520 | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx-prjzcxxskx4i-bwx6egqcdlqg | CREATE_COMPLETE | b96169b5-d692-4b5c-81b2-86010775180e |
|
|
| 43b183c8-53cc-430f-b4e8-b0e1adc4e702 | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx-rlitsss7zfsx-oa4wsjz5yfcf | UPDATE_COMPLETE | b96169b5-d692-4b5c-81b2-86010775180e |
|
|
| b96169b5-d692-4b5c-81b2-86010775180e | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx | UPDATE_COMPLETE | 6f48a8cf-0acb-4271-ae72-562c903f5381 |
|
|
| 6f48a8cf-0acb-4271-ae72-562c903f5381 | vnflcm_edd306c3-647c-412c-a033-74aa40118038 | CREATE_COMPLETE | None |
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
|
|
|
|
Stack details:
|
|
|
|
.. code-block:: console
|
|
|
|
$ openstack stack resource list b96169b5-d692-4b5c-81b2-86010775180e
|
|
+---------------+--------------------------------------+---------------+-----------------+----------------------+
|
|
| resource_name | physical_resource_id | resource_type | resource_status | updated_time |
|
|
+---------------+--------------------------------------+---------------+-----------------+----------------------+
|
|
| rlitsss7zfsx | 43b183c8-53cc-430f-b4e8-b0e1adc4e702 | VDU1.yaml | UPDATE_COMPLETE | 2021-01-06T05:24:50Z |
|
|
| prjzcxxskx4i | 44c364a0-1928-4717-bd95-43a74a5fe520 | VDU1.yaml | CREATE_COMPLETE | 2021-01-06T05:24:49Z |
|
|
+---------------+--------------------------------------+---------------+-----------------+----------------------+
|
|
|
|
$ openstack stack resource list 43b183c8-53cc-430f-b4e8-b0e1adc4e702
|
|
+----------------+--------------------------------------+------------------------+-----------------+----------------------+
|
|
| resource_name | physical_resource_id | resource_type | resource_status | updated_time |
|
|
+----------------+--------------------------------------+------------------------+-----------------+----------------------+
|
|
| VDU1 | 82fd8c7d-7a55-449e-b563-457c6c59e9ac | OS::Nova::Server | CREATE_COMPLETE | 2021-01-06T05:15:35Z |
|
|
+----------------+--------------------------------------+------------------------+-----------------+----------------------+
|
|
|
|
$ openstack stack resource list 44c364a0-1928-4717-bd95-43a74a5fe520
|
|
+----------------+--------------------------------------+------------------------+-----------------+----------------------+
|
|
| resource_name | physical_resource_id | resource_type | resource_status | updated_time |
|
|
+----------------+--------------------------------------+------------------------+-----------------+----------------------+
|
|
| VDU1 | 073fc301-49a5-41ff-953f-5fa6736414ed | OS::Nova::Server | CREATE_COMPLETE | 2021-01-06T05:24:49Z |
|
|
+----------------+--------------------------------------+------------------------+-----------------+----------------------+
|
|
|
|
|
|
It can be seen that the child-stack (ID: 44c364a0-1928-4717-bd95-43a74a5fe520)
|
|
with the parent-stack (ID: b96169b5-d692-4b5c-81b2-86010775180e)
|
|
is increased by the scaling out operation.
|
|
|
|
|
|
How to Scale in VNF
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
Execute Scale CLI command and check the number of stacks
|
|
before and after scaling.
|
|
This is to confirm that the number of stacks has decreased
|
|
after Scale-in.
|
|
See `Heat CLI reference`_. for details on Heat CLI commands.
|
|
|
|
|
|
Stack information before scale-in:
|
|
|
|
.. code-block:: console
|
|
|
|
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' -c 'Parent'
|
|
|
|
|
|
Result:
|
|
|
|
.. code-block:: console
|
|
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
| ID | Stack Name | Stack Status | Parent |
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
| 44c364a0-1928-4717-bd95-43a74a5fe520 | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx-prjzcxxskx4i-bwx6egqcdlqg | CREATE_COMPLETE | b96169b5-d692-4b5c-81b2-86010775180e |
|
|
| 43b183c8-53cc-430f-b4e8-b0e1adc4e702 | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx-rlitsss7zfsx-oa4wsjz5yfcf | UPDATE_COMPLETE | b96169b5-d692-4b5c-81b2-86010775180e |
|
|
| b96169b5-d692-4b5c-81b2-86010775180e | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx | UPDATE_COMPLETE | 6f48a8cf-0acb-4271-ae72-562c903f5381 |
|
|
| 6f48a8cf-0acb-4271-ae72-562c903f5381 | vnflcm_edd306c3-647c-412c-a033-74aa40118038 | CREATE_COMPLETE | None |
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
|
|
|
|
Scale-in VNF can be executed by the following CLI command.
|
|
|
|
.. code-block:: console
|
|
|
|
$ openstack vnflcm scale --type SCALE_IN --aspect-id VDU1_scale VNF_INSTANCE_ID
|
|
|
|
|
|
Result:
|
|
|
|
.. code-block:: console
|
|
|
|
Scale request for VNF Instance edd306c3-647c-412c-a033-74aa40118038 has been accepted.
|
|
|
|
|
|
Stack information after scale-in:
|
|
|
|
.. code-block:: console
|
|
|
|
$ openstack stack list --nested -c 'ID' -c 'Stack Name' -c 'Stack Status' -c 'Parent'
|
|
|
|
|
|
Result:
|
|
|
|
.. code-block:: console
|
|
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
| ID | Stack Name | Stack Status | Parent |
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
| 44c364a0-1928-4717-bd95-43a74a5fe520 | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx-prjzcxxskx4i-bwx6egqcdlqg | UPDATE_COMPLETE | b96169b5-d692-4b5c-81b2-86010775180e |
|
|
| b96169b5-d692-4b5c-81b2-86010775180e | vnflcm_edd306c3-647c-412c-a033-74aa40118038-VDU1_scale_group-5w6gwjuqjpsx | UPDATE_COMPLETE | 6f48a8cf-0acb-4271-ae72-562c903f5381 |
|
|
| 6f48a8cf-0acb-4271-ae72-562c903f5381 | vnflcm_edd306c3-647c-412c-a033-74aa40118038 | CREATE_COMPLETE | None |
|
|
+--------------------------------------+-----------------------------------------------------------------------------------------------------+-----------------+--------------------------------------+
|
|
|
|
|
|
There were two child-stacks(ID: 44c364a0-1928-4717-bd95-43a74a5fe520
|
|
and ID: 43b183c8-53cc-430f-b4e8-b0e1adc4e702) with
|
|
a parent-stack(ID: b96169b5-d692-4b5c-81b2-86010775180e),
|
|
it can be seen that one of them is decreased by the scale-in operation.
|
|
|
|
|
|
.. _NFV-SOL001 v2.6.1 : https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/001/02.06.01_60/gs_NFV-SOL001v020601p.pdf
|
|
.. _Heat CLI reference : https://docs.openstack.org/python-openstackclient/latest/cli/plugin-commands/heat.html
|