2017-11-14 25 views
0

Googleクラウドコンピューティングインスタンスにmongodbをセットアップして、リモートで接続しようとしています。私はインスタンスをタグや0.0.0.0/0の範囲IPのtcp:27017を開き、自分のGoogleクラウドコンソールのファイアウォールのルールを設定しているMongoDBリモートサーバーに接続できません

# mongod.conf 
# for documentation of all options, see: 
# http://docs.mongodb.org/manual/reference/configuration-options/ 
# Where and how to store data. 
storage: 
    dbPath: /var/lib/mongodb 
    journal: 
    enabled: true 
# engine: 
# mmapv1: 
# wiredTiger: 
# where to write logging data. 
systemLog: 
    destination: file 
    logAppend: true 
    path: /var/log/mongodb/mongod.log 
# network interfaces 
net: 
    port: 27017 
    bindIp: 0.0.0.0 
#processManagement: 
security: 
    authorization: 'enabled' 

:マイmongod.confファイルには、次のようになります。

モンゴを聞いているように見える、ポート27017上のチェック:ポート27017が開いているように、それはまた思わ全体

sudo netstat -tulpn | grep 27017 
tcp  0  0 0.0.0.0:27017   0.0.0.0:*    LISTEN  3781/mongod 

:インスタンスIの設定に

netstat --listen 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  
tcp  0  0 *:27017     *:*      LISTEN 
... 

管理者と管理データベースユーザー:

>use admin 
>db.createUser(
    { 
    user: 'admin', 
    pwd: 'somepass', 
    roles: [{ role: "userAdminAnyDatabase", db: "admin" }] 
    } 
) 

また、テストデータベースのユーザーを設定します。

>use test 
>db.createUser(
    { 
    user: 'tester', 
    pwd: 'apassword', 
    roles: [{ role: "readWrite", db: "test" }, 
      { role: "read", db: "reporting" }] 
    } 
) 

は、このユーザーはローカルで動作します。しかし

>use test 
>db.auth('tester', 'apassword') 
1 

私が接続しようとすると、リモートで失敗した:

$ mongo -u tester -p apassword 12.345.67.890/test 
MongoDB shell version v3.4.1 
connecting to: mongodb://12.345.67.890/test 
2017-11-14T12:47:07.369-0700 W NETWORK [main] Failed to connect to 12.345.67.890:27017 after 5000ms milliseconds, giving up. 
2017-11-14T12:47:07.370-0700 E QUERY [main] Error: couldn't connect to server 12.345.67.890:27017, connection attempt failed : 
[email protected]/mongo/shell/mongo.js:234:13 
@(connect):1:6 
exception: connect failed 

私はので、私はかなり消耗してきたネットワークの専門家ではありませんよこの時点で私の知り合いであり、進め方は分かりません。

私はmongod.confに何かが欠けていますか?ファイアウォールを間違ってセットアップしましたか?どんな助けもありがとうございます。

答えて

0

私はこれのための解決策を思いつきましたが、私はそれがなぜ機能し、私の元のアプローチではないのか不明です。

インスタンスにはhttp/httpsが有効です。これは、ファイアウォール規則default-allow-httpdefault-allow-httpsを使用します。これらのルールは、どこでも(0.0.0.0/0)からtcpポート80と443までの接続を可能にします。 httpルールを編集し、TCPポート27017を追加しました。

これでサーバに接続できます。

テストとして、httpルールをリセットし、tcp:27017から0.0.0.0/0を開くすべてのインスタンスに別のルールを適用しました。基本的には、名前とターゲットタグのhttpルールの保存と同じです。この変更で私はサーバーに接続できません。

不完全なファイアウォールルールを理解していない限り、それはむしろ奇妙に思われ、意図した動作のようには感じられません。

最終的にhttp/httpsポートのいずれかを使用するようにmongoを設定するか、またはそれらのルールにポート27017を追加するのが方法です。