从java getCanonicalHostName方法在AWS上使用公共IP

时间:2015-05-29 14:41:47

标签: java amazon-web-services apache-zeppelin

我尝试将AWS用作可扩展的分析工具。我使用apache zeppelin作为Spark群集的交互式shell并尝试使用wisp进行绘图。这引起了一个问题,因为wisp中的绘图方法是基于我认为的码头服务器启动Web应用程序。这在我的本地计算机上运行良好,但在AWS上它不起作用,因为它获取私有IP地址而不是公共IP地址。

在wisp中,它使用java.net.InetAddress.getLocalHost.getCanonicalHostName 检索机器的IP地址。这始终返回专用FQDN地址。我怎样才能让java函数返回AWS提供的公共IP地址或FQDN,而不是每当我启动集群并重建时都会硬编码?

我尝试更改/ etc / hosts和/ etc / hostname但两者都没有效果。我真的不知道java.net.InetAddress.getLocalHost.getCanonicalHostName的位置 正在从中得到它的地址。

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

迪安

1 个答案:

答案 0 :(得分:0)

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

使用sudo ufw disable关闭内部防火墙(无论如何,在ubuntu vm上,查找替代命令以了解您的vm风格)。

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

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

在端口下,输入' 1 - 65536'并在源头放入' 0.0.0.0/0'。请注意,您刚刚完成的操作是打开实例上的所有端口,以便来自所有地方的所有传入流量。你刚刚在互联网上放了一个欢迎垫。我不建议长期这样做,这是非常愚蠢的。它起到了我的原则证明的作用,这就是我的目标。我现在正在寻找使其安全的方法。

感谢大家的克制,不要嘲笑我是个白痴。