我们在 2012 年 6 月宣布公开发布 Windows ">Azure 虚拟机和虚拟网络(我们将这两个服务集称为 Windows Azure 基础结构服务)预览版,此后世界各地的组织都开始测试它们的 Microsoft SQL Server 工作负荷,并最大限度地利用该预览版的功能。Windows Azure 基础结构服务的功能简直令人不可思议。您无需购买和管理硬件,即可以较低成本快速部署能够运行多种不同类型的 SQL Server 工作负荷的虚拟机 (VM),这一功能具有广泛吸引力。在虚拟网络中进行复杂的多 VM 部署的能力、支持 Active Directory (AD) 和 SharePoint,以及使用虚拟专用网络 (VPN) 网关将虚拟网络连接回内部部署网络或远程计算机的能力,使 Windows Azure 基础结构服务成为对 IT 商店和开发人员来说更加有趣的远程托管环境。Windows Azure 基础结构服务是一块垫脚石,各个组织可以使用它将现有的一些工作负荷原样迁移到云,不会发生任何变化,同时以混合方式利用 Windows Azure 更加先进的“平台即服务”功能。我们看到很多组织都事无巨细地处理着所有的事情,包括从简单的开发到测试 SQL Server 的工作负荷,再到复杂的分布式关键业务工作负荷。从他们的经验中,我们总结了下面几点。
了解您的 SLA:
在拔去服务器的电源插头并将 SQL Server 工作负荷迁移到 Windows Azure 之前,您需要了解相关的服务级别协议 (SLA)。请注意这样的表述:“对于在同一可用性集内部署了两个或两个以上实例的所有面向 Internet 的虚拟机,我们保证您在至少 99.95% 的时间可以使用外部连接。”这对于 SQL Server 来说意味着什么?这就是说,为了达到该 SLA 的覆盖范围,您需要部署一个以上运行 SQL Server 的 VM,并将这些 VM 都添加到同一个可用性集。这还表示,如果您要确保数据库在可用性集内的所有虚拟机之间保持同步,您需要实施 SQL Server 高可用性解决方案。最基本的前提是您需要执行一些操作来确保云中的高可用性,就像这些工作负荷在本地运行时一样。正确配置后,可用性集可以确保您的 SQL Server 工作负荷即使在执行升级和硬件更新等维护操作时也可以保持运行。
了解您的支持策略:
在 Windows Azure 虚拟机中运行 SQL Server 的美妙之处就在于,它就跟在其他地方运行 SQL Server 一样。它可以一如既往地运行。您无需更改应用程序,也无需担心各项 SQL Server 功能是否受支持。当SQL Server在 WindowsAzure 基础结构服务中运行时,除了一些主要例外情况,绝大多数功能都完全受支持。让我们从 SQL Server 版本支持开始。Microsoft 为 Windows Azure 基础结构服务中的 SQL Server 2008 及更高版本提供技术支持。如果您仍然在 SQL Server 2005 或更低版本中运行工作负荷,那么您需要升级到更新版本才能获得技术支持。如果您准备升级,我们建议您升级到 SQL Server 2012。在管理工具、开发工具和基础数据库引擎方面,SQL Server 2012 均设计为具有 Windows Azure 内置支持的“云就绪”软件。
我们先来谈谈高可用性。如果您觉得自己无需为 Windows Azure 基础结构服务中的 SQL Server 部署实施高可用性解决方案而操心,那么现在应该重新考虑这个问题了。如前面所说,为了达到 SLA 的覆盖范围,您需要在虚拟机可用性集内实施数据库冗余。但是以下限制会影响 SQL Server 高可用性功能。首先,不支持 SQL Server 故障转移群集。但是不用紧张,如果您希望为SQL Server配置高可用性, 还有很多其他选项可供您选择。例如 AlwaysOn 可用性组,或者使用诸如数据库镜像或日志传送等旧功能。我们建议您使用 SQL Server 2012 中的 AlwaysOn 可用性组功能以实现高可用性,但使用该方法时,有几点需要注意。当前不支持可用性组侦听器,但是我们计划在不久的将来增加此支持,敬请关注。如果您等不及侦听器支持,而仍然希望使用 AlwaysOn 可用性组,那么有一个解决方法。您可以使用 FailoverPartner 连接字符串属性代替。您应该意识到该方法将限制您在 AlwaysOn 可用性组中只能使用两个副本(一个主副本和一个辅助副本),并且不支持可读取的辅助副本的概念。
接下来我们谈谈为 SQL Server 数据库配置存储时需要考虑的一些重要事项。通常,我们建议您向 VM 附加一个数据磁盘,使用该磁盘存储所有数据和日志文件。如果您决定跨多个数据磁盘扩展数据和日志文件,以获得更多存储容量或更好的性能,那么您不应启用跨地域冗余。跨地域冗余无法与多磁盘配置配合使用,因为它无法保证各个磁盘之间一致的写入顺序。
最后我们要讨论的是 SQL Server 支持的各种“分布式”功能,例如复制、服务代理、分布式事务、分布式查询和链接服务器等。所有这些功能在同一个虚拟网络内部署的 SQL Server VM 中应运行良好,但是,如果需要跨越网络边界(跨公共 Internet 或虚拟网络 VPN 网关),您最好对这些功能进行彻底测试。这些功能设计用于内部部署的数据中心,包括 LAN 和 WAN,而非跨公共 Internet。