Hantera Azure Cosmos DB för Apache Cassandra-resurser med hjälp av Azure Resource Manager-mallar

GÄLLER FÖR: Cassandra

I den här artikeln får du lära dig hur du använder Azure Resource Manager-mallar för att distribuera och hantera dina Azure Cosmos DB-konton, nyckelområden och tabeller.

Den här artikeln innehåller endast exempel för API för Cassandra-konton, för att hitta exempel för andra API-typkonton se: använda Azure Resource Manager-mallar med Azure Cosmos DB:s API för NoSQL, Gremlin, MongoDB, Tabellartiklar .

Viktigt!

  • Kontonamn är begränsade till 44 tecken, alla gemener.
  • Om du vill ändra dataflödesvärdena distribuerar du om mallen med uppdaterade RU/s.
  • När du lägger till eller tar bort platser till ett Azure Cosmos DB-konto kan du inte ändra andra egenskaper samtidigt. Dessa åtgärder måste utföras separat.

Om du vill skapa någon av Azure Cosmos DB-resurserna nedan kopierar du följande exempelmall till en ny json-fil. Du kan också skapa en json-parameterfil som ska användas när du distribuerar flera instanser av samma resurs med olika namn och värden. Det finns många sätt att distribuera Azure Resource Manager-mallar, inklusive Azure-portalen, Azure CLI, Azure PowerShell och GitHub.

Azure Cosmos DB-konto för Cassandra med automatiskt etablerat dataflöde

Den här mallen skapar ett Azure Cosmos DB-konto i två regioner med alternativ för konsekvens och redundans, med ett nyckelområde och en tabell konfigurerad för autoskalning av dataflöde. Den här mallen är också tillgänglig för distribution med ett klick från azure-galleriet för snabbstartsmallar.

