Тайм-аут при доступе к mongoDB из pymongo с туннелированием

Я пытаюсь получить доступ к кластеру mongoDB с помощью туннелирования. установка:

моя машина => прыгать машина => mongod/mongos...

Я нашел этот ответ: /questions/22548946/kak-svyazat-udalennyij-mongodb-s-pymongo/22548960#22548960, но продолжаю получать тайм-аут от mongodb.

Что я пробовал до сих пор:

  • точка останова после кода туннелирования и перед кодом Pymongo; затем доступ к монго из оболочки монго - это сработало (поэтому работает туннелирование)
  • подключитесь к: mongos, mongod primary, mongod primary, удалите настройки чтения и так далее.
  • попробовал код с несколькими разными средами с похожими настройками
  • играть с адресом удаленного связывания (имя хоста / IP)
  • играть с локальным адресом привязки ("0.0.0.0" / "127.0.0.1" / "localhost")

Каждый раз, когда я пытаюсь запросить монго (например, col.count(), col.find_one() и т. Д.), Я получаю тайм-аут.

код:

#! /usr/bin/python
from pymongo import MongoClient, ReadPreference
from sshtunnel import SSHTunnelForwarder
import paramiko

SSH_KEY_LOCATION = '...'
JUMP_MACHINE_ADDRESS = '...'
SSH_USER = '...'
REMOTE_MONGO_ADDRESS = '...'

DB_NAME = '...'
COLLECTION_NAME = '...'

pkey = paramiko.RSAKey.from_private_key_file(SSH_KEY_LOCATION)
server = SSHTunnelForwarder(
    (JUMP_MACHINE_ADDRESS),
    ssh_username=SSH_USER,
    ssh_private_key=pkey,
    remote_bind_address=(REMOTE_MONGO_ADDRESS, 27017),
    local_bind_address=('127.0.0.1', 27017)
)
server.start()

client = MongoClient('mongodb://127.0.0.1:27017', readPreference=ReadPreference.SECONDARY)
db = client[DB_NAME]
col = db[COLLECTION_NAME]

count = col.count({})

print(count)

server.stop()

Любая идея? Спасибо!

=== ОБНОВЛЕНИЕ ===

Вывод ошибки:

File "/Library/Python/2.7/site-packages/pymongo/collection.py", line 1560, in count
  return self._count(cmd, collation, session)
File "/Library/Python/2.7/site-packages/pymongo/collection.py", line 1504, in _count
  with self._socket_for_reads() as (sock_info, slave_ok):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 17, in __enter__
  return self.gen.next()
File "/Library/Python/2.7/site-packages/pymongo/mongo_client.py", line 982, in _socket_for_reads
  server = topology.select_server(read_preference)
File "/Library/Python/2.7/site-packages/pymongo/topology.py", line 224, in select_server
  address))
File "/Library/Python/2.7/site-packages/pymongo/topology.py", line 183, in select_servers
  selector, server_timeout, address)
File "/Library/Python/2.7/site-packages/pymongo/topology.py", line 199, in _select_servers_loop
   self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: timed out

0 ответов

Другие вопросы по тегам