如何在 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
我在两个区域“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