Introduction to concurrent VM operations
The platform uses configuration properties to control the number of concurrent operations for a hypervisor or provider, device, or backup manager. The platform can control concurrency for VM operations and many kinds of entities associated with VMs (firewalls, load balancers, NAT IPs, and backups). You can now define limits for specific hypervisor type or provider (e.g. vCloud with no concurrency) without affecting other types (e.g. ESXi with maximum concurrency). And you can also change the context of concurrency control to the VDC level. This means that the platform can limit concurrent operations that affect the same virtual datacenter, while allowing concurrent operations to other VDCs. You set limits at the platform or provider level, and the platform applies these limits PER VDC. You can also allow concurrent operations that change the state of a VM (e.g. power on), while limiting concurrent configure operations. For a description of the concurrency control properties, see the openSession properties at Abiquo Configuration Properties#virtualfactory
List of VM operations for which the platform controls concurrency
The platform controls concurrency for VMs, which means the following operations that are managed through the provider/hypervisor, device, or backup manager.
- VM state changes (powerOn, powerOff, etc)
- Configure/Deconfigure/Reconfigure VM
- Register/Unregister/Update VM with Firewall Policy / Load Balancer / Nat Rule
- Perform Backup / Schedule Backup / Restore From Backup of a VM
An example of when concurrency limits apply is when you are deploying a virtual appliance with multiple VMs.
The concurrency limits do not apply to non-VM entities related to virtual datacenters because the platform does not use the same pool for these, for example, the platform does not restrict the number of concurrent operations to create a private network.
Set default concurrency limits for the platform
The top level of concurrency configuration is the platform. These properties limit the number of concurrent operations for the same connection (hypervisor IP or endpoint), device, or backup manager.
abiquo.virtualfactory.openSession abiquo.virtualfactory.device.openSession abiquo.virtualfactory.backup.openSession
For example, to allow two connections to each public cloud region and hypervisor, set openSession to 2.
abiquo.virtualfactory.openSession=2
This means that if you have two vCenters and some public cloud regions, you can perform two concurrent operations on vCenter1, and two on vCenter2, and two on each of the public cloud regions.
Set concurrency limits for a type of hypervisor or public cloud provider, device, or backup manager
To limit concurrency for specific plugins, devices, or backup managers, set the specific properties for this purpose.
abiquo.virtualfactory.{pluginTypeInLowerCase}.openSession abiquo.virtualfactory.{backupManagerLowerCase}.backup.openSession abiquo.virtualfactory.{deviceLowerCase}.device.openSession
If you do not specify a value, then the default is the platform level property.
For example, to allow only one operation at any time on each AWS region.
abiquo.virtualfactory.amazon.openSession=1
Control concurrency at the virtual datacenter level
Concurrency control at the VDC level means that the platform will apply the concurrency limits (for hypervisor/PCR endpoint, device, and backup manager) PER VDC.
The platform supports "byvdc" properties when you have either a public cloud region with native support for VDCs (e.g. AWS VPC, Azure Virtual Network, vCloud vApp) or a hypervisor with a network device, (e.g. vCenter + NSX device).
If you do not specify these properties, the default values are false, which means that the platform will apply the concurrency limits PER hypervisor/public cloud endpoint, device, or backup manager.
abiquo.virtualfactory.openSession.byvdc=false abiquo.virtualfactory.device.openSession.byvdc=false abiquo.virtualfactory.backup.openSession.byvdc=false
To prevent compute concurrency in the same virtual datacenter, which means all the operations to the same VDC will be executed one after another, set the "byvdc" property to true and restrict the total number of sessions as the platform or provider/hypervisor level.
For example, with the the following properties, it will only be possible to execute multiple concurrent operations (for the same hypervisor/PCR endpoint (connection data)) if they affect different virtual datacenters.
abiquo.virtualfactory.openSession.byvdc=true abiquo.virtualfactory.openSession=1
When you use ''byvdc'' properties, the platform does not limit the maximum number of concurrent connections to the hypervisor/PCR endpoint, device, or backup manager.
For example, for the following configuration, in AWS you could have a total number of concurrent operations equal to the number of virtual datacenters x 2.
abiquo.virtualfactory.openSession.byvdc=true abiquo.virtualfactory.amazon.openSession=2
In contrast, if the "byvdc" properties are false (or not present) the platform will only allow two concurrent operations for each hypervisor/provider endpoint, device, or backup manager.
Allow fast VM state changes
The VM state change operations are as follows:
- powerOn
- powerOff
- shutdown
- reset
- pause
- resume
To always allow VM state changes without considering the ''openSession'' limitation, set the fast state changes property to true, as shown here.
abiquo.virtualfactory.openSession.faststatechanges=true
When you use this fast state changes functionality, the platform will always execute VM state changes when you request them, without waiting for any concurrent operations to finish.
For example, with the following configuration, the platform will only allow one configure/deconfigure/reconfigure at a time, but several state changes can occur concurrently.
abiquo.virtualfactory.openSession.faststatechanges=true abiquo.virtualfactory.openSession=1