本文对ElasticSearch简称ES。
一、 安装清单
(1) Centos6.5
(2) JDK8 + 解压版JDK11
(3) ElasticSearch7.3.2
二、 安装ES
2.0. 解压ES测试启动
(1)解压
直接解压elasticsearch-7.3.2-linux-x86_64.tar.gz至/usr/local/java目录(自定义目录)下,本文的安装路径为:/usr/local/java/es7
(2)启动
进入elasticsearch/bin目录,启动elasticsearch:
cd /usr/local/java/es7/bin
./elasticsearch
错误描述:
(1) 未来版本的Elasticsearch将需要Java 11;您来自[/usr/local/ Java /jdk8/jre]的Java版本不满足这个要求。
(2) can not run elasticsearch as root(不能使用root用户登录)。
2.1. 安装jdk11
(1)安装JDK1.8(可选
)
教程略(解压版)……。
(2)安装JDK11解压版(必选
)
这里的安装路径为(解压版):/usr/local/java/jdk11
说明:
(1)由于我们日常的代码开发都是使用的JDK1.8,所以会把JAVA_HOME配置成JDK8。
(2)这里不会把JAVA_HOME配置成JDK11,我们只需更改Elasticsearch的启动文件,使它指向我们解压安装的JDK11(es7要求jdk11+
)。
2.2. 配置ES加载jdk11,修改垃圾回收器GC
(1)配置启动加载jdk11
修改/usr/local/java/es7/bin/elasticsearch文件(即启动文件):
#配置自己的jdk11
export JAVA_HOME=/usr/local/java/jdk11
export PATH=$JAVA_HOME/bin:$PATH
......
......
省略原有配置(位置见下图)
......
......
#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/usr/local/java/jdk11/bin/java"
else
JAVA=`which java`
fi
(2)修改垃圾回收器GC
Java HotSpot™ 64位服务器VM警告: 选项UseConcMarkSweepGC在9.0版本中被弃用,可能在未来的版本中被删除。所以需修改/usr/local/java/es7/config/jvm.options文件:将 -XX:+UseConcMarkSweepGC 改为:-XX:+UseG1GC
执行命令:
# vim /usr/local/java/es7/config/jvm.options
提示:此配置文件中堆内存的大小(初始堆内存、最大堆内存)均为1G,建议暂时不要修改(亲测修改-xms=512m,后续启动会报错
)。
2.3. 配置ES目录属主
原因: ES不支持root用户启动。
(1)添加用户es7,并修改密码
# adduser es7
# passwd es7
修改Centos7密码可能存在复杂度限制,可参考博文:Linux(Centos7)取消密码复杂度及长度限制
提示: 如果以root用户安装的es,请用root用户做如下(2)~(3)步的授权操作。
(2) 递归更改权限
# chmod -R 755 /usr/local/java/es7
提示: 为了站点安全,一般的权限:
1)目录权限:755
2)文件权限:644
(3) 递归修改属主
语法:chown -R 用户名:用户组名 es7安装目录
执行命令:
# chown -R es7:es7 /usr/local/java/es7
(4) 切换es7用户,测试初步启动es
su es7
cd /usr/local/java/es7/bin
./elasticsearch
2.4. 修改ES配置文件
(1)配置ES过滤器(启动报错)
# vim /usr/local/java/es7/config/elasticsearch.yml
在最后一行添加过滤器配置(添加内容如下):
bootstrap.system_call_filter: false
具体如下图:
(2)添加外网IP
# vim /usr/local/java/es7/config/elasticsearch.yml
添加内容如下:
network.host: 0.0.0.0
具体如下图:
(3)开放node-1节点(取消原有注释)
# vim /usr/local/java/es7/config/elasticsearch.yml
具体如下图:
(4)配置初始化node-1节点
# vim /usr/local/java/es7/config/elasticsearch.yml
添加内容如下:
cluster.initial_master_nodes: [“node-1”]
具体如下图:
(5)设置允许外面浏览器访问(本人测试此步骤可跳过
)
# vim /usr/local/java/es7/config/elasticsearch.yml
在配置文件最后加上如下内容:
http.cors.enabled: true
http.cors.allow-origin: “*”
三、设置Centos7防火墙
第一种:只开放防火墙端口:9200
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
# 查看已开放端口列表
firewall-cmd --list-port
第二种:关闭防火墙
查看防火墙状态: systemctl status firewalld
启动: systemctl start firewalld
停止: systemctl stop firewalld
禁用(重启默认关闭防火墙): systemctl disable firewalld
可参考博文: Linux(Centos6.5、Centos7)下开放防火墙端口操作
四、修复其他启动问题
4.1、启动es报错
此时启动es,会报如下错:
错误详情:
两个错误,引导检查失败:
[1]:elasticsearch过程的最大文件描述符[4096]太低,至少增加到[65535]。
[2]:用户[xiao]的最大线程数[1024]太低,至少增加到[4096]。
PS: 有时还会报:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
4.2、解决报错
(1)修改/etc/security/limits.conf文件,在最后增加:
执行命令:
# vim /etc/security/limits.conf
添加内容:
# XIAO:deal with max file descriptors
* soft nofile 65536
* hard nofile 655360
# XIAO:deal with max number of threads
* soft nproc 4097
* hard nproc 40970
具体如下图:
(2)修改/etc/security/limits.d/20-nproc.conf文件,将1024改为4097
提示:
具体针对centos版本修改不同的文件,具体自行查验。
执行命令:
# vim /etc/security/limits.d/20-nproc.conf
具体如下图:
(3)修改/etc/sysctl.conf文件
执行命令:
# vim /etc/sysctl.conf
在文件末尾,添加内容如下:
# xiao add
vm.max_map_count=655360
具体如下图:
保存退出后,执行以下命令,令配置生效:
# sysctl -p
(4)重启Linux(必须执行
)
# reboot
五、启动ES
提示:
先切换es7用户,再启动es。
su es7
前台启动:
cd /usr/local/java/es7/bin
./elasticSerach
或
后台启动:
cd /usr/local/java/es7/bin
./elasticSerach -d
启动如下图:
提示: 9300:集群节点间通讯端口。 9200:客户端访问端口。
六、外部浏览器访问
七、关闭ES(kill进程)
(1)查找elasticSearch进程:
ps -ef | grep elastic
(2)杀死elasticSearch进程:
kill -9 4009
操作如下图:
教程结束!!!