我目前正在努力实现驻留在 Azure虚拟机上的应用程序的99.95% 可用性。
我想要实现的是,每当机器由于 Windows 更新或故障重启而重新启动时,不同“更新域”/“故障域”中的另一台机器应该接管。我遇到了以下问题:
存储高可用性:我的应用程序位于wwwroot文件夹中,并具有包含应用程序用户创建的文档数据库(CSV、PDF、Txt ...)的动态文件夹。我无法移动到“Azure Web 应用程序”,因为这些文件是通过虚拟路径访问的:“~/Users/CSVs/4.csv”。迁移到BLOB存储是一种解决方案,需要对我的基础架构和 Web 应用程序代码进行大量更改,因为涉及多个其他组件(Windows 服务和计划任务可执行文件也通过绝对路径访问相同的文件:“C:/inetput/wwwroot /ApplicationFolder/Users/CSVs/4.csv")。我将整个应用程序移动到不同于 OS 磁盘的数据磁盘 (VHD) 上,并将其作为一个新的简单卷附加,希望将相同的 VHD 重新附加到另一个实例。这在 MS Azure 中是不允许的。远离使用 BLOB 和远离SMB协议的任何建议?:)
SQL 高可用性:我使用 SQL 依赖关系从 SQL Server 查询通知到应用程序级别,并使用 SignalR 自动更新 UI。这需要在数据库上启用 Service Broker。在 SQL Azure 中无法访问服务代理。任何其他推荐的方法来查询特定查询的更改,而不使用 SQL 服务代理,并且不会通过 Ajax 超时查询新通知而使服务器负担过重?
我愿意接受任何针对我的 IaaS 解决方案的混合高可用性架构建议,而不是完全采用 PaaS。
任何建议建筑师?
谢谢