VDU auto healing¶
https://blueprints.launchpad.net/tacker/+spec/vdu-auto-healing
With anti-affinity policy now in place, it’s possible to deploy high
available VNF applications (High availability will be taken care by the
application running on VDUs). If one of the VDUs is not responding, then
the existing respawn
action deletes entire stack and creates new
ones.
Our plan is to add a new action vdu_autohealing
to bring back the
failed VDU instead of deleting entire stack and creating a new one.
Problem description¶
If one of the VDUs is not responding, then there is no way to bring back
that particular failed VDU as the existing respawn
action deletes
the entire stack and creates a new one. If all VDUs are deleted and
replaced by new ones, high availability feature will be hampered as
there will be some down time until the VDUs are back again.
Our plan is to add a new action vdu_autohealing
to bring back the
failed VDU thereby enabling other VDU in VNF to switch over to master to
keep services uninterrupted.
Proposed change¶
Add a new action ‘vdu_autohealing’ which will first mark the status (here, this is the status of “Heat” side) of VDU and CPs assigned to that particular VDU as unhealthy using ‘resource-mark-unhealthy’ heat api and then the second step will be to update the stack which will bring back the VDU and CPs marked as unhealthy to “CHECK_COMPLETE” again. Internally, when stack is updated, heat deletes the VDUs and CPs marked as unhealthy and replaces it with a new ones. The heat-apis will be called from respective infra driver used by the VNF. Presently, we are going to support this action for openstack infra driver. After stack is updated, it will keep checking the status of VNF to CREATE_COMPLETE until that point monitoring of that particular VNF will be stopped.
Note: No plan to support this new action vdu_autohealing for policy type tosca.policies.tacker.alarming so this action will not be included in constant DEFAULT_ALARM_ACTIONS as defined in tacker.plugins.common.constants. If this action needs to be supported for policy type alarms, then there is need to pass metadata where the action is invoked. This metadata contains the name of the metering.server_group that you specify in VDU metadata. In the action itself, based on policy type and metadata, we can scan VNFD template available in ‘vnf_dict’ parameter to get VDU name. Once we know the VDU name, the same logic will be reused for auto-healing.
An example of VNFD is shown below. The VDU will be monitored using any of the existing monitoring drivers. If it fails to monitor any specific VDU, it will execute the new action vdu_autohealing.
:caption: Example VNFD
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Monitoring policy action : vdu_autohealing
topology_templete:
node_templates:
VDU:
type: tosca.nodes.nfv.VDU.Tacker
# ...snip...
properties:
monitoring_policy:
name: ping
parameters:
monitoring_delay: 45
count: 3
interval: 1
timeout: 2
actions:
failure: vdu_autohealing
Alternatives¶
The other alternative solution is the same one as described in alternative section of vdu-affinity-policy spec [1]. In NSD, we can add two VNFs, one for active and another for standby. If tacker detects any issues during monitoring, then respawn action will delete that particular VNF and create a new one. If the failed VNF is active, then the other standby VNF will become active and continue servicing request without interruption.
Data model impact¶
None
REST API impact¶
None
Security impact¶
None
Notifications impact¶
None
Other end user impact¶
None
Performance Impact¶
None
Other deployer impact¶
None
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
Bhagyashri Shewale <bhagyashri.shewale@nttdata.com>
- Other contributors:
Hiroyuki Jo <jo.hiroyuki@lab.ntt.co.jp>
Tushar Patil <tushar.vitthal.patil@gmail.com>
Work Items¶
Add vdu_autohealing action to mark VDU status to unhealthy and update stack
Unit Tests
Functional Tests
Update documentation
Dependencies¶
None
Testing¶
Unit and functional tests are sufficient to test vdu_autohealing action.
Documentation Impact¶
Add VNFD tosca-template under samples to show how to configure vdu_autohealing action.
Add a new action vdu_autohealing in Tacker Monitoring Framework [2].