Abiquo 4.5 introduces new The platform uses configuration properties to provide greater control over the number of concurrent operations for a hypervisor or provider, device, or backup manager.
...
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.
Control concurrency at the platform level
The most basic top level of concurrency configuration is the existing control at the platform level. This limits the number of concurrent operations for the same connection (hypervisor IP or endpoint), device, or backup manager.
Code Block | ||||
---|---|---|---|---|
| ||||
abiquo.virtualfactory.openSession
abiquo.virtualfactory.device.openSession
abiquo.virtualfactory.backup.openSession
|
For example, to allow 2 connections to vCenter1 + 2 two connections to vCenter2 + 2 connections to each of the public cloud regionsregion and hypervisor, set openSession to 2.
Code Block | ||||
---|---|---|---|---|
| ||||
abiquo.virtualfactory.openSession=2 |
...
This means that you can perform 2 concurrent operations on the same vCenter (for VMX_04 or CLUSTER plugins) or AWS regiontwo concurrent operations on vCenter1, and two on vCenter2, and two on of the public cloud regions.
Control concurrency by
...
the type of hypervisor or public cloud provider, device, or backup manager
To limit concurrency for specific plugins, devices, or backup managers.If not specified by type, then the defaults are the platform level , set specific properties.
Code Block | ||||
---|---|---|---|---|
| ||||
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 two connections to AWS.
Control concurrency at the virtual datacenter level
Concurrency control at the VDC level means that the platform will apply the properties for concurrency values (including plugin type, device, and backup manager) to an individual VDC.
The default values allow concurrent operations to the same provider type, device, and backup manager.If you do not specify these properties, the default values are false, which means that concurrent operations are limited by the type of hypervisor/public cloud provider, device, or backup manager. Or at the platform level.
Code Block | ||||
---|---|---|---|---|
| ||||
abiquo.virtualfactory.openSession.byvdc=false abiquo.virtualfactory.device.openSession.byvdc=false abiquo.virtualfactory.backup.openSession.byvdc=false |
...
Note that when using ''openSession.byvdc'', the platform does not limit the maximum number of concurrent connections to the same ConnectionData (provider endpoint or hypervisor IP).
so openSession.vf.vCloud1.openSession=2, plus byvdc=true, can have openSession max = vdc x 2.
openSession.vf.vCloud1.openSession.byvdc=false → only 2 sessions for vCloud1.
Allow fast VM state changes
...
For example, with the following configuration, the platform will only allow one configure/deconfigure/reconfigure at a time, but state changes can occur concurrently.
Code Block | ||||
---|---|---|---|---|
| ||||
abiquo.virtualfactory.openSession.faststatechanges=true abiquo.virtualfactory.openSession=1 |
Limitations
—
* the properties only apply to the virtualfactory (vm centric ops) so don't expect other operations with entities related to virtualdatacenter are also executed in the same pool (eg: create private network doesn't follow this concurrency limitations)
* byvdc requires a Vpc interface implementation
** compute plugin also implements Vpc. eg: PCR vcloud
** compute plugin + networking device. eg: vcenter + nsx device * when using ''faststatechanges'' the max number of concurrent operations coulb be <= opensessions x 2 for deploy operations (configure + powerOn) or unlimited if performing other state changes in vms.
* changing the behavior of the pool when using a provider also capable of device ops (public clouds with lb,fw, net or nat features), previously using 2 pools (opensessions + device.opensessions), now a plugin capable of executin device ops only use the opensessions pool.
Examples
no concurrency in a virtualdatacenter (by type)
Panel |
---|
Given
When |
no limitation if not specified by type
Panel |
---|
Given
When |
change the default concurrency context
Panel |
---|
Given
When |
compute plugin without vpc device
Panel |
---|
Given
When |
fast powerOn
Panel |
---|
Given
When |
fast powerOn during configure
...
Given
abiquo.properties:
- abiquo.virtualfactory.vmx_04.openSession=1
- abiquo.virtualfactory.vmx_04.openSession.faststatechanges=true
a esx-vcenter private datacenter (with or without device)
...