Docs 菜单

排除私有端点连接问题

在此页面上

本页概述了常见的私有端点连接问题和可能的解决方案。

1

要查看每个私有端点的状态,请执行以下操作:

  1. 在 Atlas 中,进入项目的 Network Access 页面。

    1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

    2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

    3. 在侧边栏中,单击 Security 标题下的 Network Access

      显示网络访问页面。

  2. 单击 Private Endpoint 标签页。

  3. 查看状态。

    Atlas Endpoint Service StatusEndpoint Status字段显示每个私有端点的状态。

请参阅以下状态,帮助您确定私有端点连接的状态:

Atlas Endpoint Service Status

状态
说明

创建私有链接

Atlas正在创建网络负载负载均衡器和VPC资源。

已失败

出现系统故障。

available

Atlas网络负载负载均衡器和VPC端点服务已创建,可以接收连接请求。

删除

Atlas正在删除私有端点服务。

Endpoint Status

状态
说明

未配置

Atlas 创建了负载均衡器和 VPC 端点服务,但 AWS 尚未创建接口端点。单击 Edit 并完成创建接口端点的向导。

待接受

Amazon Web Services已收到从您的接口端点到Atlas VPC端点服务的连接请求。

待处理

Amazon Web Services正在接口端点和Atlas VPC端点服务之间建立连接。

已失败

AWS 无法在 Atlas VPC 资源与您的 VPC 中的接口端点之间建立连接。单击 Edit,验证所提供的信息是否正确,然后再次创建私有端点。

重要提示:如果接口端点出现故障,您可能会看到以下消息:

No dns entries found for endpoint vpce-<guid>,
your endpoint must be provisioned in at least one subnet.
Click "Edit" to fix the problem.

此消息表明您在创建AWS PrivateLink连接时未指定子网。 要解决此错误,请执行以下操作:

  1. 单击 Edit(连接)。

  2. 单击 Back(连接)。

  3. 至少指定一个子网。

  4. 按照其余说明创建AWS PrivateLink连接。

available

Atlas VPC 资源连接到 VPC 中的 接口端点 。您可以使用AWS PrivateLink连接到该地区中的Atlas集群。

删除

Atlas正在从私有端点服务中删除接口端点。

2
  1. 对于需要使用AWS PrivateLink连接到Atlas集群的每个资源,该资源的安全群组必须允许出站流量流向所有端口 ()1024-65535 上接口端点的私有IP地址。

    有关更多信息,请参阅向安全组添加规则

  2. 您的接口端点安全群组必须允许需要使用AWS PrivateLink连接到Atlas集群的每个资源在所有端口上的入站流量。

    访问列表实例IP地址或安全组,以允许来自它们的流量到达接口端点安全群组。

VPC 中的客户端使用这些私有端点感知连接字符串之一连接到 Atlas 集群时,客户端会尝试通过其中一个接口端点与 Atlas VPC 中的负载均衡器建立连接。客户端的 DNS 解析机制会处理主机名解析到哪个接口端点的问题。如果一个接口端点不可用,则使用下一个接口端点。这个过程对驱动程序或其他连接机制是不透明的。驱动程序只知道 SRV 记录或连接字符串中的主机名。

DNS 种子列表私有端点感知连接字符串的 SRV 记录

以下示例展示启用 AWS PrivateLink 的单区域集群的 SRV 记录,同时显示为 pl-0-us-east-1-k45tj.mongodb.net 定义的三个唯一端口:

$ nslookup -type=SRV _mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
_mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1-k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1-k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1-k45tj.mongodb.net.

在前面的示例中:

  • _mongodb._tcp.cluster0-pl-0-k45tj.mongodb.netmongodb+srv://cluster0-pl-0-k45tj.mongodb.net 连接字符串引用的 SRV 记录。

  • pl-0-us-east-1-k45tj.mongodb.net 是您已配置 AWS PrivateLink 的一个区域中一个 Atlas 集群的每个节点的主机名。

  • 102410251026 是 Atlas 在负载均衡器上为启用 AWS PrivateLink 的区域中每个 Atlas 副本集节点分配的唯一端口。Atlas 副本集中的所有节点都可通过相同的主机名访问,负载均衡器通过唯一端口解析各个节点。

私有端点感知连接字符串和 SRV 记录中的主机名 DNS 解析

SRV 记录和标准连接字符串中的主机名是 DNS 规范名称 (CNAME) 记录,解析为 AWS 为接口端点生成的特定端点的区域 DNS 名称。您将接口端点部署到的 VPC 中的每个子网都有 DNS ALIAS 记录。每个 ALIAS 记录都包含该子网的接口端点的私有 IP 地址。

