2015-06-19 34 views
0

在我本地的Mac OSX上,我想運行rake任務一個位於我的網絡中的服務器。到遠程mysql數據庫的所有種子都正常工作。但是,當我嘗試種子MongoDB的數據,我得到以下錯誤:無法連接到副本集的主節點#<Moped :: Cluster [<Moped :: Node resolved_address =「10.10.4.131:27017」>]

bundle exec rake db:seed RAILS_ENV=staging 
rake aborted! 
Moped::Errors::ConnectionFailure: Could not connect to a primary node for replica set 
#<Moped::Cluster:70258359778560 @seeds=[<Moped::Node resolved_address="10.10.4.131:27017">]> 
/Users/donato/.rvm/gems/[email protected]/gems/moped-2.0.4/lib/moped/cluster.rb:254:in `with_primary' 

我能夠部署到使用Capistrano的該服務器。所以我知道這不是一個網絡問題。我也已經嘗試瞭解決方案here。我刪除了mongod.lock,然後運行service mongod restart,沒有運氣。然而,在那個問題中,他試圖在本地主機上運行它,而我想在另一臺計算機上運行它,但在我的網絡中運行它。我能做什麼?

回答

0

好的,我解決了它。顯然,默認情況下,mongodb不允許遠程連接。這將只提供了本地接口,因此只能訪問本機本身:

# netstat -tulpn | grep mongod 
tcp  0  0 127.0.0.1:27017    0.0.0.0:*     LISTEN  12963/mongod 

爲了解決這個問題,找出你的MongoDB的配置文件是:

# find/-type f -name mongod* 
/etc/mongodb.conf 

然後編輯該文件添加然後添加您的機器的私有IP地址(如果遠程計算機與本地計算機在同一網絡中,否則您將不得不添加公共IP地址):

bind_ip = 127.0.0.1,10.10.4.131 

然後,重新啓動的MongoDB,並檢查它是否在私有IP偵聽(除loopback接口):

service mongod restart 
# netstat -tulpn | grep mongod 
tcp  0  0 10.10.4.131:27017   0.0.0.0:*     LISTEN  12963/mongod   
tcp  0  0 127.0.0.1:27017    0.0.0.0:*     LISTEN  12963/mongod  

如果你有一個防火牆,打開端口的up:

iptables -A INPUT -p tcp --dport 27017 -j ACCEPT 

然後從您的本地機器確認您現在可以遠程訪問該端口:

$ nc -z 10.10.4.131 27017 
Connection to 10.10.4.131 port 27017 [tcp/*] succeeded! 

並且您擁有它。現在,我們可以從本地機器播種分期的MongoDB數據庫:

bundle exec rake db:seed RAILS_ENV=staging 
0

這僅僅是因爲你沒有正確停止的MongoDB和mongod的鎖被創建。 只是刪除mongob lock.Follow這兩個步驟

1.sudo RM /var/lib/mongodb/mongod.lock

2.sudo服務的MongoDB啓動

相關問題