我们有一个mongodb副本集,其中3个节点(db01-03)作为副本集“rs0”运行。
通过MongoClient::getHosts()
获取主机信息时,主服务器SOMETIMES报告两次,一次作为rs0的一部分,一次是独立的(所以看起来如此?):
{
"db01.example.com:27017;rs0;...": {
"host": "db01.example.com",
"port": 27017,
"health": 1,
"state": 2,
"ping": 0,
"lastPing": 1475144757
},
"db02.example.com:27017;rs0;........": {
"host": "db02.example.com",
"port": 27017,
"health": 1,
"state": 1,
"ping": 0,
"lastPing": 1475144757
},
"db03.example.com:27017;rs0;.......": {
"host": "db03.example.com",
"port": 27017,
"health": 1,
"state": 2,
"ping": 0,
"lastPing": 1475144757
},
"db02.example.com:27017;-;.......": {
"host": "db02.example.com",
"port": 27017,
"health": 1,
"state": 1,
"ping": 0,
"lastPing": 1475143739
}
}
为什么会发生这种情况,这是故意/偶然还是我们应该关注的事情?
问题是,我们的监控会定期比较“报告的主机”与“预期的主机”,并且我们会收到自4 !== 3
以来的警报。
PS:我们当然可以通过比较$actual<$expected
来修复警报。这不是问题,但是:
为什么主要有时会显示两次?