高可用性 VM Azure



我目前正在努力实现驻留在 Azure 虚拟机上的应用程序 99.95% 的可用性

我想要实现的是,每当机器因Windows更新或故障重启而重新启动时,另一台位于不同"更新域"/"容错域"中的机器都应该接管。我遇到了以下问题:

  • 存储高可用性:我的应用程序驻留在 wwwroot 文件夹中,并且具有包含文档数据库(CVS、PDF、TXT ...)的动态文件夹由应用程序用户创建。我无法移动到"Azure Web 应用程序",因为文件是通过虚拟路径访问的:"~/Users/CSV/4.csv"。迁移到 BLOB 存储是一种解决方案,需要对我的基础结构和 Web 应用程序代码进行大量更改,因为涉及多个其他组件(Windows 服务和计划任务可执行文件也通过绝对路径访问相同的文件:"C:/inetput/wwwroot/ApplicationFolder/Users/CSV/4.csv").我将整个应用程序移动到与操作系统磁盘不同的数据磁盘 (VHD),并将其作为新的简单卷附加,希望将相同的 VHD 重新附加到另一个实例。这在 MS Azure 中不允许的。除了使用 BLOB 和远离 SMB 协议之外,有什么建议吗?:)

  • SQL
  • 高可用性:我使用 SQL 依赖项将通知从 SQL Server 查询到应用程序级别,并使用 SignalR 自动更新 UI。这需要在数据库上启用服务代理。在 SQL Azure 中无法访问服务代理。任何其他建议的方法可以在不使用 SQL Service Broker 的情况下查询特定查询的更改,也不会通过 Ajax 超时查询新通知使服务器负担过重?

我愿意接受针对我的 IaaS 解决方案的任何混合高可用性体系结构建议,而不是完全采用 PaaS。

建筑师有什么建议吗?

谢谢

我只是自己尝试了一下,它奏效了;具体来说,我:

  • 启动两个 Ubuntu VM
  • 使用 XPlat CLI 将空磁盘附加到 VM1("azure vm disk attach ...")
  • 挂载磁盘并在上面放了一个名为"hi.txt的文件
  • 已分离磁盘("Azure VM 磁盘分离...")
  • 将同一磁盘附加到 VM2("Azure VM 磁盘附加...")
  • 在VM2上装载磁盘并找到文件"hi.txt

这一切都在 Linux 中,遵循这篇特定于 Linux 的命令的博客文章:https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-how-to-attach-disk/

这是一个链接,希望对Windows有所帮助:https://azure.microsoft.com/en-us/documentation/articles/storage-windows-attach-disk/

需要注意的一点是,我在 ARM 模式下完成了所有操作;上面的教程假定经典/ASM 模式,但这不是必需的。

希望这有帮助! :)

最新更新