如何在 COSMOS DB 的 ARM 模板中配置首选区域列表?

How to configure preferred region list in ARM template for COSMOS DB?

我在两个区域“A”和“B”中设置了一个 Cosmos DB,其中“A”是写入区域。最近“A”区域出现故障,即使“B”区域处于打开状态也没有读取数据。
这是有道理的,因为 PreferredLocations 未按照 here or .
中的说明进行设置 问题是我不想在代码中设置 ConnectionPolicy.PreferredLocations,因为确切的位置是在 ARM 模板中设置的。
如何在 ARM 模板中添加 PreferredLocations 属性?

您没有在 ARM 模板中设置首选位置。当您在应用程序中初始化新客户端时,它会在 Cosmos 客户端 SDK 中设置。在 ARM 模板中,您可以设置故障转移优先级,如果在您的 Cosmos 帐户中设置了自动故障转移,这将指示服务指定在写入区域失败时将哪个区域提升为写入区域。 ARM 模板中的故障转移优先级由区域在 ARM 模板中指定的顺序设置。示例如下。

"locations": [
    {
        "locationName": "[parameters('primaryRegion')]",
        "failoverPriority": 0,
        "isZoneRedundant": false
    },
    {
        "locationName": "[parameters('secondaryRegion')]",
        "failoverPriority": 1,
        "isZoneRedundant": false
     }
]

要指定首选位置,您可以在初始化新的 SDK 客户端实例时执行此操作。示例如下。

CosmosClientOptions options = new CosmosClientOptions
{
    ApplicationPreferredRegions = new List<string>
    {
        "West US",
        "East US",
        "Central US"
    }
};

CosmosClient client = new CosmosClient(connection, options );

PS:我们有关于此服务的相当详细的文档。您应该尽可能多地参考这些,而不是第三方编写的 4 年前的文档,因为服务和 SDK 已经发生了翻天覆地的变化。您可以找到我们的文档 here