مشاركة عبر


إدارة Azure Cosmos DB لموارد Apache Cassandra باستخدام قوالب Azure Resource Manager

ينطبق على: كاساندرا

في هذه المقالة، ستتعلم كيفية استخدام قوالب Azure Resource Manager للمساعدة في نشر وإدارة حسابات، ومساحات مفتاح، وجداول Azure Cosmos DB.

تحتوي هذه المقالة على أمثلة لواجهة برمجة التطبيقات لحسابات Cassandra فقط، للعثور على أمثلة لحسابات نوع واجهة برمجة التطبيقات الأخرى، راجع: استخدام قوالب Azure Resource Manager مع واجهة برمجة تطبيقات Azure Cosmos DB ل NoSQL وGremlin وMongoDB ومقالات الجدول.

هام

  • تقتصر أسماء الحسابات على 44 حرفًا، وكلها بأحرف إنجليزية صغيرة.
  • لتغيير قيم معدل النقل، أعد توزيع القالب باستخدام RU/s المحدثة.
  • عند إضافة مواقع أو إزالتها إلى حساب Azure Cosmos DB، لا يمكنك تعديل خصائص أخرى في نفس الوقت. تتم هذه العمليات بشكل منفصل.

لإنشاء أي من موارد Azure Cosmos DB أدناه، انسخ قالب المثال التالي إلى ملف json جديد. يمكنك إنشاء ملف json للمعلمات اختيارياً لاستخدامه عند توزيع مثيلات متعددة لنفس المورد بأسماء وقيم مختلفة. هناك العديد من الطرق لنشر قوالب Azure Resource Manager بما في ذلك، مدخل Microsoft Azure وAzure CLI وAzure PowerShell وGitHub.

حساب Azure Cosmos DB ل Cassandra مع معدل النقل المزود بالتحجيم التلقائي

ينشئ هذا القالب حساب Azure Cosmos DB في منطقتين مع خيارات للتناسق وتجاوز الفشل، مع مساحة مفتاح وجدول تم تكوينهما لمعدل نقل التحجيم التلقائي. يتوفر هذا القالب أيضاً للتوزيع بنقرة واحدة من معرض قوالب Azure Quickstart.

زر لنشر قالب Resource Manager إلى 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 ل Cassandra مع معدل النقل القياسي المقدم

ينشئ هذا القالب حساب Azure Cosmos DB في منطقتين مع خيارات للتناسق وتجاوز الفشل، مع مساحة مفتاح وجدول تم تكوينهما لمعدل النقل القياسي. يتوفر هذا القالب أيضاً للتوزيع بنقرة واحدة من معرض قوالب Azure Quickstart.

زر لنشر قالب Resource Manager إلى 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])]"
      ]
    }
  ]
}

الخطوات التالية

فيما يأتي بعض الموارد الإضافية: