问题标签 [google-cloud-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.

0 投票
1 回答
1021 浏览

google-cloud-platform - 云 sql 代理在 docker 容器中不起作用

我的应用程序在 docker 容器上运行并部署了 google 计算组并启用了自动缩放。我面临的问题是从自动缩放的计算实例连接 mysql 实例,但它无法正常工作。

Dockerfile

当我运行我的容器时,最后一行./cloud_sql_proxy -dir=/cloudsql -instances=<connectionname>=tcp:0.0.0.0:3306 -credential_file=file.json &没有被执行。

如果我./cloud_sql_proxy -dir=/cloudsql -instances=<connectionname>=tcp:0.0.0.0:3306 -credential_file=file.json &在容器内运行它(通过 docker 命令进入容器)它正在工作,当我再次关闭终端时它停止工作。

即使我尝试在后台运行,但没有运气。

有人知道吗?

0 投票
1 回答
3509 浏览

java - Spring boot 和 GCP - 使用 spring-cloud-gcp-starter-sql-postgresql 连接 Cloud SQL 实例尝试 SSL 并且延迟启动

我有一个 Spring boot 项目,它应该与 Cloud SQL 的实例连接,spring-cloud-gcp-starter-sql-postgresql以避免在项目中显式使用 IP。

到目前为止,它连接良好,但延迟了很多(大约 30 秒开始),因为它尝试通过 SSL 套接字连接,经过多次尝试,它连接了。

在日志中有一行说:

据我所知,该参数useSSL=false不适用于 postgresql。正确的是,ssl=false但是当我尝试用 application.yml 覆盖 JDBC Url 时,它会打印以下日志:

我怀疑延迟是因为 SSL 连接。所以我有两个问题:

  1. 如何避免使用 SSL 连接?由于我没有明确设置 JDBC URL,因此无法ssl=false在参数中使用 。
  2. 我怀疑这是因为未设置 SSL 客户端证书而延迟。如果是这种情况,我该如何设置?我已经有了 .pem 但我不知道如何实现它

我添加了我application.yml的配置和提到的日志:

  • 应用程序.yml

凭据在调用服务帐户 json 的环境变量“GOOGLE_APPLICATION_CREDENTIALS”中设置

  • 日志:

此外,以防万一它有帮助,我添加我的pom.xml

0 投票
1 回答
460 浏览

sql-server - 尝试通过代理使用 SSMS 访问 Cloud SQL 上的 SQL Server 实例时如何修复连接错误

我正在尝试做的事情

我正在尝试使用 SQL Server Management Studio (SSMS) 在 Cloud SQL (GCP) 上管理我的 SQL Server 实例。

我做了什么

我按照 Google Cloud 文档(此处)中的步骤操作。
我按照步骤 1-5(下面的精简版):

  1. 安装 Cloud SQL
  2. gcloud init
  3. 运行gcloud auth login(PS 我是项目级别的所有者)
  4. 下载并安装 Google Cloud SQL 代理(按照此处的说明)
    1. 启用 Cloud SQL 管理 API
    2. 安装代理客户端(对我来说是 Windows PC,x64 - 将文件重命名为cloud_sql_proxy.exe
    3. 确定代理身份验证方法(根据此处的文档)。我选择了 Cloud SDK,因为无论如何我都需要在步骤 1 中下载它
    4. 跳过(不使用服务帐户身份验证)
    5. 确定代理实例规范(根据此处的文档)。使用代理调用方法上指定的实例。
      • 我只有私有 IP,所以默认情况下它会选择正确的 IP(根据此处的文档)
    6. 与第 5 步(如下)相同 5 。启动代理。我运行(在 cmd 中)./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:1433(显然用<INSTANCE_CONNECTION_NAME>我的实例名称替换了该部分。

在这一点上,一切似乎都在工作:

现在按照此处的说明,我尝试使用 SSMS(127.0.0.1SQL Server 身份验证、我sqlserver超级棒密码)、Connect 连接到数据库实例。

我的问题

我现在在 Cloud SDK 窗口中收到以下错误消息:

(它重复了几次)

在 SSMS 中,我收到以下提示:

SSMS 错误信息

我的问题

如何解决此问题并正确连接到我的数据库实例?

0 投票
1 回答
227 浏览

django - 使用云运行在 django 中通过云代理连接到云 sql 实例时出错

我正在尝试为云运行中的 django 项目连接到 cloud-sql,该项目正在通过生产中的云运行进行部署。然而 Django 给我一个错误说

我在settings.py中的数据库设置如下

我看到一种可能的解决方案是将云代理连接重定向到 127.0.0.1:3306 但为此我必须在 docker 容器上安装云代理并进行身份验证,对吗?这不是云运行为我们提供的没有任何麻烦的东西吗?有没有在容器上安装云代理和重定向的情况下连接到云 sql 实例?

0 投票
1 回答
142 浏览

android - 通过 JDBC 使用 Compute Engine 连接到 Cloud SQL

我无法通过 Compute Engine 连接到我的数据库。

到目前为止我做过的事情:

  1. 设置我的计算引擎
  2. 将我的 Compute Engine 连接到我的 Cloud SQL
  3. 在我的 Compute Engine 上安装并运行 Cloud Proxy
  4. 在我的 libs 文件夹中包含 JDBC Jar 文件
  5. 创建了 JDBC 连接字符串

"jdbc:mysql:///?cloudSqlInstance=&socketFactory=com.google.cloud.sql.mysql.SocketFactory;user=&password=";

  1. 添加了对我的 Gradle 文件的依赖项

-实现文件树(目录:'libs',包括:['*.jar'])
-实现'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.1.0'

这是堆栈跟踪:

W/System.err:java.sql.SQLNonTransientConnectionException:无法连接到 localhost:3,306 上的 MySQL 服务器。W/System.err:确保在您尝试连接的机器/端口上运行着 MySQL 服务器,并且运行该软件的机器能够连接到该主机/端口(即没有防火墙)。还要确保没有使用 --skip-networking 标志启动服务器。在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) 在 com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) 在 com.mysql.cj.jdbc .exceptions.SQLError.createSQLException(SQLError.java:89) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) W/System.err: at com.mysql.cj.jdbc.exceptions .SQLError.createSQLException(SQLError.java:73) 在 com.mysql.cj.jdbc.ConnectionImpl。ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) W/System.err: at java.lang.Thread.run(Thread.java:764) 原因:java.lang.NullPointerException: 尝试调用虚拟方法 'com. mysql.cj.protocol.SocketConnection com.mysql.cj.protocol.a.NativeProtocol.getSocketConnection()' 在 com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:980) 的空对象引用上。 mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826) W/System.err: at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456) ... 12 更多 I/Choreographer: 跳过58帧!应用程序可能在其主线程上做了太多工作。I/zygote:做全码缓存收集,码=123KB,数据=111KB 码缓存收集后,码=117KB,数据=78KB lang.Thread.run(Thread.java:764) 引起:java.lang.NullPointerException:尝试调用虚拟方法'com.mysql.cj.protocol.SocketConnection com.mysql.cj.protocol.a.NativeProtocol.getSocketConnection( )' 在 com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:980) 处的空对象引用上 com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826) W/System.err : at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456) ... 12 更多 I/Choreographer:跳过 58 帧!应用程序可能在其主线程上做了太多工作。I/zygote:做全码缓存收集,码=123KB,数据=111KB 码缓存收集后,码=117KB,数据=78KB lang.Thread.run(Thread.java:764) 引起:java.lang.NullPointerException:尝试调用虚拟方法'com.mysql.cj.protocol.SocketConnection com.mysql.cj.protocol.a.NativeProtocol.getSocketConnection( )' 在 com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:980) 处的空对象引用上 com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:826) W/System.err : at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456) ... 12 更多 I/Choreographer:跳过 58 帧!应用程序可能在其主线程上做了太多工作。I/zygote:做全码缓存收集,码=123KB,数据=111KB 码缓存收集后,码=117KB,数据=78KB mysql.cj.protocol.a.NativeProtocol.getSocketConnection()' 在 com.mysql.cj.jdbc.ConnectionImpl.createNewIO 的 com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:980) 的空对象引用上(ConnectionImpl.java:826) W/System.err: at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456) ... 12 更多 I/Choreographer:跳过 58 帧!应用程序可能在其主线程上做了太多工作。I/zygote:做全码缓存收集,码=123KB,数据=111KB 码缓存收集后,码=117KB,数据=78KB mysql.cj.protocol.a.NativeProtocol.getSocketConnection()' 在 com.mysql.cj.jdbc.ConnectionImpl.createNewIO 的 com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:980) 的空对象引用上(ConnectionImpl.java:826) W/System.err: at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456) ... 12 更多 I/Choreographer:跳过 58 帧!应用程序可能在其主线程上做了太多工作。I/zygote:做全码缓存收集,码=123KB,数据=111KB 码缓存收集后,码=117KB,数据=78KB java:456) ... 12 更多 I/Choreographer:跳过 58 帧!应用程序可能在其主线程上做了太多工作。I/zygote:做全码缓存收集,码=123KB,数据=111KB 码缓存收集后,码=117KB,数据=78KB java:456) ... 12 更多 I/Choreographer:跳过 58 帧!应用程序可能在其主线程上做了太多工作。I/zygote:做全码缓存收集,码=123KB,数据=111KB 码缓存收集后,码=117KB,数据=78KB

