azure-webjobs - 使用 AzureWebJobsStorage for Web Job Timer Triggers 时如何配置存储帐户的自动故障转移
问题描述
我有一个在 TimerTrigger 上运行的 Azure Web 作业,用于将一些消息放在服务总线队列上。我已经在 2 个不同的区域上部署了这个 Web 作业,以便在一个区域出现故障的情况下实现高可用性。根据https://github.com/Azure/azure-webjobs-sdk-extensions/wiki/TimerTrigger,我可以看到分布式锁机制运行良好,计时器一次只在一个区域执行,所以有没有重复的请求通过。
但是,两个区域中的 Web 作业都使用相同的公共存储帐户,并且存储帐户仅部署到一个区域。我不能使用 2 个单独的存储帐户,因为那样我就失去了分布式锁定功能。我知道 Azure 为我的存储帐户提供异地冗余存储,因此数据被复制到辅助区域。
我的问题是 - 如果某个区域(特别是存储帐户的主要区域)发生灾难,有没有办法让 Web 作业自动故障转移到辅助端点?现在,我将“AzureWebJobsStorage”应用程序设置指定为存储帐户的共享访问密钥之一。
感谢任何指针!
解决方案
我不是存储 SDK 方面的专家,但我链接了两个文档,这些文档可能会帮助您了解如何使您的应用程序高度可用。
- https://docs.microsoft.com/en-us/azure/storage/common/storage-disaster-recovery-guidance?toc=/azure/storage/blob/toc.json
- https://docs.microsoft.com/en-us/azure/storage/common/geo-redundant-design?tabs=legacy
- https://docs.microsoft.com/en-us/azure/storage/blobs/storage-create-geo-redundant-storage?tabs=dotnet11
由于地理冗余存储的警告是它在辅助服务器上是只读的,直到您另外提出请求,我确实找到了BlobClientOptions的GeoRedundantSecondaryUri属性部分,它将使用辅助地址作为重试策略的一部分。
推荐阅读
- r - 聚合 R 中多列的唯一值
- java - Spring AMQP:将消息处理器添加到自动配置的“RabbitTemplate”
- ruby-on-rails - 如何优化这些范围
- spring-boot - 如何修复'com.sun.mail.util.MailConnectException:无法连接到主机,端口:smtp.gmail.com,587;超时 50000000;'
- c++-winrt - 使用 winrt::static_lifetime 时如何获取类的实例?
- javascript - 如何使用 JavaScript 对带有数字的字符串选择框进行排序
- html - 使用 localhost 与在我的服务器上提供的图像不同
- sql - 如何在带有 IN 子句的 WHERE 中使用 CASE 语句?
- continuous-integration - 为什么我的 bitbucket-pipelines.yml 对拉取请求脚本无效
- javascript - 检查是否选中了带有多个复选框的 html 表上的特定复选框。JS/jQuery