You can deploy VNFs on multiple VIMs of the same type using ESC.
To deploy VMs on a single instance of OpenStack, see Deploying VNFs on OpenStack.
ESC Release 3.0 and later supports deploying VNFs on multiple OpenStack VIMs only.
To deploy VNFs on multiple VIMs, you must:
A VIM connector registers the VIM to ESC. To deploy VNFs on multiple VIMs, you must configure the VIM connector and its credentials for each instance of the VIM. You can configure a VIM connector either at the time of installation using the bootvm.py parameters, or using the VIM connector APIs. A default VIM connector is used for a single VIM deployment. For multi VIM deployment, the locator attribute is used to specify the VIM connector.
Typically an ESC, which supports multi VIM deployment has,
a default VIM on which ESC creates and manages resources,
and a non-default VIM on which only deployments are supported.
For more details, see Managing VIM Connectors.
A root tenant in the data model hierarchy, which is a tenant within ESC (with the vim_mapping attribute set to false), and an out-of-band VIM tenant placed within the locator attribute must be available for deploying VNFs on multiple VIMs. If the root tenant does not exist, ESC can create a tenant during the multiple VIM deployment itself. You can create more than one ESC tenant. A user can use more than one tenant for multiple VIMs. For more information, see Managing Tenants.
In a multiple VIM deployment, you can specify the target VIM for each VM group. You can deploy each VM group on a different VIM, but the VMs within the VM group are deployed on the same VIM.
You must add a locator attribute to the VM group in the data model to enable multiple VIM deployment. The locator node consists of the following attributes:
If the locator attribute is present in the deployment, then the VMs are deployed on the VIM specified in the locator. If the locator attribute is not present in the deployment, then the VMs are deployed on the default VIM. If the default VIM is also not present, then the request is rejected.
vim_id—is the vim id of the target VIM. ESC defines the vim_id and maps it to the vim_connector id. The vim connector must exist before deploying to the VIM specified by the vim_id.
vim_project—is the tenant name created in target VIM. This is an out-of-band tenant or project existing in OpenStack.
ESC Release 3.0 and later supports only out-of-band resources (pre-existing resources) such as images, flavors and volumes in a multi VIM deployment.
However, multi VIM deployment supports creating only ephemeral volumes using the locator attribute on a non-default VIM. Other resources cannot be created on a non-default VIM.
Recovery of VMs, scale in and scale out of VMs are supported within the same VIM on which the VMs are deployed. The VMs cannot scale or recover on different VIMs.
In the example below, the esc-tenant is a tenant within ESC. There is no mapping to the VIM tenant, and the VMs are not deployed on this esc-tenant. The vim_project, project-test-tenant (within the locator attribute), which is created out-of-band is the tenant on which the VMs are deployed.
You can deploy VNFs on a single VIM as well with the locator attribute. That is, the data model with the locator attribute can also be used for deploying VMs on a single OpenStack VIM. To deploy without the locator attribute (ESC Release 2.x data model), see Deploying VNFs on a Single OpenStack VIM
The deployment data model is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<esc_datamodel xmlns:ns2="urn:ietf:params:xml:ns:netconf:notification:1.0" xmlns:ns1="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:ns3="http://www.cisco.com/esc/esc_notifications" xmlns:ns0="http://www.cisco.com/esc/esc" xmlns="http://www.cisco.com/esc/esc">
<action>FALSE recover autohealing</action>
A sample multiple VIM deployment data model using out-of-band resources, and creating a root tenant as part of the deployment:
<!-- This root level tenant is an ESC tenant either previously created or created here marked by vim_mapping atrribute. -->
<!-- vim_project: OOB project/tenant that should already exist in the target VIM -->
<!-- All other details in vm group remain the same. -->
All the VIMs specified in a multi VIM deployment must be configured and in CONNECTION_SUCCESSFUL status for the request to be accepted by ESC. If a VIM specified in the deployment is unreachable or in any other status, the request is rejected.
You can apply the affinity and anti-affinity rules for VMs in a multiple VIM deployment. For more information, see Affinity and Anti-Affinity Rules on OpenStack.
Multi VIM deployment supports recovery using the Lifecycle Stages (LCS). For more information on supported LCS, see Recovery Policy (Using the Policy Framework). You can update an existing multi VIM deployment. However, the locator attribute within the VM group cannot be updated. For more information on updating an existing deployment, see Updating an Existing Deployment.