部署在EC2的Tomcat Web应用无法连接Postgres RDS实例问题咨询
首先明确:不需要在EC2上安装Postgres
你的Java应用基于JDBC驱动连接RDS,只要WAR包内已经包含Postgres JDBC驱动(本地环境能正常运行说明依赖配置正确),就不需要在EC2上额外安装Postgres服务端或客户端。只有当你需要在EC2命令行直接访问RDS排错时,才需要安装psql客户端,不影响应用本身的连接逻辑。
你当前配置的错误点主要在安全组规则:
- 你在安全组入站规则中添加的是EC2的公网IP,但同一VPC下EC2访问RDS默认走私有内网链路,源IP是EC2的私有IP,公网IP规则不会匹配内网流量,导致请求被安全组拦截。
- 正确的安全组配置方式:给RDS关联的安全组添加入站规则,端口5432,源地址填EC2实例所在安全组的ID,或者直接填EC2的私有IP地址,这样同一VPC内的EC2内网访问RDS的流量才会被放行。
- 额外优化建议:不要把EC2和RDS绑定同一个安全组,建议拆分两个独立安全组,分别配置各自的出入站规则,降低配置混乱的概率。
其他需要排查的点:
- 检查应用内的数据库连接地址,是否填写的是RDS的内网端点,不要填公网端点,同一VPC下用内网端点访问优先级更高、更稳定。
- 确认安全组的出站规则是否默认全开,如果你修改过出站规则,需要确保允许EC2的5432端口出站到RDS所属的IP段。
- 排查网络连通性可以先在EC2上执行
telnet <RDS内网端点> 5432,如果能连通说明网络没问题,问题出在应用配置(比如用户名、密码、数据库名写错),如果连不通就是网络/安全组配置问题。
内容的提问来源于stack exchange,提问作者kodazys
相关产品推荐
相关产品推荐

