0

我正在尝试将 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 得到它的地址。

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

院长

4

1 回答 1

0

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

关闭内部防火墙sudo ufw disable(无论如何,在 ubuntu vm 上,查找您喜欢的 vm 的替代命令)。

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

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

在端口下,输入“1 - 65536”,在源下输入“0.0.0.0/0”。请注意,您刚刚所做的是将实例上的所有端口开放给来自任何地方的所有传入流量。您刚刚在 Internet 上放置了欢迎垫。我不建议长期这样做,这非常愚蠢。它适用于我建立的原则证明,这就是我的目标。我现在将寻找使其安全的方法。

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

于 2015-06-02T14:30:29.413 回答