The names given to
the mongoDb nodes are very important. These names are used by the web application to establish connections. If we do rs.status() as a mongo
client, we may see the following names highlighted in red:
rs0:PRIMARY>
rs.status()
{
"set" : "rs0",
"date" :
ISODate("2015-07-01T03:29:11.718Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" :
"mongodb-node-3.novalocal:27017",
"health" : 1,
"state" : 2,
"stateStr" :
"SECONDARY",
"uptime" :
1215292,
"optime" :
Timestamp(1435130014, 6611),
"optimeDate"
: ISODate("2015-06-24T07:13:34Z"),
"lastHeartbeat"
: ISODate("2015-07-01T03:29:11.654Z"),
"lastHeartbeatRecv" :
ISODate("2015-07-01T03:29:10.310Z"),
"pingMs" : 0,
"configVersion" : 3
},
{
"_id" : 1,
"name" :
"mongodb-node-1:27017",
"health" : 0,
"state" : 8,
"stateStr" :
"(not reachable/healthy)",
"uptime" : 0,
"optime" :
Timestamp(0, 0),
"optimeDate"
: ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" :
ISODate("2015-07-01T03:29:10.406Z"),
"lastHeartbeatRecv" :
ISODate("2015-07-01T01:37:53.542Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "Failed attempt to connect to
mongodb-node-1:27017; couldn't connect to server mongodb-node-1:27017 (10.0.0.15),
connection attempt failed",
"configVersion" : -1
},
{
"_id" : 2,
"name" :
"mongodb-node-2:27017",
"health" : 1,
"state" : 1,
"stateStr" :
"PRIMARY",
"uptime" :
1831066,
"optime" :
Timestamp(1435130014, 6611),
"optimeDate"
: ISODate("2015-06-24T07:13:34Z"),
"electionTime" : Timestamp(1435714575, 1),
"electionDate" : ISODate("2015-07-01T01:36:15Z"),
"configVersion" : 3,
"self" : true
}
],
"ok" : 1
}
connectionString = 'mongodb://mongodb-node-3.novalocal:27017,mongodb-node-1:27017,mongodb-node-2:27017/cpi?replicaSet=rs0&connectTimeoutMS=1000'
However these names don't actually resolve to an IP address. So take it work, I've modified the /etc/hosts file on the web server as follows
10.0.1.x
mongodb-node-2
10.0.1.y
mongodb-node-1
10.0.1.z mongodb-node-3.novalocal
To test the mapping
works, try the following command on the web server:
ping mongodb-node-2
Reference:
http://qnalist.com/questions/5216546/mongotimeoutexception-trying-to-connect-to-a-replica-set