無法連接到mongos
在MongoDB Sharding Documentation之後,我使用包含我的配置伺服器細節的配置文件來啟動一個 mongos。
這似乎很簡單,但我遇到了一個問題。我在一台機器上啟動 mongos(假設它的 ip 地址是“some_ip”):
$ sudo mongos --config /etc/some_config.conf
我嘗試從另一台機器連接到它的外殼,但我收到連接被拒絕錯誤。
$ mongos some_ip:xxxxx
這是我的 some_config.conf 文件的一部分:
net: port: xxxxx bindIp: 0.0.0.0 sharding: configDB: <configReplSet>/<ip_of_config>:27019
我使用 0.0.0.0 進行測試。我確保我要連接的 ip_addr 和埠與 mongos 主機的 ip 和我在**
net.port
**參數中指定的埠匹配。我還在我的防火牆中打開了這個埠用於入口/出口連接。我錯過了什麼嗎?(注意:**我編輯了文章以進一步澄清)
更新
(注意:我用“ip_of_config”替換了實際的 ip addr)這是我的 mongos 日誌文件在我啟動 mongos 時所說的內容。
2018-05-02T05:57:48.533+0000 W NETWORK [monitoring keys for HMAC] Failed to connect to <ip_of_config>:27019, in(checking socket for error after poll), reason: Connection refused 2018-05-02T05:57:48.533+0000 W NETWORK [monitoring keys for HMAC] Unable to reach primary for set crs0
現在我的配置伺服器啟動並執行良好,但它的日誌文件顯示它接受來自我的 mongos 伺服器的多個連接,但這些連接幾乎立即關閉。還有一些警告日誌:
W SHARDING [Balancer] Balancer settings could not be loaded and will be retried in 10 seconds :: caused by :: ReadConcernMajorityNotAvailableYet: Failed to refresh the balancer settings due to ReadConcernMajorityNotAvailableYet: Read concern majority reads are currently not possible. W SHARDING [shard registry reload] cant reload ShardRegistry :: caused by :: CallbackCanceled: Callback canceled
mongos for “MongoDB Shard”,是 MongoDB 分片配置的路由服務,它處理來自應用層的查詢,並確定這些數據在分片集群中的位置,以完成這些操作。從應用程序的角度來看,mongos實例的行為與任何其他 MongoDB 實例相同。
正如你在這裡提到的 mongos.conf 文件
net: port: xxxxx bindIp: 0.0.0.0 sharding: configDB: <configReplSet>/<ip_of_config>:27019
在這裡我想說的是,由於您在 mongos.conf 文件中的 bindIp 為 0.0.0.0 但在分片部分,您正在使用任何副本集的埠號 27019。
注意:在這裡我無法在您的 mongos.conf 文件中看到任何日誌路徑目標。
根據此處的 MongoDB BOL 文件,從 MongoDB 3.6 開始,mongos
127.0.0.1
預設綁定到 localhost ()。您是否嘗試過使用此
mongos.conf
文件配置。sharding: configDB: replicasetname/ipaddress:27019 -- external ip of replica set of any node which port is 27019, as you mention in your code. which must be participate the replication. net: bindIp: localhost,ipaddress -- external ip address, if you are using port: xxxxx --port number of mongos, it should be different from replica set node port number systemLog: destination: file path: -- log destination of mongos file logAppend: true processManagement: fork: true -- if you are using the fork
您沒有告訴您的 mongodb 版本,但我猜您使用的是最新版本之一,因此您也需要設置net.bindIp,因為它的預設值是
localhost
,並且如您所知,您無法從機器外部連接 localhost。