2015-05-29 56 views
0

我试图使用AWS作为可伸缩的分析工具。我使用apache zeppelin作为Spark群集的交互式外壳,并尝试使用一缕阴谋。这是一个问题,因为一缕阴谋的绘图方法是根据我认为是码头服务器的情况启动一个Web应用程序。这在我的本地机器上运行良好,但在AWS上它不起作用,因为它提取私有IP地址而不是公用的IP地址。在AWS上使用来自java的公共IP getCanonicalHostName方法

在一缕之内,它使用java.net.InetAddress.getLocalHost.getCanonicalHostName 来检索机器的IP地址。这总是返回私人FQDN地址。如何让java函数返回公开IP地址或AWS提供的FQDN,而无需在每次启动集群并重建时都进行硬编码?

我试着改变/ etc/hosts和/ etc/hostname,但都没有效果。我不知道java.net.InetAddress.getLocalHost.getCanonicalHostName 从哪里得到它的地址。

任何帮助或建议非常感谢。

院长

回答

0

我是个白痴。这是一个端口问题。看起来,尽管显示私有IP,它仍然可以在公共IP上使用。

关掉内部防火墙sudo ufw disable(在ubuntu vm上,无论如何,请查找替代命令为你的味道)。

接下来,转到您的帐户的AWS EC2管理页面,然后单击您实例的安全组。

在安全组页面上,编辑入站规则并添加自定义tcp规则。

在端口下,放入'1 - 65536',放在源'0.0.0.0/0'下。请注意,您刚刚完成的操作是打开您实例上的所有端口,以接收来自任何地方的所有传入流量。你刚刚放下了一个欢迎垫到互联网。我不建议长期这样做,这是非常愚蠢的。它为我设立的原则证明起到了作用,而这正是我所要做的。我现在正在研究如何确保安全。

感谢大家的克制,不嘲笑我做白痴。