1. 程式人生 > >IP錯誤引起MongoDB副本集初始化失敗

IP錯誤引起MongoDB副本集初始化失敗

got 報錯 for replset 17. uri ini map pass

問題描述:

在給客戶搭建環境的時候,在初始化一個MongoDB副本集的過程中,出現了初始化失敗,報"No host described in new configuration 1 for replica set mongotest maps to this node"。具體報錯信息如下(為保護客戶隱私,IP均經過處理):

2018-06-20T11:51:45.695+0800 I CONTROL  [initandlisten]
> config = { _id:"mongotest", members:[  {_id:0,host:"10.0.0.217:27017"}]  };
{
        "_id" : "mongotest",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "10.0.0.217:27017"
                }
        ]
}
> rs.initiate(config);
{
        "ok" : 0,
        "errmsg" : "No host described in new configuration 1 for replica set mongotest maps to this node",
        "code" : 93,
        "codeName" : "InvalidReplicaSetConfig"
}
> 

在執行 config = { _id:"mongotest", members:[ {_id:0,host:"10.0.0.217:27017"}] };的時候成功了,但是執行 rs.initiate(config);的時候一直在報這個錯誤。

原因分析:

看到"No host described in new configuration 1 for replica set mongotest maps to this node"的提示,懷疑是命令行和mongo.conf文件裏面的配置不一致,但是查看配置文件,確實配置的是mongotest:

[root@10-0-0-217 ~]# cat /etc/mongodb/mongo.conf
systemLog:
   destination: file
   path: "/opt/mongodb/mongod.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: /opt/mongodb
setParameter:
   enableLocalhostAuthBypass: true
replication:
   replSetName: mongotest     #和執行的命令行是一致的,沒有問題
processManagement:
   fork: true
   pidFilePath: "/opt/mongodb/mongod.pid"
security:
   authorization: enabled
   keyFile: "/etc/mongodb/mongodb-keyfile"
[root@10-0-0-217 ~]#

於是想到會不會是IP的問題。
因為進入這臺機器是用的堡壘機進去,機器的hostname和命令行窗口顯示的機器IP都是10.0.0.217。但是實際上本機的IP並不是這個,ifconfig查看真實的IP地址實際為172.0.2.12,而不是hostname顯示的10.0.0.217.在配置命令行的時候,直接用了hostname的IP,因此出現了這個報錯。

解決方法:

將命令中的IP替換為正確的IP,然後再在MongoDB命令行裏面重新執行命令,就OK了:

2018-06-20T11:51:45.695+0800 I CONTROL  [initandlisten]
> config = { _id:"mongotest", members:[  {_id:0,host:"172.0.2.12:27017"}]  };
{
        "_id" : "mongotest",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "172.0.2.12:27017"
                }
        ]
}
> rs.initiate(config);     #這次就不再報錯了
{ "ok" : 1 }
mongotest:OTHER>
mongotest:SECONDARY>
mongotest:PRIMARY>
mongotest:PRIMARY>
mongotest:PRIMARY>
mongotest:PRIMARY>

單點的副本集就好了。

IP錯誤引起MongoDB副本集初始化失敗