此参考体系结构展示了如何设计混合域名系统 (DNS) 解决方案,以用于解析托管在本地和 Microsoft Azure 中的工作负载的名称。 此体系结构适用于从本地和公共 Internet 连接的用户和其他系统。
体系结构
下载此体系结构的 Visio 文件。
工作流
该体系结构包括以下组件:
- 本地网络。 本地网络表示通过 Azure ExpressRoute 或虚拟专用网络 (VPN) 连接来连接到 Azure 的单个数据中心。 在此方案中,本地网络由以下组件构成:
- DNS 服务器。 这些服务器表示安装了 DNS 服务的两台服务器,它们充当解析程序/转发器。 这些 DNS 服务器用于本地网络中的所有计算机。 必须在这些服务器上为 Azure 和本地的所有终结点创建记录。
- 网关。 网关表示用于连接到 Azure 的 VPN 设备或 ExpressRoute 连接。
- 中心订阅。 中心订阅表示 Azure 订阅,用于托管跨多个 Azure 托管工作负载共享的连接、管理和网络资源。 这些资源可以细分为多个订阅,如企业级体系结构中所述。
注意
可以将中心虚拟网络替换为虚拟广域网 (WAN) 中心,在此情况下,DNS 服务器必须托管在其他 Azure 虚拟网络 (VNet) 中。 在企业级体系结构中,该 VNet 在其自己的订阅(名为“标识订阅”)中进行维护。
- Azure Bastion 子网。 中心虚拟网络中的 Azure Bastion 服务用于从公共 Internet 远程访问中心的虚拟机 (VM) 和辐射 VNet,以便进行维护。
- 专用终结点子网。 专用终结点子网托管 VNet 中未对等互连到中心的 Azure 托管工作负载的专用终结点。 使用这种类型的断开连接的 VNet 时,其 IP 地址可能会与 Azure 和本地使用的其他 IP 地址冲突。
- 网关子网。 网关子网托管 Azure VPN 或 ExpressRoute(用于提供与本地数据中心的连接的子网)。
- 共享服务子网。 共享服务子网托管在多个 Azure 工作负载之间共享的服务。 在此方案中,此子网托管运行 Windows 或 Linux 的虚拟机,这些虚拟机也用作 DNS 服务器。 这些 DNS 服务器托管与本地服务器相同的 DNS 区域。
- 已连接订阅。 已连接订阅表示需要虚拟网络和到本地网络的连接的工作负载集合。
- 已断开连接的订阅。 已断开连接的订阅表示不需要连接到本地数据中心且使用专用链接服务的工作负载集合。
- PLSSubnet。 专用链接服务子网 (PLSSubnet) 包含一个或多个专用链接服务资源,这些资源提供与已连接订阅中托管的工作负载的连接。
- 默认子网。 默认子网包含示例工作负载。
- web-vmss。 此示例虚拟机规模集在 Azure 中托管可从本地、Azure 和公共 Internet 访问的工作负载。
- 负载均衡器。 负载均衡器提供对一系列 VM 托管的工作负载的访问权限。 此负载均衡器连接到专用链接服务,为来自 Azure 和本地数据中心的用户提供访问权限。
- AppGateway 子网。 此子网是应用程序网关服务所需的子网。
- AppGateway。 应用程序网关为来自公共 Internet 的用户提供对默认子网中示例工作负载的访问权限。
- wkld2-pip。 此地址是用于从公共 Internet 访问示例工作负载的公共 IP 地址。
- Azure Bastion 子网。 断开连接的虚拟网络中的 Azure Bastion 服务用于从公共 Internet 远程访问中心的 VM 和辐射 VNet,以便进行维护。
组件
虚拟网络。 Azure 虚拟网络 (VNet) 是 Azure 中专用网络的基本构建块。 VNet 允许许多类型的 Azure 资源(例如 Azure 虚拟机 (VM))以安全方式彼此通信、与 Internet 通信,以及与本地网络通信。
Azure Bastion。 Azure Bastion 是一项完全托管服务,可针对虚拟机 (VM) 提供更安全且无缝的远程桌面协议 (RDP) 和安全外壳协议 (SSH) 访问权限,且完全不会通过公共 IP 地址曝光。
VPN 网关。 VPN 网关通过公共 Internet 在 Azure 虚拟网络与本地位置之间发送加密流量。 也可使用 VPN 网关在基于 Microsoft 网络的 Azure 虚拟网络之间发送加密流量。 VPN 网关是特定类型的虚拟网络网关。
专用链接。 Azure 专用链接提供从虚拟网络到 Azure 平台即服务 (PaaS)、客户拥有的服务或 Microsoft 合作伙伴服务的专用连接。 它简化了网络体系结构,并通过消除数据在公共 Internet 上的暴露来保护 Azure 中终结点之间的连接。
应用程序网关。 Azure 应用程序网关是一种 Web 流量负载均衡器,可用于管理 Web 应用程序的流量。 传统负载均衡器在传输层(OSI 层 4 - TCP 和 UDP)进行操作,并基于源 IP 地址和端口将流量路由到目标 IP 地址和端口。
建议
以下建议适用于大多数方案。 除非有优先于这些建议的特定要求,否则请遵循这些建议。
注意
对于以下建议,我们将工作负载 1 称为已连接工作负载,将工作负载 2 称为断开连接的工作负载。 我们还会将访问这些工作负载的用户和系统称为本地用户、Internet 用户和 Azure 系统。
将 AD DS 扩展到 Azure(可选)
使用 AD DS 中的集成 DNS 区域托管本地数据中心和 Azure 的 DNS 记录。 在此方案中,有两组 AD DS DNS 服务器:一组本地服务器,一组位于中心 VNet 的服务器。
建议将 AD DS 域扩展到 Azure。 还建议配置中心和辐射 VNet,以便为 Azure 中的所有 VM 使用中心 VNet 中的 AD DS DNS 服务器。
注意
此建议仅适用于使用 Active Directory 集成 DNS 区域进行名称解析的组织。 其他组织可以考虑实现充当解析程序/转发器的 DNS 服务器。
配置拆分式 DNS
确保已配置拆分式 DNS,以允许 Azure 系统、本地用户和 Internet 用户基于工作负载的连接位置对其进行访问。
对于已连接和断开连接的工作负载,建议使用以下组件进行 DNS 解析:
- 适用于 Internet 用户的 Azure DNS 区域。
- 适用于本地用户和 Azure 系统的 DNS 服务器。
- 用于在 Azure VNet 之间进行解析的 Azure 专用 DNS 区域。
为了更好地理解此拆分式建议,请考虑工作负载 1,我们将对其使用 wkld1.contoso.com 完全限定的域名 (FQDN)。
在此方案中,Internet 用户必须将该名称解析为应用程序网关通过 Wkld1-pip 公开的公共 IP 地址。 通过在 Azure DNS 中为已连接订阅创建地址记录(A 记录)可完成此解析操作。
本地用户必须将相同名称解析为已连接订阅中负载均衡器的内部 IP 地址。 通过在中心订阅的 DNS 服务器中创建 A 记录可完成此解析操作。
Azure 系统可以通过以下任一方式将相同名称解析为已连接订阅中负载均衡器的内部 IP 地址:在中心订阅的 DNS 服务器中创建 A 记录,或使用专用 DNS 区域。 使用专用 DNS 区域时,请在专用 DNS 区域中手动创建 A 记录或启用自动注册。
使用专用 DNS 区域进行专用链接
在我们的方案中,工作负载 2 托管在断开连接的订阅中,并且本地用户和已连接的 Azure 系统可通过中心 VNet 的专用终结点访问此工作负载。 但是,对于此工作负载,存在第三种连接可能性:与工作负载 2 位于同一 VNet 的 Azure 系统。
为了更好地理解关于工作负载 2 的 DNS 建议,我们将使用 wkld2.contoso.com FQDN 并讨论各个建议。
在此方案中,Internet 用户必须将该名称解析为应用程序网关通过 Wkld2-pip 公开的公共 IP 地址。 通过在 Azure DNS 中为已连接订阅创建 A 记录可完成此解析操作。
连接到中心 VNet 和辐射 VNet 的本地用户和 Azure 系统必须将相同名称解析为中心 VNet 的专用终结点的内部 IP 地址。 通过在中心订阅的 DNS 服务器中创建 A 记录可完成此解析操作。
与工作负载 2 位于同一 VNet 的 Azure 系统必须将名称解析为断开连接的订阅中负载均衡器的 IP 地址。 通过在该订阅中使用 Azure DNS 中的专用 DNS 区域可完成此解析操作。
如果将不同的 VNet 与托管工作负载 2 的 A 记录的专用 DNS 区域链接起来,则这些 VNet 中的 Azure 系统仍然可以解析工作负载 2 的 IP 地址。
启用自动注册
配置与专用 DNS 区域的 VNet 链接时,可以选择为所有虚拟机配置自动注册。
注意
自动注册仅适用于虚拟机。 对于使用 VNet 中的 IP 地址配置的其他所有资源,必须在专用 DNS 区域中手动创建 DNS 记录。
如果使用 AD DS DNS 服务器,配置 Windows VM 可以使用 Windows 计算机的动态更新,以使你自己的 DNS 记录在 AD DS DNS 服务器中保持最新状态。 建议启用动态更新并将 DNS 服务器配置为仅允许安全更新。
Linux VM 不支持安全动态更新。 对于本地 Linux 计算机,请使用动态主机配置协议 (DHCP) 向 AD DS DNS 服务器注册 DNS 记录。
对于 Azure 中的 Linux VM,请使用自动化过程。
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
可伸缩性
- 对于每个 Azure 区域或本地数据中心,请考虑使用至少两个 DNS 服务器。
- 请注意在上一方案中是如何使用本地和中心虚拟网络中的 DNS 服务器实现这一点的。
可用性
- 请考虑放置 DNS 服务器。 如可伸缩性注意事项部分所述,DNS 服务器应放置在靠近需要访问它们的用户和系统的位置。
- 每个 Azure 区域。 每个 Azure 区域都有自己的中心 VNet 或 vWAN 中心。 必须在此位置部署 DNS 服务器。
- 每个本地数据中心。 还应在每个本地数据中心为这些位置中的用户和系统提供一对 DNS 服务器。
- 对于独立(断开连接的)工作负载,为每个订阅托管专用 DNS 区域和公共 DNS 区域,以管理拆分式 DNS 记录。
可管理性
- 考虑平台即服务 (PaaS) 服务对 DNS 记录的需求。
- 还必须考虑使用专用终结点的 PaaS 服务的 DNS 解析。 使用专用 DNS 区域实现此操作,并使用 DevOps 管道在 DNS 服务器中创建记录。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述。
- 如果需要使用 DNSSEC,请注意 Azure DNS 当前不支持它。
- 要进行 DNSSEC 验证,请部署自定义 DNS 服务器并启用 DNSEC 验证。
- Azure DDoS 防护与应用程序设计最佳做法相结合,提供增强的 DDoS 缓解功能来更全面地防御 DDoS 攻击。 应在任何外围虚拟网络上启用 Azure DDOS 防护。
DevOps
- 通过将 Azure 资源管理器模板组合在一起以配置所有资源,从而自动配置此体系结构。 专用和公共 DNS 区域都支持从 Azure CLI、PowerShell、.NET 和 REST API 进行完全管理。
- 如果使用持续集成和持续开发 (CI/CD) 管道在 Azure 和本地部署和维护工作负载,还可以配置 DNS 记录的自动注册。
成本优化
成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述。
- Azure DNS 区域成本基于 Azure 中托管的 DNS 区域数量和接收到的 DNS 查询的数量。
- 使用 Azure 定价计算器估算成本。 此处介绍了 Azure DNS 的定价模型。
- Azure ExpressRoute 的计费模型基于数据流量(按每 GB 收取出站数据传输费用)或不限流量(按月收费,包括所有数据传输)。
- 如果使用 VPN 而不是 ExpressRoute,则成本取决于虚拟网络网关的 SKU,并按小时收费。
后续步骤
了解有关组件技术的详细信息:
相关资源
探索相关体系结构: