1. 安装 Java
Elasticsearch 支持 Oracle JDK 和 OpenJDK,最低要求版本为 Java 8。
首先查看是否已安装了 Java:
# java -version
如果出现下面提示则说明系统未安装 Java:
-bash: java: command not found
如果系统已安装 Java 但版本低于 8,则需要升级。
本文假设系统未安装,且以 Oracle JDK 为例:
创建目录 /usr/java,下载并解压 JDK:
# cd /usr
# mkdir java
# cd java # wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz" # tar xzf jdk-8u121-linux-x64.tar.gz
现在 /usr/java 下会出现 jdk1.8.0_121 目录。接下来设置系统环境变量。
# cd /etc/profile.d/
使用 vim 创建 java.sh 文件并写入以下配置:
#!/bin/bash JAVA_HOME=/usr/java/jdk1.8.0_121/ PATH=$JAVA_HOME/bin:$PATH export PATH JAVA_HOME export CLASSPATH=.
保存并关闭 java.sh 文件,然后为其增加执行权限:
# chmod +x /etc/profile.d/java.sh
最后,使 java.sh 立即生效:
# source /etc/profile.d/java.sh
到此为止,Java 就已经安装好了,可以运行 java -version 命令查看版本:
java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
2. 安装 Elasticsearch
导入 PGP Key
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
在 /etc/yum.repos.d/ 下创建 elasticsearch.repo 文件,并写入以下内容:
[elasticsearch-5.x] name=Elasticsearch repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
保存并退出 elasticsearch.repo 文件,然后使用 yum 安装 elasticsearch:
# yum install elasticsearch
3. 运行 Elasticsearch
安装完成后,系统并未自动启动 Elasticsearch。启动 Elasticsearch 的方式依赖于系统是使用 SysV init 还是 systemd 。使用以下命令可以查看:
# ps -p 1
CentOS 6.8 使用的是 SysV init。
接下来,配置 Elasticsearch 在系统启动时自动启动:
# chkconfig --add elasticsearch
现在通过 service 命令运行 elasticsearch
service elasticsearch start
可能会出现以下错误:
which: no java in (/sbin:/usr/sbin:/bin:/usr/bin) Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME
意思是未安装 java ,但系统是已经安装了的。根据网上资料,还需要修改 /etc/sysconfig/elasticsearch 文件中的 JAVA_HOME,然后就可以启动了。
执行以下命令:
# curl -XGET 'http://localhost:9200/'
如果出来下面结果,说明 Elasticsearch 已经运行起来了。
{ "name" : "...", "cluster_name" : "elasticsearch", "cluster_uuid" : "...", "version" : { "number" : "5.2.1", "build_hash" : "...", "build_date" : "2017-02-09T22:05:32.386Z", "build_snapshot" : false, "lucene_version" : "6.4.1" }, "tagline" : "You Know, for Search" }
然而现在是无法通过 IP 访问 Elasticsearch 的,即请求 'http://IP:9200' 会报错。还需要修改 /etc/elasticsearch/elasticsearch.yml 中的 network.host 配置:
network.host 0.0.0.0
重启 Elasticsearch 就可以通过 IP 访问了。如果发现启动有问题,请参考下面的错误处理。
4. 启动错误处理
错误1:
ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
原因:
Centos 6.8 不支持SecComp,Elasticsearch 默认bootstrap.system_call_filter=true 导致失败。
解决办法:
在 elasticsearch.yml 中的 Memory 段设置
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
错误2:
max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536] max number of threads [1024] for user [Hadoop] is too low, increase to at least [2048] max virtual memory areas vm.max_map_count [65535] is too low, increase to at least [262144]
解决办法:
(1) 修改 /etc/security/limits.conf 中的配置如下
* soft nofile 65536
* hard nofile 65536
(2) 修改 /etc/security/limits.d/90-nproc.conf 中的配置如下
soft nproc 2048
(3) 修改 /etc/sysctl.conf,添加下面配置
添加下面配置:
vm.max_map_count=655360
(4) 执行命令
sysctl -p