azure - 如何使用反向代理机制模拟Azure Cosmos DB和Azure Redis区域故障场景?

标签 azure azure-cosmosdb azure-storage reverse-proxy azure-redis-cache

为了模拟区域故障,使用 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;
                }       

Sample network traffic captured via fiddler:

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/

相关文章:

azure - 关于 Azure 存储更改的通知

javascript - Blob 上传到 Azure 失败并出现 "Invalid HTML File Object"错误

node.js - 在 Node.js 上收到 "changing"+ "changed"事件后,Azure 辅助角色重新启动

python - 如何将Python连接到SQL Azure?

node.js - VM 上的 Cosmos DB 模拟器和主机 MacOS 上的 Azure Function App 未通过 SSL 验证

azure - 为什么我的 Azure Blob 存储容器中存在重复的文件夹?

azure - 传输 Azure 虚拟机 blob

python - 如何将 python 连接到 Azure Cloud 并创建 azure 数据工厂

java - 如何在Document DB java SDK中指定NONE分区键来删除文档?

azure - 与旧库相比,新库的 Cosmos DB 速度非常慢