本文中的公共和专用连接方案适用于使用 Azure DocumentDB 迁移扩展或 Azure 门户中的 Azure 数据库迁移服务 体验创建的基于 Azure 数据库迁移服务 的迁移。
Azure 数据库迁移服务(DMS)运行迁移,并管理源环境和 Azure DocumentDB 之间的网络连接。 DMS 支持在 Azure、本地数据中心和其他云提供商中运行的 MongoDB 实例。 本文还介绍了不能使用 DMS 的环境的自承载 Kubernetes 选项。
支持的源环境
下表汇总了支持的迁移源:
| 源环境 | Description |
|---|---|
| 在 Azure 中 | 在Azure 虚拟机或其他Azure托管服务上运行的 MongoDB 实例 |
| On-premises | 在本地数据中心或专用基础结构中运行的 MongoDB 服务器 |
| 其他云提供商 | 托管在其他云平台上的 MongoDB 实例 |
| Amazon DocumentDB | 托管在 AWS 上的 Amazon DocumentDB(兼容 MongoDB)实例 |
公共连接
在公共连接模式下,Azure 数据库迁移服务(DMS)通过公共 Internet 连接到源服务器和目标服务器。 DMS 提供的静态 IP 地址可添加到源服务器和目标服务器上的防火墙允许列表。 DMS 将共享公共虚拟网络用于给定区域中的所有迁移。 虽然此虚拟网络在客户之间共享,但每个迁移作业在其自己的独立专用工作节点上运行,以确保作业级别的隔离。
在以下情况下使用公共连接:
- 源服务器和目标服务器可通过公共 IP 地址访问。
- 组织的安全策略允许通过公共 Internet 建立连接。
- 您需要一种不需要虚拟网络配置的更简单设置。
私有连接
在专用连接模式下,DMS 为每个迁移作业预配专用专用虚拟网络,并将其与源和目标虚拟网络对等互连。 此设置意味着每个作业都获取隔离的工作器节点和隔离网络,确保作业之间没有流量交叉,客户之间不存在共享网络路径。
DMS 迁移体验最多支持两个虚拟网络:
- 源虚拟网络:可访问源 MongoDB 服务器的虚拟网络。
- Target 虚拟网络:可访问 Azure DocumentDB 群集的虚拟网络。
在以下情况下使用专用连接:
- 源或目标服务器无法通过公共 Internet 访问。
- 你的组织需要所有流量流经专用网络。
- 你需要避免将互联网暴露给公众。
专用连接依赖 DMS 预配由 Microsoft 托管且与您的网络建立对等互连的虚拟网络。 如果组织的策略不允许从Microsoft托管的虚拟网络建立连接,请改用 Kubernetes 选项进行自承载迁移。
Important
一个虚拟网络一次只能支持一个活动迁移作业,而连接模式是专用的。 若要运行多个并发作业,请对每个作业使用不同的虚拟网络。
在开始迁移作业之前完成以下要求:
- 禁用专用终结点子网的网络策略。 子网级专用终结点网络策略可以阻止源自 DMS 虚拟网络的流量。 在托管目标Azure DocumentDB 专用终结点的子网上禁用它们:
az network vnet subnet update \ --subscription "<SUBSCRIPTION>" -g "<TARGET_RG>" \ --vnet-name "<TARGET_VNET>" -n "<PRIVATE_ENDPOINT_SUBNET>" \ --disable-private-endpoint-network-policies true - 授予 DMS 主体对中心的虚拟网络网关的读取权限。 当 DMS 与中心建立对等连接时,它会验证网关配置以使用
useRemoteGateways。 将 VPN 或 ExpressRoute 网关资源上的 读取者 角色分配给 DMS 服务主体。 如果没有这种访问权限,向导中的对等互连设置步骤会失败。 - 将 DMS CIDR 端到端加入允许列表。 将迁移向导中显示的 DMS CIDR 添加到本地防火墙、路径中的 NSG 和任何 ExpressRoute 路由筛选器。 如果路径中的任何设备无法识别该范围值,则返回到源的流量会被丢弃。
- 删除影响源或目标虚拟网络的资源锁。 源或目标虚拟网络或源或目标资源组上的资源锁可以阻止 DMS 在作业完成后删除源到 DMS 或目标到 DMS 对等互连。 剩余对等互连会导致使用相同 CIDR 范围的新迁移失败。 在迁移之前删除该锁,并在 DMS 清理对等互连后重新应用该锁。
- 不要依赖对等网络的自定义本地 DNS。 本地 DNS 服务器无法解析 DMS 对等中心Azure专用 DNS 区域记录。 在迁移作业中,对源使用基于 IP 的连接字符串以跳过 DNS。
为何选择虚拟网络和 CIDR 范围
专用连接的工作原理是将 DMS 放置在专用网络空间 内 ,以便它可以通过专用 IP 地址(而不是公共 Internet)访问源和目标。 为此,DMS 需要你提供两项内容:用于连接的 虚拟网络,以及其自身网络的 CIDR 范围。 了解每个操作有助于避免最常见的设置错误。
虚拟网络选项的作用
DMS 无法自行访问到您的私有端点。 选择 源虚拟网络 和 目标虚拟网络时,DMS 会创建自己的专用虚拟网络,并将其与所选网络 对等互连 。 对等互连是构建专用路径的内容:对等互连后,DMS 可以通过专用 IP 解析并访问源 MongoDB 服务器和目标Azure DocumentDB 群集。
为每个端选择的虚拟网络必须是实际提供该终结点的网络路径的虚拟网络:
- 源:选择源 MongoDB 服务器可以通过专用 IP 访问的虚拟网络。 如果源位于本地或另一个云中,则此网络承载 VPN/ExpressRoute 网关(或将流量路由到该网关)。 如果源位于 Azure 中的专用终结点后面,请选择包含该专用终结点的虚拟网络。
- 目标:选择可访问 Azure DocumentDB 专用终结点的虚拟网络。
选择 看起来 相关的但没有路由到终结点的虚拟网络是最常见的错误。 对等连接成功,但流量始终无法到达源或目标,因为没有底层路由。
CIDR 范围的作用
DMS 创建的专用虚拟网络需要自己的专用 IP 地址空间,并将该地址空间作为 CIDR 范围(例如) 10.240.0.0/24提供。 DMS 从此范围分配其工作节点地址,这些地址将成为所有迁移流量的来源。 这就是为什么 CIDR 范围在整个验证和防火墙步骤中出现的原因。
CIDR 范围不得与它需要访问的任何网络重叠。 如果 DMS CIDR 与源虚拟网络、目标虚拟网络或任何可通过网关访问的本地部署网络地址范围重叠,网络就无法判断某个地址是本地地址还是远程地址,因此对等互连会失败,或者流量会被静默地错误路由。
由于 CIDR 范围是所有迁移流量的源,因此还必须允许它通过保护源或目标的每个防火墙或网络安全组(NSG)。 将 CIDR 范围添加到源 MongoDB 防火墙、Azure DocumentDB 防火墙以及网络路径中的任何本地或其他云防火墙。 如果 CIDR 未加入允许列表,即使对等互连和路由正确,流量也会被阻止。
要避免的常见错误
- 选择错误的虚拟网络。 选择具有指向终结点的实际路由的虚拟网络,而不仅仅是具有类似名称或同一资源组的虚拟网络。
- 选择重叠的 CIDR。 选择与源虚拟网络、目标虚拟网络或本地地址空间不重叠的范围。 首先检查现有地址空间。
- 不允许通过防火墙列出 CIDR。 将 DMS CIDR 范围添加至保护源或目标的所有防火墙和 NSG。 如果 CIDR 不在允许列表中,即使对等连接成功,流量也会被阻止。
- 选择太小的 CIDR。 为 DMS 工作节点提供足够大的范围(将
/24作为安全的默认值)。 范围太小可能会导致预配失败。 - 重新使用仍在使用中的 CIDR。 如果构建 了一个模拟环境 来验证连接,请在启动实际作业之前将其删除。 使用相同 CIDR 的残留网络与 DMS 尝试创建的网络发生冲突。
有关这些选择的分步验证,请参阅 排查连接问题。
从其他云提供商或内部部署
使用首选 VPN 工具在Azure与另一个云或本地的源环境之间建立网络连接。 根据网络体系结构,支持以下拓扑。
单个虚拟网络
在此拓扑中,VPN/ExpressRoute 网关和源工作负荷位于同一虚拟网络中。 DMS 与此虚拟网络直接对等互连,并使用 useRemoteGateways 连接到本地环境或其他云中的源。
集线器直连
在此拓扑中,VPN/ExpressRoute 网关位于专用中心虚拟网络中。 DMS 直接与中心建立对等连接,因此它可以通过 useRemoteGateways 原生使用该网关。
采用 TCP 代理的中心辐射型拓扑
如果 DMS 只能与某个辐射虚拟网络建立对等互连,且无法直接与中心建立对等互连,请在与 DMS 建立了对等互连的辐射虚拟网络中部署一台 MongoDB 迁移代理 虚拟机。 代理通过中心的 VPN/ExpressRoute 网关将来自 DMS 的流量转发到源 MongoDB 服务器。
将一条入站安全规则添加到用于保护代理的网络安全组(NSG)中。 将 源 设置为在迁移向导中提供的 DMS CIDR 范围,并允许到代理侦听端口的 TCP 流量。 如果没有此规则,代理将无法从 DMS 虚拟网络接收请求。
Note
DMS 会创建一个临时虚拟网络,并与您的网络建立对等连接。 在企业中心辐射拓扑中,虚拟网络对等互连是非传递的,因此 DMS 无法自动通过分支虚拟网络访问中心 VPN 网关。 需要路由机制,例如直接中心对等互连或部署在 DMS 对等互连虚拟网络中的 TCP 代理。 有关验证步骤,请参阅 排查连接问题。
从 Azure 中的专用终结点
为源和目标虚拟网络设置专用终结点。
使用 Kubernetes 进行自承载迁移
公共和专用连接都依赖于在Microsoft托管的虚拟网络中运行的 Azure 数据库迁移服务 (DMS)。 某些环境不允许从Microsoft托管的虚拟网络进行入站连接。 在这些情况下,请使用基于 Kubernetes 的自托管 Web 应用,在您自己的基础设施内完成整个迁移过程。 自承载工具运行与托管 DMS 解决方案相同的迁移代码;只有宿主环境不同。
在以下情况下使用自承载迁移:
- 组织的安全策略不允许从Microsoft托管的虚拟网络建立连接。
- 需要完全控制用于迁移的计算和网络路径。
自承载 Web 应用程序使用自己的 Kubernetes 群集将任何 MongoDB 源迁移到 Azure DocumentDB。 从 AzureDocumentDBMigration-K8s 存储库下载并安装它,然后按照该存储库中的安装说明进行操作。