Button to deploy the Resource Manager template to Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.8.9.13224",
      "templateHash": "9558567034094647188"
    }
  },
  "parameters": {
    "accountName": {
      "type": "string",
      "defaultValue": "[format('cassandra-{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "Cosmos DB account name, max length 44 characters"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for the Cosmos DB account."
      }
    },
    "primaryRegion": {
      "type": "string",
      "metadata": {
        "description": "The primary replica region for the Cosmos DB account."
      }
    },
    "secondaryRegion": {
      "type": "string",
      "metadata": {
        "description": "The secondary replica region for the Cosmos DB account."
      }
    },
    "defaultConsistencyLevel": {
      "type": "string",
      "defaultValue": "Eventual",
      "metadata": {
        "description": "The default consistency level of the Cosmos DB account."
      },
      "allowedValues": [
        "Eventual",
        "ConsistentPrefix",
        "Session",
        "BoundedStaleness",
        "Strong"
      ]
    },
    "maxStalenessPrefix": {
      "type": "int",
      "defaultValue": 100000,
      "metadata": {
        "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2,147,483,647. Multi Region: 100,000 to 2,147,483,647."
      },
      "maxValue": 1000000,
      "minValue": 10
    },
    "maxIntervalInSeconds": {
      "type": "int",
      "defaultValue": 300,
      "metadata": {
        "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84,600. Multi Region: 300 to 86,400."
      },
      "maxValue": 86400,
      "minValue": 5
    },
    "systemManagedFailover": {
      "type": "bool",
      "defaultValue": true,
      "metadata": {
        "description": "Enable system managed failover for regions"
      },
      "allowedValues": [
        true,
        false
      ]
    },
    "keyspaceName": {
      "type": "string",
      "metadata": {
        "description": "The name for the Cassandra Keyspace"
      }
    },
    "tableName": {
      "type": "string",
      "metadata": {
        "description": "The name for the Cassandra table"
      }
    },
    "autoscaleMaxThroughput": {
      "type": "int",
      "defaultValue": 1000,
      "metadata": {
        "description": "Maximum autoscale throughput for the Cassandra table"
      },
      "maxValue": 1000000,
      "minValue": 1000
    }
  },
  "variables": {
    "consistencyPolicy": {
      "Eventual": {
        "defaultConsistencyLevel": "Eventual"
      },
      "ConsistentPrefix": {
        "defaultConsistencyLevel": "ConsistentPrefix"
      },
      "Session": {
        "defaultConsistencyLevel": "Session"
      },
      "BoundedStaleness": {
        "defaultConsistencyLevel": "BoundedStaleness",
        "maxStalenessPrefix": "[parameters('maxStalenessPrefix')]",
        "maxIntervalInSeconds": "[parameters('maxIntervalInSeconds')]"
      },
      "Strong": {
        "defaultConsistencyLevel": "Strong"
      }
    },
    "locations": [
      {
        "locationName": "[parameters('primaryRegion')]",
        "failoverPriority": 0,
        "isZoneRedundant": false
      },
      {
        "locationName": "[parameters('secondaryRegion')]",
        "failoverPriority": 1,
        "isZoneRedundant": false
      }
    ]
  },
  "resources": [
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "apiVersion": "2022-05-15",
      "name": "[toLower(parameters('accountName'))]",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "capabilities": [
          {
            "name": "EnableCassandra"
          }
        ],
        "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
        "locations": "[variables('locations')]",
        "databaseAccountOfferType": "Standard",
        "enableAutomaticFailover": "[parameters('systemManagedFailover')]"
      }
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces",
      "apiVersion": "2022-05-15",
      "name": "[format('{0}/{1}', toLower(parameters('accountName')), parameters('keyspaceName'))]",
      "properties": {
        "resource": {
          "id": "[parameters('keyspaceName')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts', toLower(parameters('accountName')))]"
      ]
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces/tables",
      "apiVersion": "2022-05-15",
      "name": "[format('{0}/{1}', format('{0}/{1}', toLower(parameters('accountName')), parameters('keyspaceName')), parameters('tableName'))]",
      "properties": {
        "resource": {
          "id": "[parameters('tableName')]",
          "schema": {
            "columns": [
              {
                "name": "loadid",
                "type": "uuid"
              },
              {
                "name": "machine",
                "type": "uuid"
              },
              {
                "name": "cpu",
                "type": "int"
              },
              {
                "name": "mtime",
                "type": "int"
              },
              {
                "name": "load",
                "type": "float"
              }
            ],
            "partitionKeys": [
              {
                "name": "machine"
              },
              {
                "name": "cpu"
              },
              {
                "name": "mtime"
              }
            ],
            "clusterKeys": [
              {
                "name": "loadid",
                "orderBy": "asc"
              }
            ]
          }
        },
        "options": {
          "autoscaleSettings": {
            "maxThroughput": "[parameters('autoscaleMaxThroughput')]"
          }
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces', split(format('{0}/{1}', toLower(parameters('accountName')), parameters('keyspaceName')), '/')[0], split(format('{0}/{1}', toLower(parameters('accountName')), parameters('keyspaceName')), '/')[1])]"
      ]
    }
  ]
}

Azure Cosmos DB-konto för Cassandra med standardetablerade dataflöden

Den här mallen skapar ett Azure Cosmos DB-konto i två regioner med alternativ för konsekvens och redundans, med ett nyckelområde och en tabell konfigurerad för standarddataflöde. Den här mallen är också tillgänglig för distribution med ett klick från azure-galleriet för snabbstartsmallar.

