分片錯誤消息“無法使用 localhost … 使用 localhost 或 ipadresses”
我正在嘗試在我的電腦上設置一個測試環境,包括分片。我添加了 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 地址,您可以使用
ifconfig
或ip address
命令檢查地址。然後,如果您
mongos
使用該 IP 地址而不是 localhost 進行連接。請記住檢查您的防火牆是否打開了所有這些埠!