Persistent Systems releases Azure Data Center Migration Solution
Microsoft operates Microsoft Azure in data centers around the world. Often you need to copy your existing deployments from one data center to another. For instance, as Microsoft introduces new data centers, you may want to move to the nearest data center for better performance. Currently, customers develop custom solutions to meet such requirements. To ease migrations, Persistent Systems, along with Microsoft, has developed an open source ‘Azure Data Center Migration Solution’ for automatically copying an entire IaaS deployment on Azure from one location to another. This solution is simple to use, customizable, field tested and optimized for performance.
The solution is helpful in various scenarios such as:
- Moving IaaS deployments to a data center that is closer to you or your customers
- Creating multiple data center deployments
- Providing a backup solution to work around IaaS maintenance plans
- Transitioning between subscriptions
You can use it to automate migration of IaaS deployments in:
- Same data center, different subscriptions
- Different data centers, same subscription
- Different data centers, different subscriptions
- Same data center, same subscription (useful for test or rename scenarios)
We have developed this solution using .NET Framework 4.5, and use the Microsoft Azure Management APIs to interact with Microsoft Azure. The solution runs from a computer on premises or on a VM in the cloud. You can run it as a standalone executable or using Windows PowerShell Cmdlets and you can extend it using the .NET APIs.
Continue reading for more details about the solution or download it from our GitHub repository.
The Azure Data Center Migration Solution focuses on IaaS deployments and creates what is essential for Virtual Machine migration. These include dependencies such as affinity groups, networks, cloud services and storage accounts.
It can discover the resources from the source subscription and provide a metadata file of the discovered resources in JSON format. It can also recreate the resources in the destination subscription from an exported metadata file.
You can use the solution to perform the following operations:
Export: The solution exports information from source subscription and stores the metadata in the JSON format. It discovers all affinity groups, networks, clouds services, virtual machines and storage accounts in the source data center. It also exports information such as data disks attached to VMs, availability sets, reserved IP, static IPs and internal load balancers. The solution can generate a resource name mapper file that you can use to control the names of resources created in the destination.
Import: The solution creates a new deployment from the exported metadata in the destination data center and subscription. Note that only blobs that are attached to the virtual machines are copied to the destination.The solution retries operations in case of transient faults and can optionally perform a rollback of the deployment if there is a permanent fault. It also has a resumption feature that can be used to resume the import process from the point of failure.
Migrate: The solution supports combining export and import operations in a single run. This is useful when customizations to the migration are not required.
The solution performs continuous logging at every step in a text file, using the Apache log4net framework. You can also choose to log to a SQL database. You can also add new log appenders by modifying the configuration file of the solution.
For details about the solution and its operations, see the User Guide.
The Azure Data Center Migration Solution automates certain migration considerations that are required for any migration:
Atomicity: A migration can encounter two kinds of faults: transient and permanent. The solution uses early validations and retries, and compensations to implement a limited level of atomicity. It also supports automatic rollback in case of permanent failure.
Resumption: If a migration stops for any reason, the solution can resume the migration from the point of failure. It does so by maintaining a hierarchical completion status of operations that corresponds with the resource hierarchy.
Compatibility: You can specify a prefix that will be used to name destination resources so that uniqueness is maintained wherever required. You can also control names of each of the resources by using the resource name mapper file.
Consistency: The solution shuts down virtual machines just before migrating them. This helps avoid inconsistency issues due to in-flight changes, but results in downtime.
Performance: The solution is optimized for performance in several ways. It creates resources in parallel wherever possible. Since blobs take the longest to copy, it starts blob copies as early as possible.
Extensibility: You can edit the metadata file generated during export to customize your migration. Examples of such customizations are demonstrated in the User Guide. You can also integrate this solution in existing solutions. For example, you can integrate it in automation scripts by using the PowerShell cmdlets. You can also build a custom UI and use the .NET APIs. You can also modify the source code to suit your migration.
Downloads and Usage
The v1.0 release is available for use. You can download a 64-bit installer or a zip file to get binaries and documentation. You can download the User Guide for detailed information about the solution.
You may report issues or feature requests in the Issues section on the GitHub repository. For feedback on the solution and questions, please firstname.lastname@example.org.
- Persistent Systems: Satish Nikam, Maryann Fernandes, Shubhangi Pote, Neelam Sahu, Divya M.
- Microsoft: Rangarajan Srirangam, Guy Bowerman, Suren Machiraju, Yohirito Tada