#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 для этого контейнера. Я изучу различия. Спасибо.