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