0

mongoDB に接続しようとしていますが、ホストに到達できないようです。

この問題は、mongoshell と pymongo で発生します。私が使用するシェルで

mongo --ssl --sslAllowInvalidCertificates host:port/db -u user -p pass --sslCAFile ca.pem

次のエラーメッセージが表示されます。

MongoDB shell version: 3.2.9
connecting to: host:port/db
2016-09-30T13:41:57.268-0300 W NETWORK  [thread1] Failed to connect to host_ip:port after 5000 milliseconds, giving up.
2016-09-30T13:41:57.323-0300 E QUERY    [thread1] Error: couldn't connect to server host:port, connection attempt failed :
connect@src/mongo/shell/mongo.js:231:14
@(connect):1:6

exception: connect failed

pymongoでは、次のコードで接続します

Config = configparser.ConfigParser()
Config.read('configurations.cfg')
mongo_conf = Config['mongoDB_test']

connect = "mongodb://%s:%s@%s:%s/%s?ssl=true" \
    %(mongo_conf['user'],mongo_conf['pass'],mongo_conf['host'],mongo_conf['port'],mongo_conf['database'])
client = MongoClient(connect,ssl_ca_certs=mongo_conf['cert'])
db = client[mongo_conf['database']]

実行すると、これが得られます

Traceback (most recent call last):
  File "test.py", line 24, in <module>
    db.test.insert_one(data)
  File "/home/jmpf13/repos/laura/dev_env/lib/python3.5/site-packages/pymongo/collection.py", line 627, in insert_one
    with self._socket_for_writes() as sock_info:
  File "/usr/lib/python3.5/contextlib.py", line 59, in __enter__
    return next(self.gen)
  File "/home/jmpf13/repos/laura/dev_env/lib/python3.5/site-packages/pymongo/mongo_client.py", line 762, in _get_socket
    server = self._get_topology().select_server(selector)
  File "/home/jmpf13/repos/laura/dev_env/lib/python3.5/site-packages/pymongo/topology.py", line 210, in select_server
    address))
  File "/home/jmpf13/repos/laura/dev_env/lib/python3.5/site-packages/pymongo/topology.py", line 186, in select_servers
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: host:port: timed out 
4

1 に答える 1

2

使用したものと同様の構文で mongo シェルを使用して、bluemix にデプロイした mongoDB インスタンスに接続しましたが、正常に動作します。

展開に問題がある可能性があります。bluemix の UI で、mongo サービスを開くと、「ステータス」インジケーターは緑色で表示されますか?

私が行うもう1つのことは、ホストがそのポートで到達可能であることを確認することです. たとえば、tcping のようなものを使用します。 tcping <host> <port>

または、ピンチの場合は、ポートに telnet し telnet <host> <port> ます。後者の場合、次のような結果が得られます。

Trying <ip>... Connected to <host>. Escape character is '^]'.

これらのいずれかが失敗した場合は、お客様の側でトラフィックをブロックしているものがないことを確認してから、展開が正しくプロビジョニングされていないか、問題がある場合に備えてサポートに連絡します.

于 2016-09-30T19:10:18.200 に答える