【发布时间】:2017-11-23 16:59:53
【问题描述】:
我有一个mongodb replica set,配置如下:
- M1 初级
- M2 二级
- M3 二级
- M4 仲裁员
这是我连接到数据库的 Express 代码(我使用 mongoose 作为 ODM):
const config = {
db: `mongodb://${process.env.DB_ADDRESS_1}/${process.env.DB_NAME},
${process.env.DB_ADDRESS_2}/${process.env.DB_NAME},
${process.env.DB_ADDRESS_3}/${process.env.DB_NAME}`,
dbOptions: {
server: {
socketOptions: {
keepAlive: 1
},
poolSize: 5,
readPreference: 'nearest'
},
replSet: {
rs_name: process.env.REPLICA_SET,
poolSize: 5,
readPreference: 'nearest',
socketOptions: {
keepAlive: 1,
connectTimeoutMS: 30000,
socketTimeoutMS: 0
}
},
db: {
w: 1,
numberOfRetries: 2
}
}
}
mongoose.connect(config.db, config.dbOptions, (error) => {
if (error) {
console.log('Error on connecting to th db: ', error)
console.log('\x1b[31m', '*** PLEASE CONNECT TO DATABASE BEFORE RUN SERVER', '\x1b[0m')
process.exit(1)
}
callback()
})
应用程序按预期运行。
当 M1 宕机时,M2 或 M3 被选为primary,但我的express 应用仍然无法连接到replica set。
我的配置有问题吗?
【问题讨论】:
标签: node.js mongodb mongodb-replica-set mongodb-cluster