1

Amazon クラウドに 3 メンバーのレプリカ セットを作成しました。必要なファイアウォール設定と mongo 構成をすべて設定しました。以下は、レプリカ セットの構成です。

{
    "_id" : "rs1",
    "version" : 3,
    "protocolVersion" : NumberLong(1),
    "members" : [
            {
                    "_id" : 1,
                    "host" : "ip-172-31-16-84:27017",
                    "arbiterOnly" : false,
                    "buildIndexes" : true,
                    "hidden" : false,
                    "priority" : 1,
                    "tags" : {

                    },
                    "slaveDelay" : NumberLong(0),
                    "votes" : 1
            },
            {
                    "_id" : 2,
                    "host" : "ip-172-31-23-212:27017",
                    "arbiterOnly" : false,
                    "buildIndexes" : true,
                    "hidden" : false,
                    "priority" : 1,
                    "tags" : {

                    },
                    "slaveDelay" : NumberLong(0),
                    "votes" : 1
            },
            {
                    "_id" : 3,
                    "host" : "ip-172-31-14-196:27017",
                    "arbiterOnly" : false,
                    "buildIndexes" : true,
                    "hidden" : false,
                    "priority" : 1,
                    "tags" : {

                    },
                    "slaveDelay" : NumberLong(0),
                    "votes" : 1
            }
    ],
    "settings" : {
            "chainingAllowed" : true,
            "heartbeatIntervalMillis" : 2000,
            "heartbeatTimeoutSecs" : 10,
            "electionTimeoutMillis" : 10000,
            "getLastErrorModes" : {

            },
            "getLastErrorDefaults" : {
                    "w" : 1,
                    "wtimeout" : 0
            },
            "replicaSetId" : ObjectId("5720fb585ef3baca32efe765")
    }
}

注 : マシンのホスト名マシンのパブリック IP アドレスを使用してレプリカ セットを作成しました。

以下のコマンドを使用して、これら 3 つのレプリカ セット マシンのいずれかからレプリカ セットに接続し、レプリカ セットのプライマリに接続します。

mongo --host  "rs1/ip-172-31-16-84:27017"

しかし、同じ LAN にない他のマシン (ローカルマシンを想定) から同じコマンドを使用すると、. コマンドは以下のエラーで失敗します:

C:\Users\gur35948>mongo --host "rs1/52.221.230.236:27017"
MongoDB shell version: 3.0.6
connecting to: rs1/52.221.230.236:27017/test
2016-04-28T11:54:02.851+0530 I NETWORK  starting new replica set monitor for     replica set rs1 with seeds 52.221.230.236:27017
2016-04-28T11:54:02.853+0530 I NETWORK  [ReplicaSetMonitorWatcher] starting
2016-04-28T11:54:03.043+0530 I NETWORK  changing hosts to rs1/ip-172-31-14-196:27017,ip-172-31-16-84:27017,ip-172-31-23-212:27017 from rs1/52.221.230.236:27017
2016-04-28T11:54:13.689+0530 I NETWORK  [ReplicaSetMonitorWatcher] getaddrinfo("ip-172-31-14-196") failed: errno:11001 No such host is known.
2016-04-28T11:54:14.335+0530 I NETWORK  getaddrinfo("ip-172-31-16-84") failed: errno:11001 No such host is known.
2016-04-28T11:54:16.682+0530 I NETWORK  getaddrinfo("ip-172-31-16-84") failed: errno:11001 No such host is known.
2016-04-28T11:54:17.505+0530 I NETWORK  getaddrinfo("ip-172-31-14-196") failed:errno:11001 No such host is known.
2016-04-28T11:54:17.505+0530 W NETWORK  No primary detected for set rs1
2016-04-28T11:54:17.511+0530 E QUERY    Error: ReplicaSetMonitor no master found for set: rs1
at connect (src/mongo/shell/mongo.js:181:14)
at (connect):1:6 at src/mongo/shell/mongo.js:181

mongo は、ネットワークの違いにより、レプリカ セットで使用されているホスト名を解決できません。パブリック Ip は使用していません。

最後に、このリモート レプリカ セットに接続するにはどうすればよいですか??

ありがとう

4

2 に答える 2

2

レプリカ セットに接続するとき、クライアント/ドライバー (mongoシェルなど) は、で定義されているように、レプリカ セット用に構成された詳細を使用しますrs.conf()

  • ホスト名は IP アドレスに解決可能でなければなりません
  • 接続は、レプリカ セット メンバーごとに構成されたホスト名/IP/ポートを使用して確立されます。

mongo特に次のエラーは、ホスト名がクライアントから解決できないことを示しています。

2016-04-28T11:54:13.689+0530 I NETWORK [ReplicaSetMonitorWatcher] getaddrinfo("ip-172-31-14-196") failed: errno:11001 No such host is known. 2016-04-28T11:54:14.335+0530 I NETWORK getaddrinfo("ip-172-31-16-84") failed: errno:11001 No such host is known.

ホスト名ip-172-31-16-84は、ホストの IP アドレスが 172.31.16.84 であることを示しています。これはルーティング不可能なプライベート ネットワーク アドレスです。

ネットワークの外部から内部専用の IP アドレスに接続することはできません。

mongoデプロイに安全に接続するには、レプリカ セットが存在するプライベート ネットワークへの SSH または VPN 接続を開き、そのプライベート ネットワーク内からシェルを実行する必要があります。

デプロイメントのセキュリティ保護の詳細については、MongoDB セキュリティ チェックリストを確認してください。

于 2016-05-26T06:50:29.153 に答える
1

SSH トンネルを使用してサーバーの 1 つに接続し、mongo シェルを使用して localhost に接続するのはどうですか?

これは、セットアップが非常に簡単で、安全であり、現在ほとんどの MongoDB GUI でサポートされています。

于 2016-05-26T07:09:17.290 に答える