Button to deploy the Resource Manager template to Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.8.9.13224",
      "templateHash": "16028185346043260848"
    }
  },
  "parameters": {
    "accountName": {
      "type": "string",
      "defaultValue": "[format('cassandra-{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "Cosmos DB account name, max length 44 characters"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for the Cosmos DB account."
      }
    },
    "primaryRegion": {
      "type": "string",
      "metadata": {
        "description": "The primary region for the Cosmos DB account."
      }
    },
    "secondaryRegion": {
      "type": "string",
      "metadata": {
        "description": "The secondary region for the Cosmos DB account."
      }
    },
    "defaultConsistencyLevel": {
      "type": "string",
      "defaultValue": "Session",
      "metadata": {
        "description": "The default consistency level of the Cosmos DB account."
      },
      "allowedValues": [
        "Eventual",
        "ConsistentPrefix",
        "Session",
        "BoundedStaleness",
        "Strong"
      ]
    },
    "maxStalenessPrefix": {
      "type": "int",
      "defaultValue": 100000,
      "metadata": {
        "description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2,147,483,647. Multi Region: 100,000 to 2,147,483,647."
      },
      "maxValue": 2147483647,
      "minValue": 10
    },
    "maxIntervalInSeconds": {
      "type": "int",
      "defaultValue": 300,
      "metadata": {
        "description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400."
      },
      "maxValue": 86400,
      "minValue": 5
    },
    "systemManagedFailover": {
      "type": "bool",
      "defaultValue": true,
      "metadata": {
        "description": "Enable system managed failover for regions"
      },
      "allowedValues": [
        true,
        false
      ]
    },
    "keyspaceName": {
      "type": "string",
      "metadata": {
        "description": "The name for the Cassandra Keyspace"
      }
    },
    "tableName": {
      "type": "string",
      "metadata": {
        "description": "The name for the Cassandra table"
      }
    },
    "throughput": {
      "type": "int",
      "defaultValue": 400,
      "metadata": {
        "description": "The throughput for Cassandra table"
      },
      "maxValue": 1000000,
      "minValue": 400
    }
  },
  "variables": {
    "consistencyPolicy": {
      "Eventual": {
        "defaultConsistencyLevel": "Eventual"
      },
      "ConsistentPrefix": {
        "defaultConsistencyLevel": "ConsistentPrefix"
      },
      "Session": {
        "defaultConsistencyLevel": "Session"
      },
      "BoundedStaleness": {
        "defaultConsistencyLevel": "BoundedStaleness",
        "maxStalenessPrefix": "[parameters('maxStalenessPrefix')]",
        "maxIntervalInSeconds": "[parameters('maxIntervalInSeconds')]"
      },
      "Strong": {
        "defaultConsistencyLevel": "Strong"
      }
    },
    "locations": [
      {
        "locationName": "[parameters('primaryRegion')]",
        "failoverPriority": 0,
        "isZoneRedundant": false
      },
      {
        "locationName": "[parameters('secondaryRegion')]",
        "failoverPriority": 1,
        "isZoneRedundant": false
      }
    ]
  },
  "resources": [
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "apiVersion": "2022-05-15",
      "name": "[toLower(parameters('accountName'))]",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "capabilities": [
          {
            "name": "EnableCassandra"
          }
        ],
        "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
        "locations": "[variables('locations')]",
        "databaseAccountOfferType": "Standard",
        "enableAutomaticFailover": "[parameters('systemManagedFailover')]"
      }
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces",
      "apiVersion": "2022-05-15",
      "name": "[format('{0}/{1}', toLower(parameters('accountName')), parameters('keyspaceName'))]",
      "properties": {
        "resource": {
          "id": "[parameters('keyspaceName')]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts', toLower(parameters('accountName')))]"
      ]
    },
    {
      "type": "Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces/tables",
      "apiVersion": "2022-05-15",
      "name": "[format('{0}/{1}', format('{0}/{1}', toLower(parameters('accountName')), parameters('keyspaceName')), parameters('tableName'))]",
      "properties": {
        "resource": {
          "id": "[parameters('tableName')]",
          "schema": {
            "columns": [
              {
                "name": "loadid",
                "type": "uuid"
              },
              {
                "name": "machine",
                "type": "uuid"
              },
              {
                "name": "cpu",
                "type": "int"
              },
              {
                "name": "mtime",
                "type": "int"
              },
              {
                "name": "load",
                "type": "float"
              }
            ],
            "partitionKeys": [
              {
                "name": "machine"
              },
              {
                "name": "cpu"
              },
              {
                "name": "mtime"
              }
            ],
            "clusterKeys": [
              {
                "name": "loadid",
                "orderBy": "asc"
              }
            ]
          },
          "options": {
            "throughput": "[parameters('throughput')]"
          }
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces', split(format('{0}/{1}', toLower(parameters('accountName')), parameters('keyspaceName')), '/')[0], split(format('{0}/{1}', toLower(parameters('accountName')), parameters('keyspaceName')), '/')[1])]"
      ]
    }
  ]
}

Nästa steg

Här är några ytterligare resurser: