![如何在 Azure 中的多 VM 设置中处理用于数据库存储的 VHD](https://linux22.com/image/680295/%E5%A6%82%E4%BD%95%E5%9C%A8%20Azure%20%E4%B8%AD%E7%9A%84%E5%A4%9A%20VM%20%E8%AE%BE%E7%BD%AE%E4%B8%AD%E5%A4%84%E7%90%86%E7%94%A8%E4%BA%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%98%E5%82%A8%E7%9A%84%20VHD.png)
我了解到,为了获得最可用的 Windows Azure VM 设置,最好创建可用性集。
我的设置是为 2 个 web-VM 设置一个可用性集,为 2 个 sql-VM 设置一个可用性集
SQL 服务器虚拟机的数据库存储在高级存储磁盘上,但是,我显然只希望我的数据库拥有 1 个数据源。我如何在 2 个 SQL 服务器虚拟机之间“共享”包含磁盘的数据库?
我在 Web VM 上遇到了同样的问题,用户可以将图像上传到网站,然后将其存储在存储帐户中。但 Web 可用性集中的两个 VM 都应该可以访问这些图像。所有 VHD 都存储在 Azure blob 中。
答案1
这实际上不是一个 Azure 问题,而是一个“如何进行 SQL 集群问题”。
您不能只是在两个虚拟机之间共享一个 SQL 数据库,然后它就能神奇地工作,您需要在群集中设置虚拟机,以便在它们之间共享 SQL 工作负载。Azure 中的群集与本地群集略有不同,因为您不能使用共享磁盘存储进行群集(您可以使用 Azure 文件进行共享 SMB 存储),请查看 Microsoft 的文章Azure 中 SQL 的 HA 和 DR。我还建议你可能考虑使用 Azure Web Apps 来运行你的 Web 应用程序,而不是 VM。使用这些 PaaS 服务意味着你可以显著减少管理开销。
话虽如此,我想问的是,您需要 SQL VM 吗?您可以使用 SQL Azure 吗?如果您可以在 VM 上使用 SQL Azure 而不是完整 SQL,那么 Microsoft 将为您处理所有集群和可用性,您无需担心任何这些。SQL Azure 和真正的 SQL 之间存在一些差异,请查看这文档来查看这些是否对您有影响。
在 Web 数据的存储方面,情况有所不同,在这里,您可以让两台服务器与某个共享的 blob 存储通信以获取图像,您只需配置应用程序即可。但请记住,如果 Azure 存储出现故障(可能性不大,但确实会发生),您确实存在单点故障,因此如果 HA 对您来说很重要,您可能需要将您的应用程序配置为使用 2 个帐户。