以下示例显示了 SRV 记录和标准连接字符串中主机名的 DNS 查询,包括接口端点的特定端点区域 DNS 名称及其 DNS ALIAS 记录:

$ nslookup pl-0-us-east-1-k45tj.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
pl-0-us-east-1-k45tj.mongodb.net
canonical name = vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com.
Name: vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com
Address: 10.0.30.194
Name: vpce-024f5b57108c8d3ed-ypwbxwll.vpce-svc-02863655456245e5c.us-east-1.vpce.amazonaws.com
Address: 10.0.20.54

仅当集群跨越的每个地区内都有一个节点配置了私有端点时,私有端点才在多区域集群中可用。 要学习;了解有关配置多区域私有端点的更多信息,请参阅多区域分片集群的区域化私有端点。

您可以使用 nslookuptelnet 工具测试从应用程序到Atlas私有端点的连接。

1

使用 -type=SRV 标志运行 nslookup,以获取与集群中每个节点关联的端口号。

nslookup -type=SRV _mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
_mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1-k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1-k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1-k45tj.mongodb.net.
2

在您的应用程序环境中,使用所列端口之一(示例,上述示例输出中的 102610241025)运行以下 telnet 命令来测试连接:

telnet pl-0-<xyz>.mongodb.net 1024
telnet pl-0-<xyz>.mongodb.net 1025
telnet pl-0-<xyz>.mongodb.net 1026

要查看每个私有端点的状态,请执行以下操作:

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

  3. 在侧边栏中,单击 Security 标题下的 Network Access

    显示网络访问页面。

2
3

Atlas Endpoint Service StatusEndpoint Status字段显示每个私有端点的状态。

请参阅以下状态,帮助您确定私有端点连接的状态:

Atlas Endpoint Service Status

状态
说明

创建私有链接

Atlas正在创建负载负载均衡器和 VNet 资源。

已失败

出现系统故障。

available

Atlas创建了负载负载均衡器和Azure Private Link服务。 Azure Private Link服务已准备好接收连接请求。

删除

Atlas正在删除Azure Private Link服务。

Endpoint Status

状态
说明

未配置

Atlas创建了负载负载均衡器和Azure Private Link服务,但您尚未创建私有端点。 单击Edit并完成向导以创建私有端点。

启动

Atlas尚未接受与您的私有端点的连接。

已失败

Azure无法在Atlas VNet 资源和 VNet 中的私有端点之间建立连接。 单击Edit ,验证您提供的信息是否正确,然后再次创建私有端点。

available

Atlas VNet 资源连接到 VNet 中的私有端点。 您可以使用Azure Private Link连接到该地区中的Atlas集群。

删除

Atlas正在删除Azure Private Link Service 中的私有端点连接。

当 VNet 中的客户端使用这些私有端点感知的连接字符串之一连接到 Atlas 集群时,该客户端会尝试通过私有端点的网络接口与 Atlas VNet 中的私有链接服务建立连接。 Private Link 服务通过 Azure 标准负载均衡器将流量发送到你在该区域部署的 Atlas 集群节点。您的客户端的 DNS 解析机制负责将主机名解析为网络接口的私有 IP 地址。驱动程序只知道连接字符串中的主机名,并在集群副本集的每个节点上监听一个端口

DNS 种子列表私有端点感知连接字符串的 SRV 记录

以下示例展示启用 Azure Private Link 的单区域集群的 SRV 记录,同时显示为 pl-0-eastus2.uzgh6.mongodb.net 定义的三个唯一端口:

$ nslookup -type=SRV _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
_mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1024 pl-0-eastus2.uzgh6.mongodb.net.
_mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1025 pl-0-eastus2.uzgh6.mongodb.net.
_mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net service = 0 0 1026 pl-0-eastus2.uzgh6.mongodb.net.

在前面的示例中:

  • _mongodb._tcp.cluster0-pl-0.uzgh6.mongodb.net 是连接字符串引用的 SRV 记录。

  • pl-0-eastus2.uzgh6.mongodb.net 是您已配置Azure Private Link的一个地区中一个Atlas 集群中每个节点的主机名。

  • 102410251026 是Atlas在负载负载均衡器上为启用了Azure Private Link 的地区中的每个Atlas副本集节点分配的唯一端口。 Atlas副本集集中的所有节点都可以通过相同的主机名访问,负载负载均衡器通过唯一端口解析各个节点。

私有端点感知连接字符串和 SRV 记录中的主机名 DNS 解析

SRV记录和标准连接字符串中的主机名是 DNSA 记录,可解析为私有端点网络接口的私有IP解决。

