Не удается подключиться к реплике mongodb, установленной в экземпляре gm cloud vm - PullRequest
1 голос
/ 08 марта 2020

Я развернул набор mongodb-replica в google cloud vm (решение marketplace) и могу подключиться к нему через browser-s sh, где я создал базу данных и включил accessControl. Однако я не могу подключиться к набору из внешнего мира или из приложения на движке приложения.

моя строка подключения выглядит следующим образом:

mongo "mongodb://[user]:[pass]@35.207.100.1:27017,35.207.100.2:27017/mydb?replicaSet=rs0&authSource=admin"

И вот что я получаю:

2020-03-08T17:27:42.204+0100 I  CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to 35.207.100.1:27017
2020-03-08T17:27:42.204+0100 I  CONNPOOL [ReplicaSetMonitor-TaskExecutor] Connecting to 35.207.100.2:27017
2020-03-08T17:27:47.209+0100 W  NETWORK  [ReplicaSetMonitor-TaskExecutor] Unable to reach primary for set rs0
2020-03-08T17:27:47.209+0100 I  NETWORK  [ReplicaSetMonitor-TaskExecutor] Cannot reach any nodes for set rs0. Please check network connectivity and the status of the set. This has happened for 1 checks in a row.

Что я уже сделал:

  • Предоставил каждому экземпляру статический c внешний IP-адрес (он отвечает на эхо-запросы)
  • Создание правила брандмауэра для входящего (а также исходящего) трафика c на tcp:27017 из 0.0.0.0/0 (попытался ограничить с помощью сетевого тега, а также попытался включить его для всех случаев - без различий в результатах), см. Следующие изображения:

    • firewall overview for mongo
    • firewall rule incoming traffic
    • network interface details of the primary
  • Я также отключил брандмауэр (разрешив все трафик c из всех источников на всех портах во все экземпляры) для целей тестирования, и сообщения об ошибках появлялись намного быстрее, чем раньше, и он пытается соединиться примерно 20 раз - раньше всего 3 раза. Таким образом, кажется, что есть влияние.

  • my /etc/mongod.conf имеет следующие записи:

    net:
      port: 27017
      bindIp: 0.0.0.0
    replication:
      replSetName: rs0
    

, и эта конфигурация который используется процессом как ps aux показывает мне:

mongodb   5862  0.4  1.1 1468472 91388 ?   SLsl Mar07   5:10  /usr/bin/mongod --config /etc/mongod.conf

Кроме того, все машины находятся в сети по умолчанию

netstat на первичном из набора показывает мне:

Proto  Recv-Q  Send-Q  Local Address           Foreign Address         State       PID/Program name
tcp        0      0    0.0.0.0:27017           0.0.0.0:*               LISTEN      22544/mongod

Кроме того, когда я использую браузер sh для одного из экземпляров, я могу подключиться к набору только через внутренние IP-адреса, но не через внешние IP-адреса.

Я предполагаю, что все еще что-то не так с конфигурацией сети, но я не могу узнать, что это такое.

Что мне здесь не хватает?

Ответы [ 2 ]

1 голос
/ 09 марта 2020

ОК, вот что решило мою проблему (хотя я не понимаю, почему).

  • Удалите мое правило межсетевого экрана и повторно добавьте его с той же конфигурацией и такой же сетевой тег (я только что скопировал и вставил)

    РЕДАКТИРОВАТЬ: Что могло бы иметь значение, так это priority правила как , заявленное в этом комментарии Сергеем Рохозой . Прежде чем он имел самый низкий приоритет 65534 после повторного добавления значения по умолчанию 1000.

  • измените мою строку подключения на:

    mongo "mongodb://[user]:[pass]@35.207.100.1:27017,35.207.100.2:27017/dbname"
    

Просто выполнение одной из этих вещей не помогло.

0 голосов
/ 09 марта 2020

Согласно анализу, показанному внизу, порт не открыт для остальных Ips.

enter image description here

Убедитесь, что правила брандмауэра включают это. Чтобы

  • настроить правило брандмауэра в облачной консоли Google
  • предоставить тег в правиле брандмауэра
  • пометить свой экземпляр тем же тегом, что и правило брандмауэра
...