我现在花了一些时间寻找有关elasticsearch.yml配置的信息,这些配置使我的单个实例Elasticsearch(在Windows 2012 Server EC2上)可以通过公共IP访问,但每次我取消注释以下一个或两个设置时,唯一的事情就是更改是,调用私有IP也会导致错误。
network.publish_host: <public ip>
network.bind_host: <private ip>
这是否正确,是否还有其他必须定义的设置?它不应该使用默认值运行吗?
答案 0 :(得分:3)
这是关于网络如何在EC2中工作而不是对您的问题的特定答案的更一般的答案。但它应该有助于告知如何配置您的应用程序。
EC2在公共和私有IP地址之间具有1:1的NAT。因此,实例只能直接看到私有IP地址。
如果要将服务绑定到网络接口,则它将是具有专用IP的服务。
某些服务确实需要了解外部IP地址才能正常运行。我遇到的唯一一个是被动配置的FTP,可能是因为它需要打开一个单独的套接字进行数据传输。
在弹性搜索的情况下,它们似乎有一个特殊的插件,可以帮助配置aws环境的弹性搜索:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-network.html
答案 1 :(得分:0)
我遇到了同样的问题。
在aws EC2上只安装了一个ES实例,并希望授予它公共访问权限。
在ubuntu 16.04上,这对我有用:
/etc/elasticsearch/elasticsearch.yml中的添加以下行:
network.host: <ec2 instance private ip>
私有IP应该类似于172.x.x.x
另外,请不要忘记在aws控制台的安全组中访问端口9200(默认)以及发送请求的IP地址。
所以区别是设置不公开,而是来自aws控制台的私有IP地址..
另请注意,由于没有任何用户/密码或其他访问控制,这可能很危险