【问题标题】:Airflow - Cannot connect to external postgres server气流 - 无法连接到外部 postgres 服务器
【发布时间】:2023-02-19 15:25:51
【问题描述】:

我有一个使用标准 Docker 参数运行的 Airflow 工作实例。

我试图在同一网络上联系一个单独的 postgresql 服务器(如,不是气流使用的那个服务器),而不是使用 docker。

postgresql 服务器运行于:

  • 主机:192.168.4.4
  • 端口:30991
  • 用户:读取用户

我在 airflow -> admin -> connections 下添加了一个连接,如下所示:

Airflow Connection Config

我努力了:

  • 容器内的 airflow connections get 命令确实返回连接配置。
  • 来自 airflow 容器(在 bash 中)的 pg_isready 命令以及各种 psql 命令不起作用。在容器外,在主机上,它们可以工作。
  • 我尝试在 airflow 容器中使用 ping,但由于 docker 安装很少,它似乎没有安装 ping。还有其他方法可以测试吗?

我最终想做的是:

我的任务是创建一个 dag 来创建整个 postgres 服务器的备份。我想通过 BashOperator 使用 pg_dump。如果气流无法连接到 postgresql 服务器,我将无法执行此操作。

【问题讨论】:

  • 如果您通过 bashoperator 在 shell 上使用 pg_dump,为什么气流接口需要通过连接连接到 postgres?我不是气流专家,但感觉不对。我同意您应该能够通过气流连接进行连接,而您无法这样做表明您在 bash shell 中也会遇到问题。另外,无关紧要,那是您的 postgres 数据库的正确端口吗?我问只是因为我不相信它是默认的。
  • 这些都是很好的问题。 pg_dump 命令需要传递主机、端口等参数,但没有用。那是当我走下气流路径时根本看不到服务器。端口是正确的,我可以使用各种其他方法(pgadmin、不在容器中时的 bash 等)连接到它,这绝对不是默认的。我没有设置它所以我不知道他们为什么选择这个端口。
  • 听起来像是网络问题。您是否能够通过 telnet 或 netcat 连接到气流系统外壳上的该端口?也许这更多是 docker 或 k8s 问题?
  • 这也是我目前的想法,在睡过之后。我将测试并报告回来/编辑。我认为这可能是为此容器配置 docker 网络的方式。我将调查差异。谢谢。

标签: postgresql docker airflow


【解决方案1】:

尽管我的目标不同,但我有类似的问题。我在 K8s 集群(命名空间气流)上设置了 Airflow v2.5.1,并尝试建立从 Airflow Admin UI 到 airflow-postgres-postgresql 主机和端口 5432 的连接。我能够从外部连接到这个 postgres 服务器暂时将 K8s 服务中的端口类型从 ClusterIP 更改为 NodePort for airflow-postgres-postgresql 并创建了一个新数据库 - 例如数据库。后来改回服务中的ClusterIP。 不确定问题是否是由于容器/服务端口配置引起的。感谢这里的任何帮助。

【讨论】:

    猜你喜欢
    • 2020-05-08
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2017-03-24
    • 2015-06-20
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多