背景介绍
最新稳定版的ES 5.5.x版本对系统环境要求比较苛刻,如果不满足的话,是无法正常启动的。大家可以在ElasticSearch入门学习到如何安装ES实例,这里呢,主要向大家介绍如何解决ES在CentOS 6下无法正常启动的问题。
机器环境
- CentOS 6.3 x64
- Oracle JDK 1.8
系统参数修改脚本
注意 要以root身份执行下面的脚本,执行后要重新登录普通账户启动ES
#!/bin/bash
echo "* soft nofile 65536">>/etc/security/limits.conf
echo "* hard nofile 65536">>/etc/security/limits.conf
echo "* soft memlock unlimited">>/etc/security/limits.conf
echo "* hard memlock unlimited">>/etc/security/limits.conf
echo "vm.max_map_count = 262144">>/etc/sysctl.conf
sysctl -p
ulimit -l unlimited
JVM参数
ES 5.5.x的JVM参数配置方式和以往2.x等版本不同,它独立出了一个jvm.options的文件在config目录下,我们可以通过修改jvm.options里的参数来指定ES启动需要的JVM环境,比如ES默认是2G堆内存,当内存不足时,我们可以进行提升,如下:
-Xms4g-Xmx4g
除此之外,我们还可以针对性的做各种调整,这里就不再赘述JVM的各参数用法。
启动报错问题
在CentOS 6下运行ES 5.5.x版本时,可能会遇到如下报错信息:
bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checksERROR:[1] bootstrap checks failed...[1]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
遇到这些错误信息不要慌,这是因为CentOS 6内核不支持SecComp,而ES 5.5.x默认是要执行检测命令的,所以这里我们把这个环境检测禁掉,就可以正常运行了,参数如下:
bootstrap.system_call_filter: false
在配置文件elasticsearch.yml追加即可
如果报线程不能超过1024M则
vim /etc/security/limits.d/90-nproc.conf
修改下面一行为2048
* soft nproc 2048
在elasticsearch.yml中修改logs和data路径:
例如:path.data: /opt/elk/elasticsearch-5.6.1/data
path.logs: /opt/elk/elasticsearch-5.6.1/logs
如果需要让head插件访问需要在配置文件elasticsearch.yml追加
http.cors.enabled: true
http.cors.allow-origin: "*"
安装ik分词
bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.1/elasticsearch-analysis-ik-5.6.1.zip
总结
ElasticSearch 5.5.x 相对以前的2.x版本,是基于Lucene 6来构建的,它增加了36%的查询速度,增加了71%的索引速度,并且减少了66%的硬盘空间占用,还较少了85%的内存使用,同时还新增IP字段,以支持IP4和IP6,在各方面超越了以往的历史版本