Skip to content

Use zone redundant Cosmos DB accounts#

Reliability · Cosmos DB · Rule · 2025_12 · Important

Use zone redundant Cosmos DB accounts in supported regions to improve reliability.

Description#

Azure Cosmos DB accounts deployed with the request units (RU) deployment model support zone redundancy. When zone redundancy is enabled, your data is replicated across multiple zones within an Azure region.

Availability zones are unique physical locations within an Azure region. Each zone is made up of one or more datacenters equipped with independent power, cooling, and networking infrastructure. This physical separation ensures that if one zone experiences an outage, your Cosmos DB account continues to serve read and write requests from replicas in other zones without downtime.

With zone redundancy enabled, Azure Cosmos DB provides:

  • Automatic failover between zones.
  • Continuous availability during zonal failures.
  • Enhanced durability by maintaining multiple copies across separate physical locations.
  • Protection against datacenter-level disasters while maintaining low-latency access.

Zone redundancy must be configured when you create a Cosmos DB account by setting isZoneRedundant to true for each location. This setting cannot be changed after the account is created. Zone redundancy is only available in regions that support availability zones.

Recommendation#

Consider using locations configured with zone redundancy to improve workload resiliency of Cosmos DB accounts.

Examples#

Configure with Azure template#

To deploy database accounts that pass this rule:

  • Set the properties.locations[*].isZoneRedundant property to true for each location.

For example:

Azure Template snippet
{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "apiVersion": "2024-11-15",
  "name": "[parameters('name')]",
  "location": "[parameters('location')]",
  "properties": {
    "enableFreeTier": false,
    "consistencyPolicy": {
      "defaultConsistencyLevel": "Session"
    },
    "databaseAccountOfferType": "Standard",
    "locations": [
      {
        "locationName": "[parameters('location')]",
        "failoverPriority": 0,
        "isZoneRedundant": true
      }
    ],
    "disableKeyBasedMetadataWriteAccess": true,
    "minimalTlsVersion": "Tls12"
  }
}

Configure with Bicep#

To deploy database accounts that pass this rule:

  • Set the properties.locations[*].isZoneRedundant property to true for each location.

For example:

Azure Bicep snippet
resource account 'Microsoft.DocumentDB/databaseAccounts@2024-11-15' = {
  name: name
  location: location
  properties: {
    enableFreeTier: false
    consistencyPolicy: {
      defaultConsistencyLevel: 'Session'
    }
    databaseAccountOfferType: 'Standard'
    locations: [
      {
        locationName: location
        failoverPriority: 0
        isZoneRedundant: true
      }
    ]
    disableKeyBasedMetadataWriteAccess: true
    minimalTlsVersion: 'Tls12'
  }
}

Notes#

This rule applies to Cosmos DB accounts deployed with the request units (RU) deployment model.

Comments