我目前正在使用来自bitnami (这里)的头盔图表,并试图在GCP中使用Cloud实例。不管我构建了什么连接字符串,我都会得到连接到数据库的各种连接错误。这将导致最初的pod启动失败,并且永远不会完全初始化。
看起来spring-cloud-dataflow并不是与spring-cloud-gcp捆绑在一起的,因此不能通过实例名进行配置,所以我假设我们需要使用私有IP地址,它每次都会失败。
对于下面的测试,创建了一个实例,并创建了一个实例。
图表配置1用于MySQL实例:(为简洁起见省略用户名和密码)
mariadb.enabled=false
externalDatabase.dataflow.url=jdbc:mysql://<privateip>/dataflow?useSSL=false
externalDatabase.dataflow.username=root
externalDatabase.driver=org.mariadb.jdbc.Driver结果(使用端口0或端口3306):
java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=<private IP>)(port=0)(type=master) : Could not connect to <private IP>:0 : unexpected end of stream, read 0 bytes from 4 (socket was closed by server)
Caused by: java.io.EOFException: unexpected end of stream, read 0 bytes from 4 (socket was closed by server)图表配置2 (postgresql实例):
mariadb.enabled=false
externalDatabase.dataflow.url=jdbc:postgresql://<Private IP>:5432/
externalDatabase.dataflow.username=postgres
externalDatabase.driver=org.postgresql.Driver在以下方面的成果:
org.postgresql.util.PSQLException: The connection attempt failed.
Caused by: java.net.SocketException: Connection reset我已经验证了我可以通过jdbc (针对postgresql)和MySQL工作台通过jdbc访问数据库。
除非spring-cloud-dataflow与spring-cloud-gcp一起发货,否则这将永远行不通吗?
发布于 2021-11-17 16:25:33
您需要使用云SQL代理或云SQL Java连接器。
这里有几个答案说明了如何做到这一点:
此外,如果Cloud实例仅为私有IP,则需要确保数据流部署与Cloud实例位于同一个VPC中。对于公共IP实例,单独使用Java连接器或代理应该可以。
https://stackoverflow.com/questions/69998591
复制相似问题