我正在尝试在我的 mapR 发行的 redhat 虚拟机上设置 elasticsearch。它预装了 mapR 生态系统。我通过 yum 安装了 elasticsearch。
我能够从虚拟机内部听到它:
[root@maprdemo elasticsearch]# curl -XGET 'localhost:8080/?pretty'
{
"name" : "QYCiQJi",
"cluster_name" : "sdc-search",
"cluster_uuid" : "bMSLPA3uR5WKbtwKP0Sl7g",
"version" : {
"number" : "5.0.1",
"build_hash" : "080bb47",
"build_date" : "2016-11-11T22:08:49.812Z",
"build_snapshot" : false,
"lucene_version" : "6.2.1"
},
"tagline" : "You Know, for Search"
}
...但不能从机器外部访问。但我可以从虚拟机外部访问它正在广播的其他端口,例如 HUE UI,因此我认为存在一些防火墙问题。
我没有定义 iptables 规则:
[root@maprdemo elasticsearch]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我在调试时注意到了一些事情:
[root@maprdemo elasticsearch]# netstat -anp | grep 8080
tcp 0 0 :::18080 :::* LISTEN 16987/java
tcp 0 0 ::ffff:127.0.0.1:8080 :::* LISTEN 31852/java
//A Port im able to access from outside the machine fine
[root@maprdemo elasticsearch]# netstat -anp | grep 8443
tcp 0 0 :::8443 :::* LISTEN 13569/java
检查 netstat 时,我可以看到机器外部的端口 (8443) 有点不同。
我只是不确定在哪里可以调试。如果有人能指出解决这个问题的方向,那就太好了。我只是一名开发人员,我对网络的了解有限。
答案1
您只能看到使用命令的默认 iptables 过滤器,因此仍有可能存在问题。请查看此线程中针对 iptables 选项的措辞非常恰当的回复(快速尝试“iptables -S”,我相信它应该会向您展示所有内容):https://unix.stackexchange.com/questions/205867/viewing-all-iptables-rules
如果没有 iptables,selinux 有时会引起麻烦,因此在测试时禁用它可能是一个选项(“setenforce 0”)。您可以使用“sestatus”验证当前状态。要再次启用,请使用“setenforce 1”,否则重新启动将重新启用。
最后但并非最不重要的一点是,当我输入这些内容时,我意识到这可能是答案,验证服务实际监听的 IP。我不熟悉该应用程序,但一般来说,您实际上可以让服务只在给定端口上监听本地连接,因此这可能只是您需要的配置更改。事实上,在重新阅读您的帖子时,您发布的端口 8080 的 netstat 输出中存在环回地址 (127.0.0.1),这让我怀疑这是否是正在发生的事情。