问题标签 [cloud-sql-proxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 从 GKE 连接到 Google Cloud SQL 数据库的方式比较
我一直在探索安全连接到 Google Cloud SQL 数据库的方法。我们使用 Google Kubernetes Engine 来部署我们的 Java Spring 应用程序。
因此,https: //cloud.google.com/sql/docs/mysql/connect-kubernetes-engine 提到了从 kubernetes 连接到云 sql 的两种方法。我们不能使用私有 IP 方法,因为我们没有 VPC 原生集群。所以我们选择 Cloud SQL Proxy docker image 作为连接媒介。
然后,考虑到https://cloud.google.com/sql/docs/postgres/external-connection-methods,提到了以下选项:
我们不能采用公共 IP 方法,因为我们的 kubernetes pod IP 地址将不断变化。我们已经入围了 Cloud SQL 代理 docker 镜像。所以我们只剩下 JDBC 套接字库了。
因此,比较 Cloud SQL 代理和 JDBC 套接字库:
- Cloud SQL 代理将是我们的 kubernetes pod 中的一个 sidecar 容器以及我们的应用程序容器。应用程序容器将使用云 sql 凭据连接到“localhost:5432”(代理)。代理将获得访问云 sql 数据库的服务帐户。代理提供与云 sql 的安全连接。
- JDBC 套接字库还提供与云 sql 的安全连接。需要在应用程序中添加 Maven 依赖项,应用程序只需提供正确的数据库连接字符串。
从上面的比较来看,JDBC Socket Library 似乎是更好的方法,因为我们不需要 sidecar 容器 - 云 sql 代理。
在应用程序部署在 Google Kubernetes Engine 中的情况下,与 JDBC 套接字库相比,Cloud SQL 代理是否有任何优势?
google-cloud-sql - CloudSQL 代理间歇性拒绝连接
我在我的 nodejs API 服务上使用 Cloud SQL 代理边车。
它似乎工作得很好,除了我大约 1% 的 API 请求返回一个错误,表明数据库连接失败:
我的后端日志显示,当它尝试连接到数据库时,这是从我的 ORM 中抛出的。
Sidecar 日志没有显示任何内容,而有问题的 CloudSQL 实例也没有显示任何异常(17/4000 个连接,<1% CPU 使用率,1.5/3.5GiB 内存使用量,在 6 小时窗口内每个时间片 <100KiB 入口/出口)。
这可能是什么原因造成的?
编辑:附加信息:
我所有的 pod 都已经启动了好几个小时,重启了 0 次,所以间歇性故障不是短暂的启动故障。
日志显示,自 30 天前以来,这种情况一直在间歇性发生。
google-cloud-sql - 我可以使用 cloudsql-proxy 连接到运行 postgres 的自定义 VM 吗?
我有一个在 GCE 虚拟机上运行的自定义 Postgres 实例。我没有使用 CloudSQL。我想使用 cloudsql-proxy 提供的功能,但是当我指定我的自定义实例时,代理失败了。
似乎只有 CloudSQL 实例有效,我不明白这个限制。似乎代理应该在任何打开端口 5432 的 VM 上工作。
spring-boot - 带有 Spring Boot 的 Docker 映像无法连接到 CloudSQL
我想使用 Spring Boot 创建 Web 服务,将其添加到 docker 映像,连接到云 sql,然后在 Compute Engine 上运行。
我正在使用 docker compose 来组合项目的图像和云 sql 代理图像。但是,无论我给它什么 jdbc URL 都无法连接。现在,我正在本地尝试所有这些
我试过以下网址:
码头工人-compose.yml
应用程序属性:
google-cloud-platform - Cloud Composer 加载连接到 Cloud SQL 的 DAG 时出现问题
我制作了一个 DAG,它通过安装在 GCE 上的 Cloud SQL 代理连接到 Cloud SQL (MySQL)。它读取表列表并根据这些表生成许多任务。我已经成功地在我的机器上的本地 Airflow 中运行了这个 DAG,但是一旦我尝试将它部署为 Cloud Composer 实例,DAG 似乎无法正确加载到 Airflow Web UI 中。DAG 唯一可用的选项是刷新和删除,而不是所有其他选项。
DAG 由调度程序找到,我可以在日志中看到与 Cloud SQL 建立连接,检索表,但由于某种原因,Airflow Web UI 不喜欢它。日志中没有错误。
我知道 Composer 的架构,如下所示:https://cloud.google.com/composer/docs/concepts/overview,我想知道它是否与租户中的管理 Web UI 有关项目。然而,我试图短暂地打开防火墙到来自任何地方的所有连接,看看这是否是防火墙问题,但没有运气。所以我认为这可能是一个路由问题。
连接到 Cloud SQL 代理的代码如下所示:
我这样创建集群:
我试过启用 ip aliasing 并像这样指定 ip 范围:
但这并没有什么不同。
我还尝试添加这两个参数:
但随后环境创建失败了。
由于我的 DAG 在我的机器上的 Airflow 中完美运行,但在 Cloud Composer 中却没有,我正在撕扯我的头发。因此,任何想法将不胜感激。
postgresql - 无法使用 node-postgres 连接到 Cloud SQL
我一直在尝试使用该pg
模块连接到我的 Cloud SQL 实例,但到目前为止还没有成功。
我在网上看了很多,但对这个话题不太了解。我还想在某个时候在 Cloud Run 上部署我的 Express 应用程序并让它连接到我的 Cloud SQL 实例,但我不知道该怎么做。
这是我不明白的事情的清单,并希望简要解释一下:
- 什么是 Unix 套接字连接,为什么我应该在普通连接上使用它们?
- 什么是 Cloud SQL 代理?我需要使用它吗?如果是这样,为什么?
- 我需要做任何额外的工作才能从 Cloud Run 连接到我的 Cloud SQL 实例吗?
以下是我尝试使用该pg.Client
对象的所有连接对象和连接字符串:
- 第一个连接字符串:
postgresql+psycopg2://postgres:password@/cloudsql/myapp:us-central1:mydb?host=/var/lib/postgresql
- 第二个连接字符串:
postgresql://postgres:password@hostip:5432/myapp:us-central1:mydb
- 第三个连接字符串:
postgresql://postgres:password@hostip:5432/sarcdb
- 连接对象:
{ host: "/cloudsql/myapp:us-central1:mydb", username: "postgres", password: "password", database: "mydb" }
所有这些都给我一个Connection terminated unexpectedly
错误。
spring-boot - 从在 Google Cloud Run 上运行的 Spring Boot 应用程序连接到没有 GCP 启动器的 Cloudsql
我有一个在 Google Cloud Run 上运行的 Spring Boot 应用程序,我想连接到在 Google Cloudsql 上运行的 postgres 实例。我可以使用 Spring Cloud GCP 入门项目进行连接。
但我不想添加这个依赖。
通过使用 postgressql 插件并spring.datasource.url=***
在创建云代理后指定,我能够从本地应用程序连接。
但是,当我尝试在使用后从云运行中执行相同操作时,gcloud beta run deploy --add-cloudsql-instances <INSTANCE-ID>
它不起作用。根据https://cloud.google.com/run/docs/configuring/connect-cloudsql,--add-cloudsql-instances
自动创建云代理。那么为什么它不起作用呢?
谢谢。
kubernetes - Goroutine 在每个请求(sqlx)和代码后打开一个新的数据库连接
让我们考虑以下 goroutine:
和功能:
每次函数在股票代码上迭代时,它都会打开一个 cloudSQL 连接
我不知道为什么每次都会打开一个新连接,因为 sqlx.Connect 不在 for 循环中。
postgresql - 通过云sql代理连接postgres cloud sql
我在 Cloud Sql 上创建了一个单区 postgres db 实例,我正在尝试通过 cloud sql 代理进行连接。
这运行良好。但是当我在命令下运行时,
代理显示此错误:
为什么会这样?我是从我当地做的。