EC2应用程序不提供RDS的公共地址?

时间:2018-04-13 17:42:56

标签: java amazon-web-services spring-boot amazon-ec2

我正在尝试建立一个Spring启动EC2应用程序来访问一个单独的RDS(mysql)数据库。我创建了数据库ok,并且能够从mysqlworkbench和我在本地计算机上运行的spring boot app访问它。但是,当我将spring boot应用程序部署到EC2时,它无法连接到数据库,请参阅下面的错误日志。

是否有一些我省略的配置允许应用程序与数据库通信? 或者,我如何调试正在发生的事情,有没有办法可以远程调试应用程序?

Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_161]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_161]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_161]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_161]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_161]
    at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_161]
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211) ~[mysql-connector-java-5.1.45.jar!/:5.1.45]
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300) ~[mysql-connector-java-5.1.45.jar!/:5.1.45]
    ... 67 common frames omitted

2018-04-13 17:10:49.481  WARN 28264 --- [           main] o.h.e.j.e.i.JdbcEnvironmentInitiator     : HHH000342: Could not obtain connection to query metadata : Could not create connection to database server. Attempted reconnect 3 times. Giving up.
2018-04-13 17:10:49.498  INFO 28264 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect

1 个答案:

答案 0 :(得分:0)

Caused by: java.net.SocketTimeoutException: connect timed out

两个问题可能导致这种情况:

1)RDS附加的安全组入站规则不接受您的EC2实例请求。确保RDS附加安全组 - &gt; &#34;入站&#34;规则允许从 EC2实例访问 RDS端口

2)RDS本身已经关闭,我怀疑在这种情况下不会。

注意::不要打开入站 - &gt; &#34;端口&#34;整个世界(除了必要的情况)。限制已知IP(或)网络的端口流量。