Jasperreports服务器可以与实际的EC2一起使用,但不能从同一个AMI

时间:2017-10-19 18:27:10

标签: amazon-web-services amazon-ec2 ssh jasperserver ami


我有一个EC2-1,其上安装了jasperreports服务器,我可以通过http://IP_ADDRESS1:8081/jasperserver轻松访问它。
现在我拍摄了EC2-1的照片。一旦AMI可用,我就推出了新的EC2-2。像往常一样,我使用SSH登录EC2,并能够运行脚本./ctrlscript.sh start来访问应用程序。但当我尝试登录http://IP_ADDRESS2:8081/jasperserver并运行报告时,我在jasperserver.log中收到以下错误而无法获取报告

300 ERROR WebServiceConnector,pool-4-thread-1:139 - Communication error java.net.ConnectException: Connection timed out
320 ERROR AsyncJasperPrintAccessor,pool-4-thread-1:321 - Error during report execution

任何人都可以对我对**EC2 vs AMI**的理解给出一些说明。根据我的理解,EC2-1EC2-2必须相同。但在这种情况下,当我仍然可以在EC2-2中运行报告时,我无法在EC2-1中运行报告。

如果我在这里遗漏了什么,请指导我。谢谢大家。

1 个答案:

答案 0 :(得分:0)

从原始EC2实例的AMI启动的新EC2实例应该包括您在源实例上所做的任何配置更改,这是正确的。

根据您的描述,听起来好像关于新EC2实例的一切都很好:您可以通过SSH连接到它,您可以启动JasperReports Server,然后您就可以登录Web界面了。只有在您尝试运行报表时才会出现问题 - 这是一个重要的细节,因为运行报表会对外部数据源产生外部依赖。

测试数据源连接

在JasperReports Server Web UI中,找到您的数据源并转到其编辑页面以测试连接。对于大多数数据源,您应该能够在编辑页面的底部找到它。例如,在JDBC UI中:

JasperReports Server Edit Page for Data Sources, with Test Connection button highlighted in red.

尝试在新实例上测试来自此页面的Jasper与数据源的连接。

验证网络规则

这对我来说就像一个网络错误,特别是在新的EC2 JasperReports实例和报告的数据源之间。此EC2实例外部可能存在一个网络规则,该规则存在于您的原始实例中,但未针对新实例进行更新。例如,如果您有一个安全组允许从原始实例的CIDR到数据源的入站流量,并且没有为新实例的CIDR更新它,您会看到这些排序当JasperReports Server尝试连接到数据源时超时。

如果测试与上述数据源的连接失败,请检查security groups或VPC network ACLs等资源上的外部网络规则,并验证原始EC2实例的所有规则是否已更新为对您的新EC2实例有效。