Cloud Composer 工作器无法连接到外部数据库

Posted

技术标签:

【中文标题】Cloud Composer 工作器无法连接到外部数据库【英文标题】:Cloud Composer worker fails to connect to external database 【发布时间】:2020-10-29 20:53:33 【问题描述】:

我正在尝试使用我现有的云编写器环境并连接到远程 SQL 数据库 (Azure SQL)。几天来我一直在努力解决这个问题,我希望有人能指出我的问题所在。

按照找到的文档here,我启动了 GKE 服务和 SQL 代理工作负载。然后,我使用服务 azure-sqlproxy-service 的全名创建了一个新的气流连接,如下所示:

我测试运行我的一个 DAG 任务并获得以下结果:

无法连接:Adaptive Server 不可用或不存在

不确定这个问题我决定直接远程访问其中一名工作人员,将远程数据库防火墙上的 IP 列入白名单,然后尝试连接到服务器。在没有安装命令行 MSSQL 客户端的情况下,我在 worker 上启动 python 并尝试使用以下命令连接到数据库:

connection = pymssql.connect(host='database.url.net',user='sa',password='password',database='database')

从中我得到与上面相同的错误,服务和远程 IP 作为主机输入。即使忽略服务/代理,这个气流工作者也不应该能够访问远程数据库吗?我可以 ping 网站,但检查数据库的远程日志没有显示任何失败的登录。由于出现了一般性错误,而且关于下一步该做什么的想法不多,我被困住了。一些谷歌结果建议切换库,但我不太确定在气流中如何,或者我什至需要。

接下来我可以采取哪些故障排除步骤来让至少一个工作人员与数据库通信,然后再继续使用服务/代理?

【问题讨论】:

您是否尝试为您的本地 SQL 服务器打开 TCP/IP 访问权限? ***.com/questions/19348255. 是的,用nmap确认我可以看到服务器和端口是开放的:1433/tcp open ms-sql-s 【参考方案1】:

经过一番痛苦,我发现 Cloud composer 使用的是 ubuntu 1804,它目前破坏了 pymssql,如下所示:

https://github.com/pymssql/pymssql/issues/687

我尝试降级到 2.1.4 没有成功。需要完成此操作,我已按照本文中概述的说明使用 pyodbc。

Google Composer- How do I install Microsoft SQL Server ODBC drivers on environments

【讨论】:

以上是关于Cloud Composer 工作器无法连接到外部数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到本地 Google Cloud Datastore 模拟器

如果不在防火墙或代理之后,Composer 将无法通过 http 连接到 packagegist 的一些原因是啥?

如何连接到 Google Cloud SQL PostgresQL

djongo,无法连接到 cloud.mongodb.com 上的远程数据库

无法使用 Java SocketFactory 库连接到 Cloud SQL

Cloud Foundry Turbine Stream 无法连接到 Command Metric Stream