尝试在 Google 计算引擎服务器上设置 ELK 堆栈时,我发现谷歌提供的“点击部署”解决方案已经过时了。
尽管如此,我还是尝试在 ES 上安装 Logstash 和 Kibana,结果发现无法连接到 Kibana(尽管我可以从 Google Compute 内部和外部连接到 elasticsearch 本身,没有任何问题)。
由于 ELK 堆栈已经在 AWS Ububnu 14.04 机器上运行,我想我将尝试从一台新机器开始,并在 Google Compute 上自行安装所有内容。
安装 ES 后,我再次发现无法从外部连接到 ES(在默认端口 9200 上,当然可以通过点击部署来实现)。
值得注意的是,点击部署服务器可能旨在供内部使用,因为它们具有临时 IP,而我使用静态 IP 定义了所有机器(围绕这个主题的测试也是死路一条)。
在所有情况下,我的服务器的结果都是相同的 - 我收到的错误是 ERR_CONNECTION_REFUSED。
这(令人惊讶地)让我认为我缺少一些防火墙定义。
- 我尝试打开另一个端口并在服务器端监听它
netcat -lp <some-port>
- 然后,我尝试从我的远程机器运行与在 elastic 上运行的相同的请求,但是在新的端口上:
curl -X GET 'http://<static-ip>:<some-port>'
- 请求顺利进行
- 我停止了 elasticsearch 并开始
netcat -lp 9200
curl -X GET 'http://<static-ip>:9200'
从移除机器中取出的物品就像魔法一样。即使打开了所有机器的相关端口并重复整个过程(使用所有不同的组合)后,我意识到我可能遗漏了其他东西。
尽管我尽了最大努力与谷歌实例进行比较,但还是没有找到其他出路。
我在这里遗漏了什么?ES 或 GCE 中还有其他连接定义吗?
答案1
出色地,孔奇有点正确。问题出在 ES 连接到环回设备,但设置network.bind_host
为_non_loopback_
只是解决方案的一半,我现在只能从外部访问 ES(当然)。
显然,有一个 GCE 插件可以解决这个问题,但只支持 ES 1.7 版,我想我得等它赶上来。其余的可以自己解决。