ES 5.3 集群安装
目录
安装jdk1.8
在es 5.0以后的版本需要java版本为1.8以上。否则启动时就会报错。
- 安装java
下载java
:java1.8下载
## 解压、安装
tar zxvf jdk-8u121-linux-x64.tar.gz
- 配置环境变量
vim /etc/profile
添加以下配置
JAVA_HOME=/usr/local/java1.8 //java的安装路径
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
保存后然后执行以下命令
source /etc/profile
验证
java -version
## 得到以下信息
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b14, mixed mode)
调整内核参数
在es5.0安装前,需要配置几项内核参数,否者ES无法启动
修改文件描述符
如果未修改会报以下错误:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
- 临时方案
ulimit -SHn 655350
- 永久方案
vim /etc/security/limits.conf
## 修改以下配置信息
* soft nofile 655350
* hard nofile 655350
虚拟内存
如果未配置,会报以下错误:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
- 临时方案
sysctl -w vm.max_map_count=655360
- 永久方案
vim /etc/sysctl.conf
## 添加以下信息
vm.max_map_count=262144
- 验证
sysctl -a
线程数
如果未配置,会报以下的错:
max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
编辑/etc/security/limits.d/90-nproc.conf
* soft nproc 1024
## 修改为
* soft nproc 2048
内存锁
报错信息:
ERROR: bootstrap checks failed
memory locking requested for elasticsearch process but memory is not locked
编辑/etc/security/limits.conf
切换到root用户,编辑limits.conf配置文件, 添加类似如下内容:
sudo vim /etc/security/limits.conf
添加如下内容:
* soft memlock unlimited
* hard memlock unlimited
备注:* 代表Linux所有用户名称
ES安装
- 下载,解压(ES 5.3)
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz
tar zxvf elasticsearch-5.3.0.tar.gz
- 安装x-pack
./elasticsearch-5.3.0/bin/elasticsearch-plugin install x-pack
备注
:x-pack支持离线安装方式,一劳永逸,详情请见ES x-pack官方安装手册
- 配置
由于本章节只讲到了ES的安装,我们不对ES的参数做详细的解析。以下为普通配置项:
# 集群名称
cluster.name: dev-elasticstack5.0
# 节点信息
node.name: node-2
# 机柜信息
node.attr.rack: r1
# 数据目录
path.data: /data1/esdata,/data2/esdata,/data3/esdata,/data4/esdata,/data5/esdata,/data6/esdata,/data7/esdata,/data8/esdata
# 日志目录
path.logs: /opt/elasticsearch-5.1.1/logs
# HTTP端口
http.port: 9200
# 是否作为主节点
node.master: true
# 是否作为数据节点
node.data: true
- 启动
ES启动不支持root,所以建议单独建立建立用户用于elastic的启动和管理
su elastic
./elasticsearch-5.3.0/bin/elasticsearch -d // -d 为在后台启动,不加 -d 将在前端运行
- 验证
查看集群健康状态
curl -XGET "http://localhost:9200/_cluster/health?pretty"
其他坑
- Centos6安装ES5的坑
一次在项目上,项目要求我们使用Centos6系统部署ES 5.0然后启动时候报以下错误
$ bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
$ node validation exception
$ 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
- 解决办法
经过多方查询,结果发现是由于ES中有一个叫SecComp的组件,对内核有需求(具体需要多少以上我忘了…),而centos6的内核为2.6,低于了需求的内核。ES有一个参数为bootstrap.system_call_filter,默认情况下该参数的值为ture,他会检测SecComp的初始化,如果初始化失败,bootstrap将会报错。所以,解决方案就很简单了,我们需要在/conf/elasticsearch.yml中配置以下参数:
## 特别注意,该参数需要在bootstrap.memroy的配置下面添加
bootstrap.memory_lock: false
bootstrap.system_call_filter: false