排除私有端点连接问题
在此页面上
本页概述了常见的私有端点连接问题和可能的解决方案。
专用集群
检查 AWS PrivateLink 连接的状态。
要查看每个私有端点的状态,请执行以下操作:
在 Atlas 中,进入项目的 Network Access 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Network Access。
显示网络访问页面。
单击 Private Endpoint 标签页。
查看状态。
Atlas Endpoint Service Status和Endpoint 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,验证所提供的信息是否正确,然后再次创建私有端点。 重要提示:如果接口端点出现故障,您可能会看到以下消息:
此消息表明您在创建AWS PrivateLink连接时未指定子网。 要解决此错误,请执行以下操作:
| |||
available | Atlas VPC 资源连接到 VPC 中的 接口端点 。您可以使用AWS PrivateLink连接到该地区中的Atlas集群。 | |||
删除 | Atlas正在从私有端点服务中删除接口端点。 |
通过 DNS 查找获取私有 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.net
是mongodb+srv://cluster0-pl-0-k45tj.mongodb.net
连接字符串引用的 SRV 记录。pl-0-us-east-1-k45tj.mongodb.net
是您已配置 AWS PrivateLink 的一个区域中一个 Atlas 集群的每个节点的主机名。1024
、1025
和1026
是 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
多区域私有端点
仅当集群跨越的每个地区内都有一个节点配置了私有端点时,私有端点才在多区域集群中可用。 要学习;了解有关配置多区域私有端点的更多信息,请参阅多区域分片集群的区域化私有端点。
从已部署的应用程序测试连接
您可以使用 nslookup
和 telnet
工具测试从应用程序到Atlas私有端点的连接。
获取Atlas 集群的连接详细信息。
使用 -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.
要查看每个私有端点的状态,请执行以下操作:
在 Atlas 中,进入项目的 Network Access 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Network Access。
显示网络访问页面。
请参阅以下状态,帮助您确定私有端点连接的状态:
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 中的私有端点连接。 |
通过 DNS 查找获取私有 IP
当 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 集群中每个节点的主机名。1024
、1025
和1026
是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
多区域私有端点
仅当集群跨越的每个地区内都有一个节点配置了私有端点时,私有端点才在多区域集群中可用。 要学习;了解有关配置多区域私有端点的更多信息,请参阅多区域分片集群的区域化私有端点。
从已部署的应用程序测试连接
您可以使用 nslookup
和 telnet
工具测试从应用程序到Atlas私有端点的连接。
获取Atlas 集群的连接详细信息。
使用 -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.
要查看每个私有端点的状态,请执行以下操作:
在 Atlas 中,进入项目的 Network Access 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Network Access。
显示网络访问页面。
请参阅以下状态,帮助您确定私有端点连接的状态:
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 | 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中删除私有端点才能删除资源。 待删除的地区群组。 |
多区域私有端点
仅当集群跨越的每个地区内都有一个节点配置了私有端点时,私有端点才在多区域集群中可用。 要学习;了解有关配置多区域私有端点的更多信息,请参阅多区域分片集群的区域化私有端点。
从已部署的应用程序测试连接
您可以使用 nslookup
和 telnet
工具测试从应用程序到Atlas私有端点的连接。
获取Atlas 集群的连接详细信息。
使用 -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.