This framework provides CloudStack users the ability to backup their guest VMs for recovery purposes, in case they suffer a hardware or software issue with their instances or the underlying infrastructure. This framework allows CloudStack to be integrated with Backup and Recovery providers, as pluggable solutions. Each provider should implement the backup and recovery methods provided by the framework in their own way.
High level component diagram
It is possible to register a Backup and Recovery provider per zone. The entry point for each API request is the BackupManager. The BackupManager invokes the corresponding BackupProvider registered in a zone, and it should communicate with the Backup and Recovery provider API Server. A high level representation of this is shown in the following diagram:
The Backup and Recovery framework defines new functionalities which should be implemented by each Backup and Recovery provider plugin as a pluggable solution.
- Register a Backup and Recovery provider in a zone: This is done via dynamic Zone scoped configurations: 'backup.framework.enabled' and 'backup.framework.provider.plugin'
- 'backup.framework.enabled' is false by default
- 'backup.framework.provider.plugin' is 'dummy' by default. For a zone we can set the Backup provider name is lowercase. Available values for the moment are: 'dummy' and 'veeam'
- List available Backup and Recovery providers in CloudStack: listBackupProviders API method.
- List Backup and Recovery Provider Policies: listBackupPolicies API method, setting the parameter 'external=true' and zoneid=ZONE_ID It returns every backup policy existing in the ZONE_ID backup provider. The goal of this method is listing backup policies to allow administrators to import them into CloudStack, so users can assign them to their guest VMs.
- Import a Backup Policy: importBackupPolicy API method. Allows importing an external backup policy from the zone Backup and Recovery provider into CloudStack.
- Delete a Backup Policy from CloudStack: deleteBackupPolicy API method. Removes the previously imported backup policy
- List imported Backup Policies: listBackupPolicies API method. Only backup policies imported by the administrator are listed.
- Assign a VM to a Backup Policy: assignBackupPolicy API method. This method assigns a VM to a backup policy
- List VM Backups: listBackups API method. List existing backups for a VM
- Recover a full backed up VM: restoreBackup API method. Restores a VM entirely, from a previously created backup
- Recover a VM volume and attach it to a VM: restoreBackupVolume API method. Restores a volume and attachs its to a VM
This feature introduces changes in the schema, adding the following entities:
- Backup: Represented in the table 'backups'
- Backup Policy: Represented in the table 'backup_policy'
- Backup Policy - VM mapping: Represented in the table 'backup_policy_vm_map'
Backup and Recovery Providers
Each Backup and Recovery provider plugin in CloudStack should implement the BackupProvider interface.
A dummy Backup and Recovery provider is already created, it simply implements each of the methods above.
Zone level settings for registering a Backup and Recovery provider