Воздушный поток — Не удается подключиться к внешнему серверу postgres

#postgresql #docker #airflow

#postgresql #докер #воздушный поток

Вопрос:

У меня есть рабочий экземпляр Airflow, работающий с использованием стандартных параметров Docker.

Я пытаюсь связаться с отдельным сервером postgresql (например, не с тем, который использует airflow), в той же сети и не используя docker.

Сервер postgresl работает на:

  • ведущий: 192.168.4.4
  • порт: 30991
  • пользователь: пользователь для чтения

Я добавил соединение в разделе воздушный поток -gt; администратор -gt;gt; соединения следующим образом:

Конфигурация Подключения Воздушного Потока

Я пытался:

  • airflow connections get команда внутри контейнера возвращает конфигурацию подключения.
  • pg_isready команда из контейнера воздушного потока (в bash), а также различные команды psql не работают. Когда они находятся вне контейнера, на главной машине, они работают.
  • Я попытался использовать ping из контейнера воздушного потока, но, поскольку установки docker минимальны, похоже, что ping не установлен. Есть ли какой-нибудь другой способ проверить это?

Что я хотел бы в конечном итоге сделать:

Мне было поручено создать dag, который создает резервную копию всего сервера postgres. Я хотел бы использовать pg_dump с помощью BashOperator. Я не могу этого сделать, если airflow не сможет подключиться к серверу postgresql.

Комментарии:

1. Зачем интерфейсу воздушного потока нужно подключаться к postgres через соединение, если вы используете pg_dump в оболочке через bashoperator? Я не специалист по воздушному потоку, но мне кажется, что это неправильно. Я согласен с тем, что вы должны иметь возможность подключаться к воздушному потоку и что ваша неспособность сделать это предполагает, что у вас также будут проблемы с оболочкой bash. Кроме того, не связано, это правильный порт для вашей базы данных postgres? Я спрашиваю только потому, что не верю, что это по умолчанию.

2. Все это хорошие вопросы. Команда pg_dump требует передачи параметров, таких как хост, порт и т. Д., И это не сработало. Именно тогда я пошел по пути воздушного потока, не имея возможности вообще видеть сервер. Порт правильный, я могу подключиться к нему с помощью различных других методов (pgadmin, bash, когда он не в контейнере и т. Д.), Это определенно не по умолчанию. Я не настраивал его, поэтому не знаю, почему они выбрали этот порт.

3. Это похоже на проблему с сетью. Можете ли вы подключить telnet или netcat к этому порту в оболочке вашей системы воздушного потока? Возможно, это скорее проблема с докером или k8s?

4. Это и моя нынешняя мысль, после того как я на ней выспался. Я проверю и сообщу/отредактирую. Я думаю, что это может быть способ настройки сети docker для этого контейнера. Я изучу различия. Спасибо.