Удаленный доступ к базе данных postgresql с помощью FDW [решено]

У меня есть два сервера, размещенных в разных местах, с Postgresql.

Я хочу получить доступ к данным Postgresql с сервера 1 (CentOS 7) с помощью postgresql FDW с сервера 2 (Ubuntu 16).

Проблема:

psql: не удалось подключиться к серверу: в соединении отказано. Работает ли сервер на хосте «xxx.xxx.xxx.xxx» и принимает соединения TCP / IP на порту 5432?

Я редактировал оба файла postgresql.conf с listenaddresses = '*' и оба файла pghba.conf с host all all 0.0.0.0/0 md5

по-прежнему не работают, поэтому я подумал, что это может быть вызвано по iptables. Я добавляю эти правила:

iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 5432 -j ACCEPT

По-прежнему не работает. Нужен совет.

Спасибо!

(извините за мой английский)

1
задан 9 February 2018 в 18:59

1 ответ

С точки зрения сети сервер 2 является клиентом и сервером 1, сервер. Операционная система клиента сообщает о Соединении, которому отказывают при попытке соединиться с xxx.xxx.xxx.xxx:5432.

Обычно та ошибка не происходит из-за брандмауэра, потому что брандмауэры имеют тенденцию отбрасывать пакеты, которые производят приведенное к таймауту Соединение.

Это происходит также не из-за пост-ГРЭС основанная на хосте ошибка аутентификации, поскольку они производят совершенно другие и определенные сообщения об ошибках.

Несколько вероятных причин:

  • PostgreSQL действительно не слушает на порте 5432 на сервере 1. Это может быть подтверждено с netstat -tlnp | grep 5432 выполненный как корень. Обратите внимание, что параметр конфигурации listen_addresses, нет listenaddresses. Также пост-ГРЭС должна быть перезапущена после того изменения. Можно посмотреть на журналы сервера пост-ГРЭС, чтобы подтвердить, что это работало или проверка по причине, почему это не делает.

  • Конфигурация сети такова, что сервер 1 не может быть достигнут с сервера 2 с xxx.xxx.xxx.xxx адрес. Пакеты направляются где-то в другом месте на сетевом интерфейсе, где 5432, поскольку порт TCP не связывается с сервисом. Например, если сервер 1 будет виртуализирован, то ожидается, что это не может быть достигнуто непосредственно через адрес его хоста.

0
ответ дан 8 December 2019 в 02:26

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

Похожие вопросы: