我在两个区域“ A”和“ B”中建立了一个Cosmos DB,其中“ A”是写入区域。最近,“ A”区域失败,即使“ B”区域处于打开状态,也没有读取数据。
这是有道理的,因为没有按here或here中的说明设置PreferredLocations。
问题是我不想在代码中设置ConnectionPolicy.PreferredLocations
,因为确切的位置是在ARM模板中设置的。
如何在ARM模板中添加PreferredLocations属性?
答案 0 :(得分:0)
您没有在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:我们有关于此服务的相当详细的文档。由于服务和SDK发生了巨大变化,因此您应尽可能多地参考这些内容,而不应使用第三方编写的4年历史文档。您可以找到我们的文档here