注意
此功能适用于 M10 集群或更高版本。要进一步学习;了解哪些功能可用于免费集群,请参阅Atlas免费集群限制;有关 Flex 集群,请参阅Atlas Flex 限制。
您的应用程序应在不停机的情况下处理主节点 (primary node in the replica set)变更。
在Atlas Core 集群上:
在Atlas Infinite 集群上:
存储层协调故障转移,而不是计算节点之间的选举。备用计算节点无需重放oplog或冷启动即可成为主节点 (primary node in the replica set)节点。
主节点 (primary node in the replica set)节点可能会在操作系统或虚拟机维护、垂直向上或向下扩展、 MongoDB版本升级和故障期间发生变化。
Atlas在滚动重启期间保持可用性。
如需了解如何构建弹性应用程序,请参阅使用 MongoDB Atlas 构建弹性应用程序。
您可以通过将 retryWrites=true 添加到Atlas URI连接字符串启用可重试写入。要学习;了解详情,请参阅可重试写入。
您可以使用Atlas用户界面和API来测试Atlas 集群中副本集主节点 (primary node in the replica set)的故障,并观察应用程序如何处理副本集故障转移。
必需的访问权限
要启动故障转移测试,您必须拥有项目的Organization Owner 、 Project Owner 、 Project Cluster Manager或Project Stream Processing Owner访问权限。
先决条件
在测试副本集主节点 (primary node in the replica set)的故障之前,您必须满足以下条件:
对集群的所有待处理更改都必须完成。
集群的所有节点必须处于健康状态并具有最新的监控数据。
每个副本集或分片必须有一个主节点。
集群的任何成员的复制延迟必须小于 10 秒。
集群的所有成员必须至少有 5% 的剩余可用磁盘空间。
所有主节点 oplog 都必须具有足够的空间来支持三小时的操作。
测试主节点故障转移进程
重要
测试主节点故障转移之前,请确保 Atlas 集群运行正常。 否则,Atlas 可能会拒绝您的请求。
您提交测试主节点故障转移的请求时,Atlas 会模拟故障转移事件。 在此过程中:
Atlas关闭当前主节点 (primary node in the replica set)。
副本集的成员举行选举,以选择哪个从节点将成为新的主节点 (primary node in the replica set)。平均而言,一次选举大约需要五秒钟。
Atlas将原始主节点 (primary node in the replica set)作为从从节点(secondary node from replica set)重新添加到副本集。当旧的主节点 (primary node in the replica set)重新加入副本集时,它将与新的主节点 (primary node in the replica set)同步,以获取停机期间发生的任何写入操作。
以下语句描述了在分片集群中翻转和测试故障转移时的 Atlas 行为:
在Atlas Core 集群上,原始主节点 (primary node in the replica set)可能已接受在降级之前未成功复制到从节点的写入操作。当该主节点 (primary node in the replica set)重新加入副本集并开始同步时,它会回滚那些未复制的写入。要学习;了解更多信息,请参阅Atlas中的故障转移期间的回滚。
在Atlas Infinite 集群上,不会发生回滚。存储层提交写入操作,因此前主节点 (primary node in the replica set)节点没有要恢复的未复制写入。
仅重新启动与分片集群中副本集的主节点位于同一实例上的
mongos进程。并行重启分片集群中副本集的主节点。
要使用 Atlas 用户界面执行主节点故障转移测试:
在 Atlas 中,进入项目的 Clusters 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Database 标题下的 Clusters。
会显示集群页面。
对于要执行故障转移测试的集群,请单击 ... 按钮。
单击 Test Resilience(连接)。
单击 Restart Primary 开始测试。Atlas 在 Test Resilience 模态窗口中显示模拟故障转移过程的结果。
验证故障转移
验证故障转移是否成功:
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Database 标题下的 Clusters。
会显示集群页面。
故障转移问题故障排除
如果应用程序无法从容应对故障转移,请确保以下几点:
您正在使用 SRV 连接格式。
您正在使用最新版本的驱动程序。
您已在应用程序中实施了适当的重试逻辑。