几个重要问题
1、本地 curl localhost:9200 成功访问
其它机器通过ip无法访问
解决办法:
config/elasticsearch.yml文件中,
添加 network.host: 0.0.0.0
表示所有用户可访问
(最开始以为是防火墙的问题
iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9200 -j ACCEPT
执行之后,仍然不行,所以想到可能是 es的端口号问题。有点类似mysql,其他host访问,可能提示权限不够
)
2、bootstrap启动 报错,关键字 secComp
secComp,而elasticsearch5.2.0以上的版本默认bootstrap。system_call_filter为true进行检测,所以导致检测失败,失败后会导致es不能启动。
所以,继续在该文件添加
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
3、ERROR: [2] bootstrap checks failed
[1]: max number of threads [1024] for user [user] is too low, increase to at least [4096]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
(我只遇到了第1个问题)
到 /etc/security/limits.d/90-nproc.conf
文件中修改最大线程数
* soft nproc 1024
# 将上面的修改为:
* soft nproc 4096
我的Linux机器,重启(执行reboot命令)之后,才生效。
有的网友说,不重启直接生效了,可能和机器有关。
4、bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
编辑elasticsearch.yml文件,将 #cluster.initial_master_nodes: ["node-1", "node-2"] 修改为 cluster.initial_master_nodes: ["node-1"],记得保存。
核心总结:elasticsearch.yml,需要各种配置。
不像Redis、Mysql等其它中间件,默认配置就能跑起来。
参考资料:
elasticsearch学习之路---Linux 下安装并启动elasticsearch
Elasticsearch的初次搭建
https://www.jianshu.com/p/169acce2ce25