5

我正在尝试ElasticSearch从云外部访问我正在运行的 EC2 实例。我目前向公众开放了 SSH/HTTP/HTTPS 以用于入站流量,并全部开放用于出站流量。我也为我的 EC2 实例设置了一个公共 IP。

默认情况下 ElasticSearch 在端口上9200。我不确定我elasticsearch.yml是否正确配置了我的文件,但它基本上具有默认配置,我只是将其更改cluster.name为其他内容。

当我在9200本地浏览器中输入带有端口的公共 IP 或在本地执行telnet {public-ip} 9200时,没有响应。当我通过 SSH 连接到我的 EC2 实例时。我可以执行一个curl localhost:9200并且我从 elasticsearch 得到正确的响应

如何ElasticSearch从云外部连接到我在 EC2 实例上运行的?

我为我的安全组添加了一个自定义规则,用于包含端口9200并且开放的入站流量,0.0.0.0/0但我仍然无法访问此 EC2 实例

在此处输入图像描述

4

3 回答 3

2

要检查的潜在问题是错误绑定和实例操作系统防火墙。

检查 elasticsearch 绑定的位置,就好像它绑定到 127.0.0.1 一样,您将无法从外部访问它。

通过在 elasticsearch ec2 上的一个 shell 中运行来检查绑定:

sudo netstat -lptun | grep 9200

如果显示 127.0.0.1:9200 则说明配置错误,否则显示 *:9200 或 :9200 则正确。

如果它显示 127.0.0.1 那么您应该修改 elasticsearch 参数 network.bind_host,如下所述:https ://www.elastic.co/guide/en/elasticsearch/reference/1.4/modules-network.html

此外,默认操作系统防火墙通常允许 http/HTTPS 和 ssh,而 elasticsearch 9200 则不允许。这通常是 rhel 和 centos 的情况。您可以暂时禁用 iptables 并检查它是否有效。

要禁用 iptables,请运行:

sudo iptables -F

如果禁用 iptables 后连接正常,您应该配置 iptables 以允许在 9200 上连接。

我希望这有帮助。

G。

于 2016-09-25T16:22:19.187 回答
-1

建立从您的桌面到 EC2 的 SSH 隧道.. 然后只需使用您的浏览器.. 按照https://www.jeremydaly.com/access-aws-vpc-based-elasticsearch-cluster-locally/中给出的步骤操作

于 2019-08-14T18:27:29.007 回答
-1

安全组乱七八糟

您可以为安全组添加或删除规则(也称为授权或撤销入站或出站访问)。

您应该在启动实例时使用 SG,其有界 9200

于 2016-09-07T00:26:21.153 回答