绑定到除localhost之外的任何东西时Elasticsearch都不会启动(绑定到eth0时的节点验证异常)

时间:2016-12-21 10:28:54

标签: elasticsearch

我对弹性搜索游戏非常陌生。我甚至很擅长在我的Ubuntu 14.04安装上运行JAVA。我的背景几乎完全是基于JS堆栈的。

有了这个,我已经完成了安装elasticsearch的教程。我已经设法通过修改启动时分配的内存量来使它在我的cheapo digitalocean droplet上运行。太好了!

如果我在实际主机的终端上,我可以使用http://localhost:9200/进行访问。

但是,我想将此作为端点公开。因此,根据网络上的文档,我只是将netowrk.bind发送到0.0.0.0

然而,当我保存配置文件并sudo service elasticsearch restart时,它告诉我它已经启动了。它崩溃并关闭后不久。

仔细检查日志后,似乎因为我绑定到non-loopback网络(又名eth0),它会运行一些引导检查然后失败,因为我没有分配给它的最小内存。

为什么我会将它绑定到 local 或localhost,然后运行应用程序但不允许我绑定到面向外部的网络?

[2016-12-21T10:18:59,888][INFO ][o.e.b.BootstrapCheck     ] [honey-pot-1] 
bound or publishing to a non-loopback or non-link-local address,
enforcing bootstrap checks
[2016-12-21T10:18:59,903][ERROR][o.e.b.Bootstrap          ] [honey-pot-1]
node validation exception
bootstrap checks failed
max number of threads [1822] for user [elasticsearch] is too low, 
increase to at least [2048]
max virtual memory areas vm.max_map_count [100000] is too low,
increase to at least [262144]
[2016-12-21T10:18:59,928][INFO ][o.e.n.Node               ] [honey-pot-1] 
stopping ...

3 个答案:

答案 0 :(得分:2)

除非增加最大线程数和最大虚拟内存,否则弹性不会启动。 您可以按照以下文档: configuring Elastic system settings

答案 1 :(得分:0)

将以下配置添加到/etc/elasticsearch/elasticsearch.yml以进行基于rpm的安装,或将$ ES_HOME / elasticsearch.yml进行tarball安装

network.host:127.0.0.1 http.host:0.0.0.0

并重新启动elasticsearch。应该可以。

此外,您可以尝试设置设置-sudo systemctl编辑elasticsearch并添加 [服务] LimitMEMLOCK =无穷大

并保存和sudo systemctl daemon-reload 以上建议。

答案 2 :(得分:0)

增加最大虚拟内存区域vm.max_map_count ..使用以下命令

$ sudo sysctl -w vm.max_map_count = 262144