使用 Cloud Proxy 的 Google Cloud Composer 和 MS SQL
Posted
技术标签:
【中文标题】使用 Cloud Proxy 的 Google Cloud Composer 和 MS SQL【英文标题】:Google Cloud Composer and MS SQL using Cloud Proxy 【发布时间】:2020-11-28 02:46:09 【问题描述】:我正在使用 GCP(Composer)上的 Airflow 构建 Cloud SQL(MS SQL Server)到 BigQuery 的集成。我在 GKE 集群中设置了一个云 SQL 代理,运行良好,没有错误:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: cloud-sql-proxy
name: cloud-sql-proxy
namespace: cloud-sql-to-bq
spec:
replicas: 1
selector:
matchLabels:
run: cloud-sql-proxy
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
run: cloud-sql-proxy
spec:
containers:
- command:
- /cloud_sql_proxy
- -instances=[INSTANCE-NAME]=tcp:0.0.0.0:1433
image: b.gcr.io/cloudsql-docker/gce-proxy:latest
imagePullPolicy: IfNotPresent
name: airflow-sqlproxy
ports:
- containerPort: 1433
protocol: TCP
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
nodeSelector:
cloud.google.com/gke-nodepool: default-pool
restartPolicy: Always
我的 DAG:
dag = DAG('mssql-export-demo', catchup=False, default_args=default_args)
cloud_storage_bucket_name = 'mssql-export-test'
export_customers = MsSqlToGoogleCloudStorageOperator(
task_id='export_analysis',
sql='SELECT * FROM vwAnalysis;',
bucket=cloud_storage_bucket_name,
filename='data/customers/export.json',
schema_filename='schemas/export.json',
mssql_conn_id='cloud_sql_proxy_conn',
dag=dag
)
我还在 Airflow 中创建了一个指向 cloud_sql_proxy_conn 的连接。 当我运行 DAG 时,我收到以下错误:
[2020-11-28 01:59:20,555] taskinstance.py:1153 ERROR - Connection to the database failed for an unknown reason.
Traceback (most recent call last)
File "src/pymssql.pyx", line 636, in pymssql.connec
File "src/_mssql.pyx", line 1964, in _mssql.connec
File "src/_mssql.pyx", line 683, in _mssql.MSSQLConnection.__init_
_mssql.MSSQLDriverException: Connection to the database failed for an unknown reason
没有其他错误消息,因此调试起来非常困难。有没有人在 Cloud SQL 和 Composer 上使用 MS SQL 的经验来帮助我解决这个问题?
【问题讨论】:
【参考方案1】:Airflow 现在提供 CloudSqlInstanceExportOperator,这意味着无需在 GKE 中设置云 SQL 代理。
【讨论】:
以上是关于使用 Cloud Proxy 的 Google Cloud Composer 和 MS SQL的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中运行 Google Cloud Function 中的子进程
在 Google Cloud 函数上部署 python C 包时出错
在本地使用 cloud_sql_proxy 获取 notAuthorized 错误
Google Cloud、Kubernetes 和 Cloud SQL 代理:默认 Compute Engine 服务帐户问题