常见问题解答:连接字符串选项
在此页面上
Atlas 提供多个连接字符串。这些字符串允许您从公共和私有上下文连接到集群。Atlas 始终为集群分配唯一的连接字符串,以便两个集群不会在 Atlas 中共享主机名或连接字符串。
为什么我的集群有多个连接字符串?
要连接 Atlas,请将应用程序指向 URI,以便与集群通信。创建具有多个节点或主机的集群。每个节点都有自己的主机名,可解析为 IP 地址。Atlas 连接的 URI(称为连接字符串)可能具有多个主机名。配置 Atlas 以接受从允许的 IP 地址连接到集群主机。
Atlas 通过身份验证和 TLS 确保来自公共 IP 地址的连接安全。如果要连接到私有 IP 地址,则您可以使用:
这些功能都能管理安全网络内通过内部 IP 地址进行的通信。
使用安全网络时,Atlas 会提供多个连接字符串。每个网络都提供一个字符串,可以解析为不同 IP 地址。
所有集群都有一个标准连接字符串。该字符串可解析为集群的:
用于互联网连接的公共 IP 地址;和
从对等 VPC 解析时,AWS 集群的 VPC 私有 IP 地址。
对于通过互联网连接或连接到 AWS 对等互连集群的应用程序,请使用此字符串。
具有对等互连网络的集群拥有用于对等互连的私有 IP 连接字符串。此字符串解析为可用于以下人员的 IP 地址:
Azure 或 Google Cloud 中的对等互连网络
AWS 使用自定义 DNS 服务与集群进行对等互连。
使用该连接字符串连接满足下列条件的应用程序:
在 Azure 或 Google Cloud 对等互连网络中
在使用带自定义 DNS 服务的 AWS 时,连接到 AWS 集群。
配置有私有端点的地区中的 AWS 或 Azure 集群具有一个或多个连接字符串。每个字符串都解析为您的 VPC 或 VNet 中一个网络接口的私有 IP 地址,该接口直接连接至 Atlas VPC 或 VNet 中的负载均衡器。将这些连接字符串用于连接私有端点的应用程序。
这对于仅处于对等互连模式的 Google Cloud 或 Azure 集群意味着什么?
在 2020 年 3 月 31 日之前,您需要启用仅对等互连模式才能连接到对等互连网络 Azure 或 Google Cloud 集群上的数据库。此模式:
影响全局 DNS 解析,以及
限制对等互连网络之外的任何数据库连接。
多重视野解除这些限制并解锁以下附加功能:
要利用多个范围,请完成以下任务:
更新应用程序的现有连接字符串,以使用用于对等互连字符串的私有 IP。
使用“为什么我的集群有多个连接字符串?”中概述的字符串进行连接。
注意
此时,您可以使用现有的启用对等互连的连接字符串继续连接到集群。仅对等互连模式可防止访问改进的功能并减少多范围的限制。要使用新功能并删除旧限制,MongoDB 要求使用新连接字符串。
我的 VNet 对等互连 Azure 集群能否跨越多个区域?
可以。
更改应用程序,使其使用对等互连私有 IP 连接字符串进行连接。此更改支持应用程序使用 UI 或 API 从对等互连网络进行连接。
要扩展到更多区域,请先在现有 Azure 集群上禁用仅对等互连模式。
如何禁用仅对等互连模式?
要禁用仅对等互连模式,使用:
在 AtlasClusters 中,转到项目的 页面。
如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。
此时会显示“集群”页面。
更新所有应用程序以使用私有 IP 进行对等互连连接字符串。
更改应用程序中使用 Atlas 集群的任何URL ,以将私有 IP 用于对等互连连接字符串。
在 Atlas 中,转到Project Settings 页面。
如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在 Projects(项目)菜单旁边,展开 Options(选项)菜单,然后单击 Project Settings(项目设置)。
显示“项目设置”页面。
确认项目中的所有集群都使用 MongoDB 5.0 或更高版本。
调用get all API端点返回所有集群及其 MongoDB 版本:
例子
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --include \ --request GET "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/clusters?pretty=true"
如果成功,响应应包括:
{ "results": [{ ... "mongoDBMajorVersion": "5.0", "mongoDBVersion": "5.0.14", ... },{ ... "mongoDBMajorVersion": "5.0", "mongoDBVersion": "5.0.12", ... } ] }
更新所有应用程序以使用私有 IP 进行对等互连连接字符串。
更改应用程序中使用 Atlas 集群的任何URL ,以将私有 IP 用于对等互连连接字符串。
在集群上禁用私有 IP 模式。
调用API端点以禁用私有 IP 模式。
例子
使用 curl
,您将调用以下命令:
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --include \ --request PATCH "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/privateIpMode?pretty=true" \ --data ' { "enabled" : false }'
将{GROUP-ID}
更改为您项目的项目 ID。
如果成功,响应将显示:
1 { 2 "enabled" : false 3 }
当我使用自定义 DNS 时,这对 AWS VPC 对等互连有何影响?
在 2020 年 3 月 31 日之前,使用自定义 DNS 服务和与 Atlas 对等互连的 VPC 在 AWS 中部署的应用程序,无法通过私有 IP 地址进行连接:
自定义 DNS 解析为公共 IP 地址。
AWS 内部 DNS 解析为私有 IP 地址。
在 AWS 中使用自定义 DNS 服务部署的应用程序应使用 私有 IP 作为对等互连连接字符串。
要显示这些字符串,请执行以下操作:
在 Atlas 中,转到Project Settings 页面。
如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在 Projects(项目)菜单旁边,展开 Options(选项)菜单,然后单击 Project Settings(项目设置)。
显示“项目设置”页面。
如何确定我的应用程序使用的是哪个连接字符串?
连接字符串 URI 的结构表示字符串的类型。如已创建对等互连连接或私有端点,Atlas 会显示多个选项供您使用。
标准连接字符串
标准连接字符串采用以下格式:
mongodb://xyz456-shard-00-00.ab123.mongodb.net:27017 mongodb+srv://xyz456.ab123.mongodb.net
ab123
之前的点很重要。使用此格式的 URI 解析为公共 IP 地址,除非 从配置了 VPC 对等互连的 AWS 内部进行连接。
重要
此格式更改了旧版连接字符串中的一个字符:集群名称后的连字符 (-
) 变为句点 (.
)。
例如,此传统连接字符串:
mongodb+srv://xyx456-ab123.mongodb.net
写为以下标准连接字符串:
mongodb+srv://xyx456.ab123.mongodb.net
对于新集群,副本集和分片的名称不从集群的名称衍生而来。新名称使用六个字母数字字符 ID。
专用连接字符串
私有连接字符串遵循以下格式:
mongodb://xyx456-shard-00-00-pri.ab123.mongodb.net:27017 mongodb+srv://xyx456-pri.ab123.mongodb.net
ab123
之前的-pri
很重要。使用此格式的 URI 解析为对等互连网络中可访问的私有 IP 地址。如果您为集群配置网络对等互连,则在连接到集群以利用对等互连时必须使用新的主机名。
重要
在新集群中,副本集和分片的名称不从集群的名称衍生而来。新名称使用六个字母数字字符 ID。
AWS PrivateLink 连接字符串
AWS PrivateLink 连接字符串遵循以下格式:
mongodb://pl-0-us-east-1a.ab123.mongodb.net:1024 mongodb+srv://pl-0-us-east-1a.ab123.mongodb.net
如果启用地区化私有端点设置,AWS PrivateLink 接连接字符串将遵循以下格式:
mongodb://pl-0-us-west-1.ab123.mongodb.net:1024 mongodb+srv://cluster0-pl-0-us-west-1.ab123.mongodb.net
使用此格式的 URI 可通过配置 PrivateLink 的 AWS VPC 进行访问,也可以从其他对等互连的 VPC 依次传递访问。
Azure Private Link 连接字符串
Azure Private Link 连接字符串遵循以下格式:
mongodb://pl-0-eastus2.ab123.mongodb.net:1024 mongodb+srv://pl-0-eastus2.ab123.mongodb.net
如果启用地区化私有端点设置,Azure Private Link 接连接字符串将遵循以下格式:
mongodb://pl-0-eastus2.ab123.mongodb.net:1024 mongodb+srv://cluster0-pl-0-eastus2.ab123.mongodb.net
采用此格式的 URI 可通过有人已配置专用链接的 Azure VNet 进行访问,尽管访问可从其他依次对等互连的 VNet 进行传递。
遗留连接字符串
在 2020 年 3 月 31 日之前,您编写的 Atlas 连接字符串如下所示:
AWS |
| ||
AZURE |
| ||
Google Cloud |
|
如果启用 Private Only(仅私有)模式,这些主机名将解析为对等互连网络 IP 地址。如果禁用该模式,主机名将解析为公共 IP 地址。
如果您的应用程序在 Peering Only(仅对等互连)模式下使用旧版连接字符串,请切换到专用 IP 以获取对等互连字符串。
当从M0
M2
、 或M5
集群迁移到其他云提供商时,我是否必须更新连接字符串?
如果您有一个旧版连接字符串,想要更改云提供商,则连接字符串必须包含 .gcp
或 .azure
,并且您要执行以下操作之一:
迁移到 Google Cloud 或 Azure
移出 Google Cloud 或 Azure
注意
任一操作都可能更改连接字符串。在 Atlas 用户界面,在升级完成后单击集群上的 Connect 可以获取更新的连接字符串。
从专用集群迁移到其他 cloud 提供商时,是否必须更新连接字符串?
这取决于以下因素:
当前集群使用哪个云提供者
创建集群的时间
2020 年 11 月 3 日之前创建的 GCP 或 Azure 集群
如果您在 2020 年 11 月 3 日引入多云集群之前创建了集群,并且您的集群在 Google Cloud 或 Azure 上运行:
打开集群构建器。
编辑集群。
添加目标云提供商的只读节点。
注意
如果使用传统备份,请在当前云提供商中保留一个节点,并将其余节点移至目标云提供商。
审查并提交更改。
复制形成的以逗号分隔的 URI 连接字符串。
用这个新的标准连接字符串替换应用程序中的连接字符串。
这样,您的应用程序就可以连接至来自多个云提供商的节点。
重新启动您的应用程序。
确保您的应用程序可以连接到 Atlas。
第一次更改完成后,请重新配置集群:
使用原始云提供商删除所有可选举节点。
删除目标云提供商的只读节点。
使用目标云提供商添加相同数量的可选举节点。
注意
如果使用传统备份,请等待新备份完成后,再将剩余节点移动到目标云提供商。
审查并提交更改。
复制形成的以逗号分隔的 URI 连接字符串。
用这个新的 URI 连接字符串替换应用程序中的 URI 连接字符串。
重新启动您的应用程序。
确保您的应用程序可以连接到 Atlas。
2020 年 11 月 2 日之后创建的 AWS 和集群
如果您的集群在 AWS 上运行,或在任何提供者上运行,并且在 2020 年 11 月 2 日之后创建,则您的连接字符串不会更改,也不会出现集群停机。
打开集群构建器。
编辑集群。
更改云提供商。
审查并提交更改。