The current `Tacker User Guide` page doesn't have `Getting Started` for ETSI NFV-SOL Tacker. Added `Getting Started with ETSI NFV-SOL Tacker`. Also, added sample files, such as a VIM config file, VNF packages and a VNF instantiation parameters file, to the `samples` directory, which are referred from the `Getting Started` page. Change-Id: I58dadaa6c99fc45a34d87218c4d943e2572aa0a1 Signed-off-by: Hiromu Asahina <hiromu.asahina.az@hco.ntt.co.jp>
5.1 KiB
VNF scaling
VNF resources in terms of CPU core and memory are hardcoded in the VNFD template through image flavor settings. This results in either provisioning VNF for typical usage or for maximum usage. The former leads to service disruption when the load exceeds provisioned capacity. And the latter leads to underutilized resources and waste during normal system load. So Tacker provides a way to seamlessly scale the number of VNFs on demand either manually or automatically.
TOSCA schema for scaling policy
Tacker defines TOSCA schema for the scaling policy as given below:
tosca.policies.tacker.Scaling:
derived_from: tosca.policies.Scaling
description: Defines policy for scaling the given targets.
properties:
increment:
type: integer
required: true
description: Number of nodes to add or remove during the scale out/in.
min_instances:
type: integer
required: true
description: Minimum number of instances to scale in.
max_instances:
type: integer
required: true
description: Maximum number of instances to scale out.
default_instances:
type: integer
required: true
description: Initial number of instances.
cooldown:
type: integer
required: false
default: 120
description: Wait time (in seconds) between consecutive scaling
operations. During the cooldown period, scaling action will be ignored
targets:
type: list
entry_schema:
type: string
required: true
description: List of Scaling nodes.
Sample TOSCA with scaling policy
The following TOSCA snippet shows the scaling policy used in VNFD, in which vdu1 and vdu2 are already defined VDUs.
policies:
- sp1:
type: tosca.policies.tacker.Scaling
description: Simple VDU scaling
targets: [vdu1, vdu2]
properties:
min_instances: 1
max_instances: 3
default_instances: 2
increment: 1
Deploying scaling TOSCA template using Tacker
Once OpenStack/Devstack along with Tacker has been successfully installed, deploy a sample scaling template from location given below: https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd
How to create a VNFD and deploy a VNF refer to ../install/legacy_getting_started
.
How to scale VNF using CLI
Tacker provides following CLI for scaling.
$ openstack vnf scale --vnf-id <vnf-id> --vnf-name <vnf name> \
--scaling-policy-name <policy name> --scaling-type <type>
Here,
- scaling-policy-name - Policy name defined in scaling VNFD
- scaling-type - in or out
- vnf-id - scaling VNF id
- vnf-name - scaling VNF name
For example, to scale-out policy 'sp1' defined above, this command could be used as below:
$ openstack vnf scale --vnf-name sample-vnf --scaling-policy-name sp1 \
--scaling-type out
How to scale VNF using REST API
Tacker provides following REST API for scaling.
POST on v1.0/vnfs/<vnf-id>/actions
with body
{"scale": { "type": "<type>", "policy" : "<scaling-policy-name>"}}
Here,
- scaling-policy-name - Policy name defined in scaling VNFD
- scaling-type - in or out
- vnf-id - scaling VNF id
Response http status codes:
- 202 - Accepted the request for doing the scaling operation
- 404 - Bad request, if given scaling-policy-name and type are invalid
- 500 - Internal server error, on scaling operation failed due to an error
- 401 - Unauthorized
VNF state transitions during scaling operation
During the scaling operation, the VNF will be moving in below state transformations:
- ACTIVE -> PENDING_SCALE_IN -> ACTIVE
- ACTIVE -> PENDING_SCALE_IN -> ERROR
- ACTIVE -> PENDING_SCALE_OUT -> ACTIVE
- ACTIVE -> PENDING_SCALE_OUT -> ERROR
Limitations
Following features are not supported with scaling:
- Auto-scaling feature is supported only with alarm monitors and it does not work with other monitors such as ping, http_ping.
- When VNF is modelled with scaling requirement in VNFD, any config management requirement in VNFD is not supported.
- Scaling feature does not support to selectively choose the VDU as part of scaling.