Search code examples
azureazure-sql-databaseazure-blob-storagehigh-availability

Replicating Azure SQL DB and blob storage in multi region setup


I'm working on this web app using Azure for a multi region architecture to ensure high availability and low latency for all users in the globe.

My problems are data consistency, replicating lag, failover strategy of being robust.

High latency in replicating blobs, I want efficient way to route tp nearest blob storage.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2019-06-01-preview",
      "name": "myPrimarySqlServer",
      "location": "West US",
      "properties": {
        "administratorLogin": "sqladmin",
        "administratorLoginPassword": "password"
      }
    },
    {
      "type": "Microsoft.Sql/servers/databases",
      "apiVersion": "2019-06-01-preview",
      "name": "myPrimaryDatabase",
      "location": "West US",
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers', 'myPrimarySqlServer')]"
      ],
      "properties": {
        "collation": "SQL_Latin1_General_CP1_CI_AS",
        "maxSizeBytes": "2147483648",
        "sampleName": "AdventureWorksLT"
      }
    },
    {
      "type": "Microsoft.Sql/servers/databases",
      "apiVersion": "2019-06-01-preview",
      "name": "[concat('myPrimarySqlServer', '/myPrimaryDatabase/replica')]",
      "location": "East US",
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers/databases', 'myPrimarySqlServer', 'myPrimaryDatabase')]"
      ],
      "properties": {
        "createMode": "OnlineSecondary",
        "secondaryType": "Readable",
        "partnerServer": "mySecondarySqlServer"
      }
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2019-06-01",
      "name": "mystorageaccount",
      "location": "West US",
      "sku": {
        "name": "Standard_RAGRS",
        "tier": "Standard"
      },
      "kind": "StorageV2",
      "properties": {
        "accessTier": "Hot"
      }
    }
  ]
}

I tried managing traffic in Azure with performance routing, but needs better handling.

Enabled active geo replication feature for SQL, facing issues in consistency and latency.

Set up RA-GRS for blob storage, but replication is always high.

I expect to solve all these issues.

Any help from your side is highly appreciated.


Solution

  • Have you tried Azure SQL Data Sync for replicating Azure SQL Database between regions? That could be an option. If you find out the latency with SQL Data Sync and Geo-replication is too high, then you should consider using Azure Cosmos DB instead in your data replication strategy.

    About the Storage Accounts please consider using Object Replication for Block Blobs. Here you will find how to configure it.