Mongodb

分片錯誤消息“無法使用 localhost … 使用 localhost 或 ipadresses”

  • November 2, 2017

我正在嘗試在我的電腦上設置一個測試環境,包括分片。我添加了 2 個分片伺服器、一個 configsvr 和一個路由器實例。當我嘗試添加分片時,我收到以下錯誤消息:“不能使用 localhost 作為分片,因為所有分片都需要通信。要麼使用本地主機中的所有分片和 configdbs,要麼使用實際 IP 中的所有。主機:localhost:27017 isLocalHost :1" "

我在網上搜尋並找到了一些關於它的主題,但沒有任何地方解釋它們是如何準確地解釋的,而且由於我是 mongoDB 的新手,所以很難理解發生了什麼。例如,我在這裡查看。但由於我從未使用過 localhost 以外的任何東西,我覺得這很奇怪。

這就是我的設置方式:

2 個 shardsvr 實例:

   mongod --shardsvr --replSet rs1 --port 27017 --dbpath D:\data\db
   mongod --shardsvr --replSet rs2 --port 27018 --dbpath D:\data2\db

1 個 configsvr 實例:

   mongod --configsvr --replSet rs0 --port 27019 --dbpath D:\datacfg\db

我初始化了 3 個副本集(另一個問題,它們是否需要都是不同的副本集?或者不是?)。

然後我添加了一個 mongos 實例:

   mongos --configdb rs0/localhost:27019 --port 27020

然後,當我嘗試連接到 mongos 和 addhards 時,它出錯了:

   mongo --port 27020

錯誤消息

由於我從不指定主機,我假設他總是使用 localhost?不?反正我也不知道怎麼查。如果您需要更多資訊,請告訴我。

提前致謝

解決方案是向***rs.initiate()***添加參數。

例如:

rs.initiate({_id : "rs0", version: 1, members: [ {_id : 0, "host" : "localhost:27019"} ] })

對於我開始的每個節點。您需要根據您提供給他們的 replSet 參數調整 _id 並且還需要調整後面的埠號。

是的,您不能混合 IP 地址和 localhost。那些啟動的 mongod 程序現在正在使用您的網路設備 IP 地址。如果您不知道您的機器 IP 地址,您可以使用ifconfigip address命令檢查地址。

然後,如果您mongos使用該 IP 地址而不是 localhost 進行連接。請記住檢查您的防火牆是否打開了所有這些埠!

引用自:https://dba.stackexchange.com/questions/189833