我有一个连接到 MongoDB 的 REST API(用 Express + Monk 编写)。该数据库是一个带有 mms 的 MongoDB 副本集设置。
当主节点关闭时,应用程序变得无响应。在 SECONDARY 被选为 PRIMARY 后,它需要手动重启才能再次工作。
配置:
- Mongodb Replica set (Ver 2.6.7) 配置MMS
- 总共三个节点(两个数据节点和一个仲裁器)
- MMS 给出的所有默认配置
- Node App : Express 与 Monk 作为 mongodb 驱动程序。(我也试过猫鼬,结果一样)
连接字符串:-
mongodb://xxx1.xxx.com:27017, xxx2.xxx.com:27017: 27017/dbname
with option as
var options = {
server: {
socketOptions: {
keepAlive: 1,
socketTimeoutMS : 15000,
connectTimeoutMS: 30000
}
},
replset: {
socketOptions: {
keepAlive: 1,
socketTimeoutMS : 15000,
connectTimeoutMS: 30000
}
}
}
它与我配置错误的东西有关吗?跟mms有关系吗?如何解决这个问题?
更新:我遵循的步骤
- 在 Azure Cloud 中创建了 3 三个新 VM,并使用 MMS(一个主、一个辅助和一个仲裁器)为其部署了 mongodb 副本集。
- 生成了一个新的快递应用程序。
- 添加了僧侣模块
- 编写一个简单的 API 连接到副本集(API 将向 db 写入一些内容,然后读取它并作为响应返回)
- 从 bash 脚本中不断调用此 API 以确保 API 已启动并正在运行
- 重新启动作为主要的机器
即使选择了新的主节点并且所有虚拟机都已备份,API 仍将继续失败。