PowerFlex and Azure Arc-enabled data services architectures deliver the Azure data services capability on flexible software-defined storage with linearly-scaling performance and network throughput. The SQL Managed Instance and PostgreSQL Hyperscale services for Microsoft Azure Arc are available with or without a direct Azure connection. Both these modes allow you to get the latest releases from Azure and receive regular updates on patches and new features.
The Azure Arc data controller is a collection of Kubernetes resources, that orchestrates the Azure Arc data services architecture. It provides maximum flexibility and consistency across platforms along with a range of management capabilities including provisioning, monitoring, elastic scaling, automated updates, high availability, and backup.
Two types of connectivity modes are available for the data controller:
The prerequisites to deploy data controller in indirect mode are:
Note: In this deployment example the service principal name (SPN) was scoped at the subscription level, because this was the only setup used. Microsoft documentation provides commands for more granular scope, such as at the resource group level.
The following Azure CLI commands are run to create the SPN.
az ad sp create-for-rbac --name azure-arc-metrics --role Contributor --scopes /subscriptions/<subscription ID>
az role assignment create --assignee <application ID> --role 'Monitoring Metrics Publisher' --scope subscriptions/<subscription ID>
The first command produced the following output. These values are used during the deployment of the data controller:
"appId": "<application ID>",
"tenant": "<Azure Active Directory tenant ID>"
The data controller in indirect connectivity mode is deployed using Azure Data Studio or Azure CLI. For this deployment, we used the Azure CLI, as shown in the following code sample:
$ENV:AZDATA_USERNAME = $arcDataControllerAdminUsername
$ENV:AZDATA_PASSWORD = $arcDataControllerAdminPassword
$ENV:dcName = $arcDataControllerName
$ENV:SUB = $azSubId
$ENV:RG = $azResourceGroup
az arcdata dc create `
--connectivity-mode indirect `
--name $arcDataControllerName `
--k8s-namespace arc `
--subscription $azSubId `
--resource-group $azResourceGroup `
--location eastus `
--storage-class vxflexos-xfs `
--profile-name azure-arc-kubeadm `
--infrastructure onpremises `
SQL Managed instances in indirect mode are deployed from the PowerShell using Azure CLI commands or from the Azure Studio after the data controller is connected. In this setup, the Azure CLI scripts were used to deploy the SQL Managed Instances.
Ten General Purpose SQL Managed Instances and three business-critical instances are deployed to run the test cases mentioned in the following sections, ranging from 2vCPU/4 GiB memory to 16vCPU/ 16 GiB memory. These instances are deployed on the four Kubernetes worker nodes with PowerFlex volumes automatically created as the persistence layer.
For the scripts to deploy a SQL MI, see the SQL MI creationsection of this document.
Azure Arc-enabled data services SQL MIs have an integrated automatic backup feature enabled. This feature triggers a full database backup, a differential backup, and a log backup when a new database is created or restored from other databases. These backups are stored in a backup storage class that is specified during the SQL MI deployment. The backups are retained in accordance with the –retention-days value. This value can be set between zero and 35 days. The default value is seven.
The SQL database backup and restore operations are monitored and performed from Azure Studio.