首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring连接到RDS时通过VPC窥视

问Spring连接到RDS时通过VPC窥视
EN

Stack Overflow用户
提问于 2020-02-27 22:16:26
回答 1查看 1K关注 0票数 0

我正在获取UnknownHostException,同时尝试将Spring 应用程序部署到AWS 中的K8s集群中。

设想情况:

  • I在VPC (A)上运行着AWS集群,RDS在VPC (B)上运行。
    • I在两个VPC之间创建了VPC对等连接,启用了DNS解析和配置路由表,
    • 还创建了一个K8s服务映射外部RDS端点。

如果我试图从EKS集群连接到RDS实例,请使用如下所示的busybox:

代码语言:javascript
复制
$ kubectl run -i --tty --rm debug --image=busybox --restart=Never -- sh

使用以下任何选项,它可以工作

代码语言:javascript
复制
/ # nc mysql-service 3306

/ # nc mysql-service.default.svc.cluster.local 3306

/ # nc xxxxxxx.xxxxxxx.us-east-1.rds.amazonaws.com 3306

但是,当我部署Spring应用程序时,它不起作用。

代码语言:javascript
复制
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:54)
at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:93)
at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:133)
at com.mysql.cj.core.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:149)
at com.mysql.cj.mysqla.io.MysqlaSocketConnection.connect(MysqlaSocketConnection.java:83)
at com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:144)
at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:1676)
... 58 common frames omitted
Caused by: java.net.UnknownHostException: mysql-service

有什么建议吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-28 11:24:09

我想出来了!整个VPC窥视配置工作正常。K8s外部服务也在工作。问题是在我的Spring应用程序中。

我已经用导致错误的环境变量配置了数据源URL。出于某种原因,Spring没有解析配置了环境变量的主机。

我刚刚将spring配置更改为:

代码语言:javascript
复制
spring:
    datasource:
        url: jdbc:mysql://${DB_HOST}:3306/db_name

至:

代码语言:javascript
复制
spring:
    datasource:
        url: jdbc:mysql://mysql-service:3306/db_name

现在起作用了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60442552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档