为了模拟区域故障,使用 Fiddler 在“OnBeforeResponse”函数下创建了以下自定义规则。
我能够成功拦截对 Azure 存储帐户的 http 调用,并能够注入(inject)失败的响应,而当 https 调用对 Azure Cosmos DB 调用时,我无法拦截,为什么?我错过了什么吗?
我什至无法拦截与Azure Redis相关的调用,但我可以理解Redis不使用HTTP通信的原因,但为什么我无法拦截对Azure Cosmos DB调用的https调用,不知道并且需要专业意见。
还需要有关如何拦截 Redis 调用和注入(inject)人工故障响应代码的建议吗?模拟Azure Redis区域故障情况。
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
// az storage account call manipulated response
if (oSession.hostname == "mystorageaccount.blob.core.windows.net")
{
oSession.responseCode = 503;
}
// az cosmos db account call manipulated response -- not working
if (oSession.hostname == "mydocdb.documents.azure.com")
{
oSession.responseCode = 503;
}
// az redis call manipulated response -- not working
if (oSession.hostname == "myrediscache.redis.cache.windows.net")
{
oSession.responseCode = 503;
}
P.S:目前我们使用的是cosmos db SDK v2,cosmos db SDK v2默认使用HTTP还是TCP?根据 fiddler 的说法,它是 HTTP。
最佳答案
我不知道 Redis 是做什么的,但您可以通过手动将区域故障转移到辅助区域来在 Cosmos 中进行故障转移测试。这可以在门户中或通过 PS、CLI、模板或使用 Azure 管理 SDK 来完成。
可以在这里了解更多信息,Perform a manual failover on a Cosmos DB account
关于azure - 如何使用反向代理机制模拟Azure Cosmos DB和Azure Redis区域故障场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66725308/