使用 Azure Arc 优化本地和多云环境中的 SQL Server 实例的管理
本参考体系结构介绍了如何使用 Azure Arc 在本地和多云环境中管理、维护和监视 SQL Server 实例。
体系结构
下载此体系结构的 Visio 文件。
组件
该体系结构包括以下组件和功能:
- SQL Server 是一个关系数据库平台,支持各种开发语言、数据类型、本地或云环境和作系统。 在此体系结构中,它充当托管在 Azure 外部并通过 Azure Arc 管理的核心数据引擎,用于统一治理和监视。
- Azure Arc 是一种基于云的服务,可将 Azure 管理扩展到非 Azure 资源。 在此体系结构中,它支持在本地和多云环境中集中控制 SQL Server 实例、Kubernetes 群集和虚拟机(VM)。
- 已启用 Azure Arc 的服务器 在公司网络或其他云提供商上提供对 Azure 外部 Windows 和 Linux 计算机的管理。 在此体系结构中,它们为将 SQL Server 实例作为混合 Azure 资源进行管理提供了基础。
- 已启用 Azure Arc 的 SQL Server 将 Azure 服务扩展到托管在 Azure 外部的 SQL Server 实例。 在此体系结构中,它为在数据中心、边缘或多云设置中运行的 SQL Server 启用高级监视、安全性和符合性功能。
- Kubernetes 是一个开源平台,用于管理和协调容器化工作负荷。 在此体系结构中,它托管已启用 Azure Arc 的数据服务,包括 Azure SQL 托管实例的容器化部署。
- Azure Kubernetes 服务 (AKS) 是 Azure 中的托管 Kubernetes 服务。 在此体系结构中,Azure 本地 AKS 简化了在本地环境中的容器化 SQL 工作负荷的部署和管理。
- Azure 本地 AKS 是 AKS 的本地实现。 在此体系结构中,它会在 Azure 本地大规模运行容器化应用程序。
- 已启用 Azure Arc 的 Kubernetes 支持 Azure 管理在 Azure 外部运行的 Kubernetes 群集。 在此体系结构中,它支持对 Kubernetes 上部署的 SQL 工作负荷进行治理、策略强制和监视。
- 已启用 Azure Arc 的数据服务 允许 Azure 数据服务在任何基础结构(包括本地和多云)上运行。 在此体系结构中,它们托管 SQL 托管实例的容器化实例,该实例可在混合环境中实现云原生功能。
- SQL 托管实例 是一种托管 SQL 数据库服务,可提供与 SQL Server 的高兼容性。 在此体系结构中,它通过已启用 Azure Arc 的数据服务以容器化形式部署,以提供可缩放、安全且常绿的数据库功能。
- 已启用 Azure Arc 的 SQL 托管实例 是在已启用 Azure Arc 的数据服务上运行的 SQL 托管实例的容器化版本。 在此体系结构中,它提供与 Azure 本地 Kubernetes 或 AKS 上的灵活部署几乎完整的 SQL Server 兼容性。
- 已启用 Azure Arc 的 VMware vSphere 将 Azure 管理扩展到基于 VMware 的环境。 在此体系结构中,它支持对 vSphere 上托管的 SQL Server 实例进行治理和监视。
- 已启用 Azure Arc 的 System Center Virtual Machine Manager (SCVMM) 将 SCVMM 托管的基础结构与 Azure 集成。 在此体系结构中,它支持跨 SCVMM 和 Azure 统一管理 SQL Server 工作负荷。
- Azure 资源管理器 是 Azure 资源的部署和管理框架。 在此体系结构中,它充当管理混合 SQL Server 实例和相关服务的控制平面。 可以使用访问控制、锁和标记等管理功能在部署后保护和组织资源。
- Azure Monitor 是一种监视服务,用于从 Azure 和混合资源收集和分析遥测数据。 在此体系结构中,它监视通过 Azure Arc 管理的 SQL Server 实例的性能、可用性和符合性。
- Log Analytics 是 Azure Monitor 的一项功能,可用于跨环境查询和分析日志数据。 在此体系结构中,它支持对已启用 Azure Arc 的 SQL Server 进行 SQL 评估和运行状况检查。
- Microsoft Sentinel 是云原生安全信息事件管理(SIEM)和安全业务流程自动响应(SOAR)解决方案,用于威胁检测和响应。 在此体系结构中,它监视 Azure Arc 管理的 SQL Server 实例的安全事件和警报。
- Microsoft Defender for Cloud 是一个提供安全管理和威胁防护的安全平台。 在此体系结构中,它增强了数据资产的安全态势,并跨混合工作负荷启用高级威胁检测。
- Azure 备份 为 Azure 和混合环境提供安全且可缩放的备份解决方案。 在此体系结构中,它支持在直接连接模式下部署的已启用 Azure Arc 的 SQL 托管实例的长期备份保留。
方案详细信息
此体系结构的典型用途包括:
- 使用 Azure Monitor 评估已启用 Azure Arc 的 SQL Server 配置、可用性、性能和合规性。
- 使用 Microsoft Defender for Cloud 和 Microsoft Sentinel 检测并修正针对已启用 Azure Arc 的 SQL Server 的安全威胁。
- 在本地和多云环境中自动部署和管理已启用 Azure Arc 的 Kubernetes SQL 托管实例。
- 在 Azure 本地 Azure Kubernetes 服务(AKS)上自动部署和管理已启用 Azure Arc 的 SQL 托管实例。
建议
以下建议适用于大多数方案。 除非有优先于这些建议的特定要求,否则请遵循这些建议。
通过使用 Azure 服务,评估、监视和优化已启用 Azure Arc 的 SQL Server 实例的性能、可用性、合规性和安全性
如果没有一致、统一的操作和管理模型,管理 SQL Server 的各个实例可能会导致大量开销成本。 如果没有一套合适的工具,则需要先进的技能并不断努力才能识别和维护高性能、可复原和安全的 SQL Server 配置。 随着业务技术环境的发展和越来越复杂化,多个 SQL Server 实例在跨本地数据中心、多个公有云和私有云以及边缘的不同硬件上运行,因此解决这些挑战尤为重要。
可以使用已启用 Azure Arc 的 SQL Server 实例,这些实例托管在 Azure 外部的物理计算机和虚拟机上,并将用于运行 Windows 或 Linux 操作系统以及本地安装的 Connected Machine Agent。 将 SQL Server 实例注册到 Azure 时,该代理会自动安装。 Azure Arc 使用代理在非 Azure 资源和 Azure 之间建立逻辑连接。 建立此连接后,非 Azure 资源将自动成为混合 Azure 资源,并包含自身的标识和 Azure 资源管理器资源 ID。 Azure 资源管理器充当管理界面,使你可以创建、修改和删除 Azure 资源。 在 Arc 启用非 Azure 资源后,你可以使用 Azure 资源管理器来促进其他 Azure 服务的实现,从而增强 SQL Server 实例的可管理性。
注意
安装 Azure Connected Machine Agent 也是实现已启用 Azure Arc 的服务器的一部分。 实际上,在已启用 Azure Arc 的服务器上实现已启用 Azure Arc 的 SQL Server 时,无需安装它。
满足已启用 Azure Arc 的 SQL Server 的所有先决条件(包括安装 Log Analytics 代理)后,你可以选择自动使用以下 Azure 功能:
- 已启用 Azure Arc 的 SQL Server 的按需 SQL 评估。 评估依赖于 Log Analytics 代理来收集相关数据并将其上传到所指定的 Log Analytics 工作区。 将日志上传到工作区后,SQL Server 评估 Log Analytics 解决方案将管理数据分析,并允许你直接在 Azure 门户中查看其结果。 只要适用,该解决方案还会提供有关潜在改进的建议。 分析结果分为四类:评估质量、安全性和合规性、可用性和连续性以及性能和可伸缩性。 Log Analytics 代理定期扫描更新,并自动将它们上传到 Log Analytics 工作区,确保查看的结果是最新的。
注意
Log Analytics 代理通常称为 Microsoft Monitoring Agent (MMA)。
- 适用于已启用 Azure Arc 的 SQL Server 的高级数据安全性。 此功能有助于检测并修正已启用 Azure Arc 的 SQL Server 实例的安全异常和威胁。 与按需 SQL 评估一样,要启用已启用 Azure Arc 的 SQL Server,需要在托管 SQL Server 实例的服务器上安装 Log Analytics 代理。 还必须启用 Microsoft Defender for Cloud 的 Microsoft Defender for Cloud 功能,以便自动定义数据收集的范围并对其进行分析。 可以在 Microsoft Defender for Cloud 中查看此分析的结果,并在加入 Microsoft Sentinel 后,根据此结果直接在 Azure 门户中进一步调查安全警报。
在本地和多云环境中自动部署和管理已启用 Azure Arc 的 SQL 托管实例
已启用 Azure Arc 的 SQL 托管实例将成为在已启用 Azure Arc 的数据服务上运行的容器化部署。 要托管部署,可以使用以下选项:
- 已启用 Azure Arc 的 Kubernetes 群集上的已启用 Azure Arc 的数据服务。 已启用 Azure Arc 的 Kubernetes 支持在虚拟或物理服务器上托管在云或本地环境中的各种 Kubernetes 分发。
- 在本地物理 Azure 本地实例上托管的 AKS 群集上启用了 Azure Arc 的数据服务。
这两个选项都支持等效 SQL Server 相关功能,因为这些功能依赖于已启用 Azure Arc 的数据服务层。 但是,使用 Azure 本地时,应实现 AKS,因为这简化了 Kubernetes 基础结构及其工作负载的实现和管理。
已启用 Azure Arc 的 SQL 托管实例与最新的 SQL Server 数据库引擎几乎 100% 兼容。 这有助于以最少的应用程序和数据库更改直接迁移到已启用 Azure Arc 的数据服务。
已启用 Azure Arc 的 SQL 托管实例依赖 Azure Arc 数据控制器来建立和维护与 Azure 资源管理器控制平面的逻辑连接。 此数据控制器将成为在本地 Kubernetes 或 AKS 群集中运行的一组 Pod。 Pod 协调 SQL 托管实例的管理和操作任务,例如预配和取消预配、自动故障转移、更新、缩放、备份和还原以及监视。
规划已启用 Azure Arc 的数据服务时,需要确定数据控制器是在以下哪种连接模式下运行:直接连接或间接连接。 你的决定对管理功能和发送到 Azure 的数据量具有重要影响。 如果已启用 Azure Arc 的数据服务直接连接到 Azure,则可以使用基于标准 Azure 资源管理器的接口和工具来管理它们,包括 Azure 门户、Azure 命令行接口 (Azure CLI) 或 Azure 资源管理器模板。 如果已启用 Azure Arc 的数据服务间接连接到 Azure,则 Azure 门户提供的清单为只读模式。 同样,如果要为已启用 Azure Arc 的数据服务提供对 Microsoft Entra ID、Azure 基于角色的访问控制 (Azure RBAC) 的支持,或者将它们与 Azure 服务(如 Microsoft Defender for Cloud、Azure Monitor 或 Azure 备份)集成,则需要使用直接连接模式。
注意
间接连接这种连接模式需要每月至少一次将最少量的数据传送到 Azure 以用于盘存和计费目的。
虽然间接连接模式提供的功能更少,但它可以适应一系列阻止使用直接连接模式的场景。 例如,这适用于由于业务或法规要求或担心外部攻击或数据泄露而阻止直接的外部连接的本地数据中心。 它还支持边缘站点位置,这些位置与 Internet 的连接有限或没有直接连接。
已启用 Azure Arc 的 SQL 托管实例的常见功能集包括:
- 支持自动更新。 Microsoft 经常通过 Microsoft 容器注册表 (MCR) 提供已启用 Azure Arc 的数据服务的更新。 这包括提供修补程序和新功能,并提供与 Azure 托管数据服务类似的体验。 但是,可以控制部署计划和节奏。
- 弹性缩放。 基于容器的体系结构本质上支持弹性缩放,其限制取决于基础结构的容量。 此功能可以满足具有不稳定的需求的突发情况,包括需要以亚秒级响应时间实时引入和查询任意规模数据的情况。
- 自助式预配。 使用基于 Kubernetes 的编排,可以使用图形界面或 Azure CLI 工具在几秒内预配数据库。
- 灵活的监视和管理。 使用已启用 Azure Arc 的 SQL 托管实例,可以从 Kubernetes API 收集和分析日志和遥测数据,并使用 Kibana 和 Grafana 仪表板实现本地监视。 还可使用许多标准 SQL Server 管理工具(包括 Azure Data Studio 和 Azure CLI)以及 Kubernetes 管理工具(例如 Helm 和 kubectl)来预配和管理已启用 Azure Arc 的 SQL 托管实例。
此外,由于已启用 Azure Arc 的 SQL 托管实例在已启用 Azure Arc 的 Kubernetes 或 Azure 本地 AKS 上运行,因此也可以使用其管理、安全性和符合性功能,包括:
- 支持使用适用于 Kubernetes 的 Azure Policy 和相应策略合规性的集中报告来强制执行运行时策略。 例如,这使你可以在 Kubernetes 群集中强制执行 HTTPS 入口,或确保容器仅侦听允许的端口。
- 支持使用 GitOps 部署 Kubernetes 和 AKS 配置。 GitOps 是自动部署驻留在 Git 存储库中的代码的做法。 在此场景中,该代码描述了 Kubernetes 或 AKS 配置所需的状态。 可以选择使用 Azure Policy 强制实施基于 GitOps 的特定配置,这些配置还提供相应策略合规性的集中报告。
注意
验证你打算在生产环境中使用的 Azure Arc 功能是否已正式发布。
注意事项
这些注意事项实现 Azure Well-Architected 框架的支柱,这是一组指导原则,可用于提高工作负荷的质量。 有关详细信息,请参阅 azure Well-Architected Framework
可靠性
可靠性可确保应用程序符合你对客户的承诺。 有关详细信息,请参阅 可靠性的设计评审清单。
使用已启用 Azure Arc 的 SQL 托管实例时,从数据复原能力的角度来看,存储规划也至关重要。 如果发生硬件故障,则不正确的选择可能导致数据全部丢失。 要避免此类风险,应考虑一系列影响数据控制器和数据库实例存储配置 kubernetes-storage-class-factors 的因素。
借助已启用 Azure Arc 的 SQL 托管实例,可以在单 Pod 或多 Pod 模式下部署单个数据库。 例如,开发人员或常规用途定价层实现单 Pod 模式,而高度可用业务关键定价层实现多 Pod 模式。 高可用性 SQL 托管实例使用 AlwaysOn 可用性组将数据从一个实例同步或异步复制到另一个实例。
已启用 Azure Arc 的 SQL 托管实例将代码库与最新的稳定版 SQL Server 共享,从而为大多数高可用性功能提供支持。
已启用 Azure Arc 的 SQL 托管实例提供自动本地备份,而不考虑连接模式。 在直接连接模式下,还可以选择应用 Azure 备份进行站点外长期备份保留。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅 安全的设计评审清单。
已启用 Azure Arc 的 SQL 托管实例将代码库与最新的稳定版 SQL Server 共享,从而为同一组安全功能提供支持。
在直接连接模式下使用已启用 Azure Arc 的 SQL 托管实例时,应向数据控制器提供对 MCR 的直接访问,以便自动升级和修补。 或者,可选择从 MCR 导入容器映像,并在数据控制器可访问的本地专用容器注册表中使用这些映像。
Azure Connected Machine Agent 使用传输层安全性 (TLS) 协议通过 TCP 端口 443 与 Azure Arc 进行出站通信。
- 在直接连接模式下使用已启用 Azure Arc 的 SQL 托管实例后,无需在本地数据中心外围打开任何入站端口。 数据控制器使用传输层安全性 (TLS) 协议通过 TCP 端口 443 以安全方式启动出站连接。
注意
要增强传输到 Azure 的数据的安全性,应将托管 SQL Server 实例的服务器配置为使用传输层安全性 (TLS) 1.2。
成本优化
成本优化是研究减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅 成本优化的设计评审清单。
- Azure Arc 有助于最大限度地减少甚至消除对本地管理和监视系统的需求,从而降低操作复杂性和成本,尤其是在大型、多样化和分布式环境中。 这有助于抵消与 Azure Arc 相关服务相关的额外成本。 例如,已启用 Azure Arc 的 SQL Server 实例的高级数据安全性需要 Microsoft Defender for Cloud 的 Microsoft Defender for Cloud 功能,这对定价有影响。
- 使用已启用 Azure Arc 的 SQL 托管实例容器化 SQL Server 环境有助于提高工作负荷的密度和移动性。 这有助于更有效地利用硬件,从而最大限度地提高投资回报率 (ROI) 并降低运营成本,从而有助于加快数据中心整合计划。
卓越运营
卓越运营涵盖部署应用程序并使其在生产环境中运行的运营流程。 有关详细信息,请参阅 卓越运营的设计评审清单。
要注册单个已启用 Azure Arc 的 SQL Server 实例,可以以交互方式运行可直接从 Azure 门户获得的脚本。 对于大规模部署,可以通过利用 Microsoft Entra 服务主体以无人参与的方式运行同一脚本。
要使用 Azure Monitor 对已启用 Azure Arc 的 SQL Server 实例的配置和运行状况进行按需评估,必须将 Log Analytics 代理部署到托管该 SQL Server 实例的服务器。 可以使用 Azure Policy 来为已启用 Azure Arc 的服务器启用用于 VM 的 Azure Monitor,从而大规模自动化此部署。
按需 SQL 评估和高级数据安全性适用于未启用 Azure Arc 的 SQL Server 实例。 但是,Azure Arc 可简化其预配和配置。 例如,可以使用 VM 扩展功能将 Log Analytics 代理自动部署到托管 SQL Server 实例的服务器。
已启用 Azure Arc 的 SQL 托管实例将代码库与最新的稳定版 SQL Server 共享,从而为同一组可管理性功能提供支持。
性能效率
性能效率是工作负荷以高效方式满足用户对它的需求的能力。 有关详细信息,请参阅 性能效率的设计评审清单。
已启用 Azure Arc 的 SQL 托管实例将代码库与最新的稳定版 SQL Server 共享,从而为同一组高可用性和性能功能提供支持。
在计划部署启用了 Azure Arc 的 SQL 托管实例时,应确定运行 Azure Arc 数据控制器和预期的 SQL 托管实例服务器组所需的正确计算量、内存和存储量。 但是,请注意,可通过添加额外的计算节点或存储来灵活扩展底层 Kubernetes 或 AKS 群集的容量。
Kubernetes 或 AKS 提供基于虚拟化堆栈和硬件的抽象层。 存储类实现了这样的存储抽象。 预配 pod 时,需要确定要用于其卷的存储类。 从性能的角度来看,你的决定很重要,因为不正确的选择可能会导致性能不佳。 在计划部署启用了 Azure Arc 的 SQL 托管实例时,你应该考虑影响数据控制器和数据库实例的存储配置 kubernetes-storage-class-factors 的一系列因素。
后续步骤
产品和服务文档:
- SQL Server 技术文档
- Azure Arc 概述
- 什么是启用了 Azure Arc 的服务器?
- 已启用 Azure Arc 的 SQL Server
- Azure Kubernetes 服务
- Azure 本地解决方案概述
- 什么是本地 Kubernetes 与 Azure 本地和 Windows Server 上的 Azure Kubernetes 服务?
- 什么是已启用 Azure Arc 的 Kubernetes?
- 什么是已启用 Azure Arc 的数据服务?
- 什么是 SQL 托管实例?
- 已启用 Azure Arc 的 SQL 托管实例概述
- 什么是 Azure 资源管理器?
- Azure Monitor 概述
- Azure Monitor 中的 Log Analytics 概述
- 什么是 Microsoft Sentinel?
- 什么是 Microsoft Defender for Cloud?
- 什么是 Azure 备份服务?
培训资源