一. 版本与java客户端选择

es当前的大版本有7.x,6.x,5.x,2.x,  其中2.x无法向上升级。

7.x太新,不建议上项目。

pg与es之间的数据同步插件amazonriver,对es的版本有要求,只支持5.x版本,所以这里选择了5.5.0版本。

二. Es下载

官网下载

elasticsearch-5.5.0.tar.gz

三. 硬盘与内存的要求

1)建索引需要把业务数据全部导入es,根据数据量估算存储需要的磁盘空间,选择磁盘剩余充足的目录安装es.

2)Es的性能很依赖内存,内存一般设置不超过机器可用内存总数的一半,最大不要超过32G(不然性能反而会下降),未占用的另一半会被lucene文件缓存占用。

3)Linux 的swapping 需要调整到最低,以避免es缓存的数据被交换到磁盘(和windows的虚拟内存机制一样),这会导致es性能大幅下降。

 

四. 安装

上传压缩包elasticsearch-5.5.0.tar.gz到目录:

/opt/elasticsearch-5.5.0.tar.gz

(已通过命令df -h  与 df /opt检查/opt 所在的挂载磁盘,所剩存储足够大)

 

解压到/opt目录

cd /opt

tar -xzf /opt/elasticsearch-5.5.0.tar.gz

 

五. 配置

1)配置/opt/elasticsearch-5.5.0/config/elasticsearch.yml

#集群名称,同局域网下cluster名称相同的节点会自动组成一个集群

cluster.name: es-cluster-qj

#节点名称,同集群下每个es节点名称都需要唯一,不相同

node.name: node-1

#手动先创建/opt/elasticsearch-5.5.0/data ,指定该目录用来存储索引

#可指定多个目录,一般这些目录要位于不同磁盘

path.data: /opt/elasticsearch-5.5.0/data

#指定日志输出路径

path.logs: /opt/elasticsearch-5.5.0/logs

#本机ip

network.host: 10.168.4.91

#es rest api 监听端口

http.port: 9200

 

#head 插件配置 允许跨域访问(head 插件提供一个简单的交互页面,支持对es rest api 进行简易的访问)(直接添加在文件末端)

http.cors.enabled: true

http.cors.allow-origin: "*"

http.cors.allow-credentials: true

 

2)配置/opt/elasticsearch-5.5.0/config/jvm.options

(检查机器内存 多少G可用:

[root@10.168.4.60 ~]# cat /proc/meminfo

MemTotal:       32781624 kB

MemFree:        22576584 kB

MemAvailable:   24901968 kB

总共32G, 剩余24G, 所以准备给es配置内存10G。)

 

修改配置:

-Xms10g

-Xmx10g

 

-Xms和-Xmx设置相同时可避免Java堆自动扩展

一般配置为总内存 的一半,不要超过32G。超过32G,JVM优化策略Compressed OOPS会失效,同时对象指针从4位增加到8位,反而加大了无畏的消耗。

 

3)系统内核配置

a)vim /etc/sysctl.conf  添加如下配置

vm.swappiness=1

vm.max_map_count=262144

保存退出,再执行如下命令,使配置立即生效

sysctl -p

(-p从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载)

解释:

vm.swappiness=1   调低swapping内存交换,和windows上的虚拟内存功能相同,Es内存中的数据被交换到磁盘上后,会导致性能大大降低。

vm.swappiness这个值表示系统进行swapping的倾向度,不建议设置成0,完全关闭也会导致其他问题。设成最小的1即可。

vm.max_map_count=262144 调大进程的虚拟内存区域上限,不然es启动会报错:“max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]”  

 

b)调大进程文件描述符限制,用户线程数限制,否则es启动会报错

报错内容:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

max number of threads [3818] for user [es] is too low, increase to at least [4096]

通过下面2个命令查看当前进程文件描述符限制数量

ulimit -Hn

ulimit -Sn

通过下面2个命令查看当前用户线程限制数量

ulimit -Hu

ulimit -Su

 

vim /etc/security/limits.conf文件,增加配置,用户重新登录后生效

*                soft    nofile          65536

*                hard    nofile          65536

*                soft    nproc           4096

*                hard    nproc           4096

 

六. 新建es用户和用户组

Es 禁止在root用户下运行,所以需要创建个新用户

创建组

groupadd elasticsearch

创建用户es 并指定密码

useradd es -g elasticsearch -p 123456

给es用户赋/opt/elasticsearch-5.5.0权限

chown -R es:elasticsearch /opt/elasticsearch-5.5.0

切换到 es用户 执行命令

 

七. 启动es

切换到es账户,启动

su  es

./bin/elasticsearch -d -p pid

 

关闭es

kill `cat /opt/elasticsearch-5.5.0/pid`

注意 这里 cat前面和 pid后面 不是 点‘  ,按键

 

lsof -i:9200   检查该端口进程是否存在

查看es运行日志:

tail -300f /opt/elasticsearch-5.5.0/logs/es-cluster-qj.log

 

启动后通过浏览器验证es rest api 是否正常访问:

http://10.168.4.91:9200/

es 提高内存 es最低内存要求_root用户

为了能在root用户下更方便的启停es,这里写了启停脚本 :

先给脚本加可执行权限:

chmod +x /opt/elasticsearch-5.5.0/start.sh

chmod +x /opt/elasticsearch-5.5.0/stop.sh

 

启动

/opt/elasticsearch-5.5.0/start.sh

#!/bin/bash

echo "es不能运行在root用户!正在切换到es用户"

home="/opt/elasticsearch-5.5.0"

su  es <<EOF

cd $home

$home/bin/elasticsearch -d -p $home/pid

echo "Starting! Please wait..."

sleep 3s

echo "Started!"

EOF

 

停止

/opt/elasticsearch-5.5.0/stop.sh

#!/bin/bash

echo "es不能运行在root用户!正在切换到es用户"

su  es <<EOF

echo "Stopping! Please wait..."

kill -9 `cat /opt/elasticsearch-5.5.0/pid`

echo "Stoped!"

EOF

 

 

END