工作需要,学习了一下ElasticSearch的搭建,过程中碰到很多问题,查了不少资料,在此做个汇总,也希望给后人铺个路~
1.首先安装java(jdk1.7或1.8都可以),并配置环境变量。(原来有安装配置过的略过此步)
2.使用curl指令下载es:
$ curl -L -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch/elasticsearch-5.6.3.tar.gz
然后使用 $tar xzf elasticsearch-5.6.3.tar.gz解压es。
3.修改访问es的ip及端口
# vim /usr/local/elasticsearch/elasticsearch-5.6.3/config/elasticsearch.yml
如图将host与port参数配置的注释取消,并配置host为本机ip即可:
4.进入解压出来的es目录的bin下,启动es节点和单集群:
$ ./elasticsearch
5.启动成功后,在web浏览器中输入192.168.179.129:9200,如果返回以下页面,则说明成功。
或者在shell中直接curl http://192.168.179.129:9200,如果返回以下信息也说明成功:
如果遇到:
说明jvm启动内存太大,机器内存不足(如果按照之前虚拟机配置中的1G来配置,则会出现此问题,因为es默认jvm启动内存是2g,所以我们需要配置一下es的启动内存)
编辑es/config/jvmoptions文件,修改以下两个参数:
#-Xms2g
#-Xmx2g
-Xms512m
-Xmx512m
如果遇到:
根据提示,无法以根权限启动es程序,所以我们创建一个非根用户,并给它赋予目录该用户权限。
# groupadd es
# useradd es -g es -p es
# chown -R es:es /usr/local/elasticsearch/
# sudo su es
再为新建的es用户配置一下环境变量,将之前root用户的内容拷贝过来(主要是java的环境变量):‘
# vim ~/.bash_profile
# java environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_91
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
用source指令使配置生效:
# source ~/.bash_profile
再次启动es。
这是在之前root用户给es用户赋权时没有完全将es目录的所有文件权限给es,重新用root用户身份执行:(-R参数不要掉,表示递归将es目录下所有文件权限给es用户)
# chown -R es:es /usr/local/elasticsearch/
[1]: initial heap size [16777216] not equal to maximum heap size [257949696]; this can cause resize pauses and prevents mlockall from locking the entire heap
第一个问题还是jvm内存问题,请重新检查可能碰到的问题(1)JVM内存问题,按照步骤重新检查一遍。
[2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
Es进程设置的最大文件描述符太小,需要增加。
编辑/etc/security/limits.conf,最后加上:
es soft nofile 65536
es hard nofile 65536
然后重新连接shell,切换到es用户,再尝试启动es。
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
是以为操作系统的vm.max_map_count参数设置太小导致的,请使用root用户登录系统,执行以下命令:
sysctl -w vm.max_map_count=262144
并用以下命令查看是否修改成功
sysctl -a | grep “vm.max_map_count”
如果能正常输出262144,则说明修改成功