0 投票
1 回答
632 浏览

kubernetes - 用作 Sidecar 时,SQL Cloud Proxy 不断重启连接

当我将 SQL 代理用作我在 Kubernetes 集群上部署的 sidecar 时,我遇到了一个奇怪的问题。总而言之,它会不断关闭客户端的连接,然后立即打开一个新连接,而不会导致任何致命异常!

我的部署

我有一个具有 2 个图像的部署对象,(1) Spring Boot App和 (2) SQL Cloud Proxy。我使用 SQL 代理从不同的 GCP 项目访问数据库(我有我的理由)。此部署中对公开服务的所有请求都可以正常工作,但我在日志中不断收到错误消息,指出正在从 SQL 代理关闭连接并重新建立! 在此处输入图像描述

我的部署 YAML 文件

我在找什么?

我正在尝试找到一种方法来解决每天数千次重新启动连接的问题!如果我可以强制代理不重置连接并使其保持活动状态,我做了一些研究,但我一无所获!

我会很感激你们的帮助!

0 投票
1 回答
92 浏览

postgresql - GCP IAM 访问 GCP 中的 postgres SQL

我正在尝试使用带有 IAM 用户的 pgadmin 工具连接到 GCP 云 sql(postgres),但无法登录。我已通过 Cloud sql 代理连接,但在尝试登录时验证失败。

除了以下消息之外,GCP 日志上没有太多内容:2021-12-29 11:11:04.854 UTC [1723]:[2-1] db=postgres,user= @ .com 详细信息:调用者没有权限连接匹配 pg_hba .conf 第 20 行:“本地所有 +cloudsqliamuser cloudsql-iam-user”

将这组角色添加到 IAM 用户

将这组角色添加到 IAM 用户

这是成功运行云 sql 代理:

这是成功运行云 sql 代理:

这是pg连接终端错误

在此处输入图像描述

在整个设置中,我遵循了 GCP 的这份文档:https ://cloud.google.com/sql/docs/postgres/authentication