У меня есть два сервера, размещенных в разных местах, с 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
По-прежнему не работает. Нужен совет.
Спасибо!
(извините за мой английский)
С точки зрения сети сервер 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 будет виртуализирован, то ожидается, что это не может быть достигнуто непосредственно через адрес его хоста.