3

我现在花了一些时间寻找有关 elasticsearch.yml 配置的信息,这些配置使我的单个实例 Elasticsearch(在 Windows 2012 Server EC2 上)可通过公共 ip 访问,但每次我取消注释以下设置中的一个或两个时,唯一改变的是,调用私有 ip 也会导致错误。

network.publish_host: <public ip>

network.bind_host: <private ip>

这是否正确,是否还有其他必须定义的设置?它不应该使用默认值运行吗?

4

2 回答 2

3

这更多是关于网络如何在 EC2 中工作的一般答案,而不是对您问题的具体答案。但它应该有助于告知如何配置您的应用程序。

EC2 在公共 IP 地址和私有 IP 地址之间具有 1:1 NAT。因此,只有私有 IP 地址对实例直接可见。

如果您将服务绑定到网络接口,它将是具有私有 IP 的服务。

某些服务确实需要了解外部 IP 地址才能正常运行。我遇到的唯一一个是被动配置中的 FTP,可能是因为它需要打开一个单独的套接字进行数据传输。

在弹性搜索的情况下,他们似乎有一个特殊的插件,可以帮助为 aws 环境配置弹性搜索:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-network。 html

于 2014-10-21T15:17:46.583 回答
0

我有同样的问题。

在 aws EC2 上仅安装了一个 ES 实例,并希望授予它公共访问权限。

在 ubuntu 16.04 上,这对我有用:

在 /etc/elasticsearch/elasticsearch.yml 添加这一行:

network.host: <ec2 instance private ip>

私有 ip 应该类似于 172.xxx

也不要忘记在您的 aws 控制台中允许访问端口 9200(默认)和您将发送请求的 IP 地址的安全组。

所以不同之处在于从 aws 控制台设置的不是公共 IP 地址而是私有 IP 地址。

另请注意,这可能很危险,因为没有任何用户/密码或其他访问控制

于 2017-01-10T16:08:25.213 回答