以下示例显示了在 SRV 记录和标准连接字符串中对主机名的 DNS 查询:

$ nslookup pl-0-eastus2.uzgh6.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: pl-0-eastus2.uzgh6.mongodb.net
Address: 10.0.0.4

仅当集群跨越的每个地区内都有一个节点配置了私有端点时,私有端点才在多区域集群中可用。 要学习;了解有关配置多区域私有端点的更多信息,请参阅多区域分片集群的区域化私有端点。

您可以使用 nslookuptelnet 工具测试从应用程序到Atlas私有端点的连接。

1

使用 -type=SRV 标志运行 nslookup,以获取与集群中每个节点关联的端口号。

nslookup -type=SRV _mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
_mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net service = 0 0 1026 pl-0-us-east-1-k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net service = 0 0 1024 pl-0-us-east-1-k45tj.mongodb.net.
_mongodb._tcp.cluster0-pl-0-k45tj.mongodb.net service = 0 0 1025 pl-0-us-east-1-k45tj.mongodb.net.
2

在您的应用程序环境中,使用所列端口之一(示例,上述示例输出中的 102610241025)运行以下 telnet 命令来测试连接:

telnet pl-0-<xyz>.mongodb.net 1024
telnet pl-0-<xyz>.mongodb.net 1025
telnet pl-0-<xyz>.mongodb.net 1026

要查看每个私有端点的状态,请执行以下操作:

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

  3. 在侧边栏中,单击 Security 标题下的 Network Access

    显示网络访问页面。

2
3

Atlas Endpoint Service StatusEndpoint Status字段显示每个私有端点的状态。

请参阅以下状态,帮助您确定私有端点连接的状态:

Atlas Endpoint Service Status

状态
说明

创建私有链接

Atlas正在创建网络负载负载均衡器和VPC资源。

已失败

出现系统故障。

available

Atlas创建了网络负载负载均衡器和VPC端点服务。 私有端点服务已准备好接收连接请求。

删除

Atlas正在删除私有端点服务。

Endpoint Status

状态
说明

启动

Atlas尚未连接到您的私有端点,也尚未接受端点。

正在等待用户

Atlas上的VPC资源可供使用。 VPC您必须通过运行shell 脚本在 中设立端点。

已验证

Atlas已验证VPC中的端点,但尚未接受Google Cloud Platform VPC中的私有端点。 Endpoint Status可能需要几分钟才能变为Available

available

Atlas VPC资源连接到Google Cloud Platform VPC中的私有端点。 Atlas已接受端点。 您可以使用GCP Private Service Connect 连接到该地区中的Atlas集群。

活跃的

Atlas已准备好使用VPC资源。 Atlas已接受端点。 将虚拟机分配给专用服务连接。

已失败

Google Cloud Platform无法在Atlas VPC资源与Google Cloud Platform VPC中的私有端点之间建立连接。 单击Edit ,验证您提供的信息是否正确,然后再次创建私有端点。

Deleted

您从Atlas中的某个地区手动删除了私有端点。 您还必须在Google Cloud Platform中删除私有端点才能删除资源。 待删除的地区群组。

仅当集群跨越的每个地区内都有一个节点配置了私有端点时,私有端点才在多区域集群中可用。 要学习;了解有关配置多区域私有端点的更多信息,请参阅多区域分片集群的区域化私有端点。

您可以使用 nslookuptelnet 工具测试从应用程序到Atlas私有端点的连接。

1

使用 -type=SRV 标志运行 nslookup,以获取与集群中每个节点关联的端口号。

nslookup -debug -type=SRV _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net
Server: 8.8.8.8
Address: 8.8.8.8#53
------------
QUESTIONS:
_mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net, type = SRV, class = IN
ANSWERS:
-> _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net
service = 0 0 27017 pl-00-000-us-central1-gcp.test.mongodb.net.
ttl = 60
-> _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net
service = 0 0 27017 pl-00-001-us-central1-gcp.test.mongodb.net.
ttl = 60
-> _mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net
service = 0 0 27017 pl-00-002-us-central1-gcp.test.mongodb.net.
ttl = 60
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
_mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net service = 0 0 27017 pl-00-000-us-central1-gcp.test.mongodb.net.
_mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net service = 0 0 27017 pl-00-001-us-central1-gcp.test.mongodb.net.
_mongodb._tcp.gpc-mongo-pl-0-us-central1.test.mongodb.net service = 0 0 27017 pl-00-002-us-central1-gcp.test.mongodb.net.
2

在应用程序环境中,使用所列端口之一(示例,上述示例输出中的 27017)运行以下 telnet 命令来测试连接:

telnet pl-0-<xyz>.mongodb.net 27017

在此页面上