1. 资源准备
1.1 镜像资源
由于资源下载是外网会比较慢,推荐使用华为云提供的镜像:https://mirrors.huaweicloud.com/
elasticsearch-6.8.3.tar.gz
1.3 资源规划
| 系统 | 主机ip | 部署内容 | JDK |
|---|---|---|---|
| centso 7.9 | 192.168.40.131 | elasticsearch | 1.8.X |
2. 配置JDK环境
由于ES是需要JDK环境才能run,则需要先配置JDK环境。
先到oracle官网上下载linux-64的jdk压缩包(1.8),地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html.
解压文件:
tar zxvf jdk-8u202-linux-i586.tar.gz
---------------一般软件安装目录都在/usr/local下---------------
mv jdk1.8.0_202 /usr/local
配置环境变量:
vi /etc/profile
-----------------在配置文件最后追加-----------------------
#jdk安装目录
export JAVA_HOME=/usr/local/jdk1.8.0_202
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
--------------------------------------------------------
加载环境变量:
source /etc/profile
测试JDK环境
java -version
---------------报错信息-------------
-bash: /usr/local/jdk1.8.0_202/bin/java: /lib/ld-linux.so.2: bad ELF interpreter
---------------原因分析-------------
glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glib,需要安装glibc工具库
yum install glibc.i686
------------重新查看jdk版本---------
[root@localhost ~]# java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) Client VM (build 25.202-b08, mixed mode)
3. 安装elasticsearch
3.1 上传资源
将在华为云下载elasticsearch-6.8.3.tar上传到192.168.40.131服务上,并解压:
tar -zxvf elasticsearch-6.8.3.tar.gz
-------------------------------------
mv elasticsearch-6.8.3 /usr/local
3.2 编辑elasticsearch.yml
编辑elasticsearch.yml文件
vim elasticsearch-6.8.3/config/elasticsearch.yml

修改以上2处:开放外网访问、开放默认端口号 9200
3.3 开放端口号
#开放9200端口号
firewall-cmd --zone=public --add-port=9200/tcp --permanent
-------------------------刷新防火墙---------------------------
firewall-cmd --reload
-------------------------需要使用root账号----------------------
systemctl start firewalld -- 如果防火墙没有开启 需要先开启
-------------------------查看开放的端口号----------------------
firewall-cmd --list-ports
3.4 创建用户
---------创建用户+设置密码-------------
adduser winter;
passwd winter;
---------- 赋予root权限----------------
vim /etc/sudoers
增加 winter ALL=(ALL) ALL
wq! 保存修改
3.5 启动ES
再切到ES文件夹的bin目录下:
cd /usr/local/elasticsearch-6.8.3/bin
-----------------后台启动ES--------------------
./elasticsearch
4. 相关问题
下面列举一下在部署中遇到的一些问题和解决方案:
------------------报错信息--------------------
unable to load JNA native support library, native methods will be disabled.
3 java.lang.UnsatisfiedLinkError: Native library
....
---------------------------------------------
方案:
查看es目录/lib 下的 JNA版本 先备份 原JNA加上.bak后缀,并去下载和该版本一致的jar,地址:https://repo1.maven.org/maven2/net/java/dev/jna/jna/4.5.1/jna-4.5.1.jar (我的是jna-4.5.1.jar)
重新启动ES(查看错误信息):
./elasticsearch
---------------------报错信息--------------------
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException:
can not run elasticsearch as root
方案:
这说明不能用root账号启动ES服务,切换为非root用户
su winter # 权限都在3.4完成了
再次重新启动ES(查看错误信息):
./elasticsearch
--------------------报错信息-------------------
org.elasticsearch.bootstrap.StartupException: ElasticsearchException[X-Pack is not supported and Machine Learning is not available for [linux-x86];
you can use the other X-Pack features (unsupported) by setting xpack.ml.enabled: false in elasticsearch.yml
方案:
关键字 setting xpack.ml.enabled: false in elasticsearch.yml 在 elasticsearch.yml中配置 xpack.ml.enabled: false
vim /elasticsearch-6.8.3/config/elasticsearch.yml
--------------------在末尾追加------------------------------
xpack.ml.enabled: false
再次重新启动ES(查看错误信息):
./elasticsearch
------------------报错信息--------------------------
java.lang.UnsupportedOperationException:seccomp unavailable: 'i386' architecture unsupported
方案:
这只是一个警告,不影响运行,因为Centos版本太低,不影响运行。
真正的错误是这行日志:
ERROR: [4] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[3]: JVM is using the client VM [Java HotSpot(TM) Client VM] but should be using a server VM for the best performance
[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
先看问题[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
原因分析:在建立索引时,尤其是有很多分片和副本的情况下,Elasticsearch将创建很多文件。则系统不能限制打开的文件描述符小于65536个。
解决方案:给启动ES用户配置创建文件权限
vim /etc/security/limits.conf
-------------在文件末尾追加------------------
winter soft nofile 65536
winter hard nofile 131072
winter soft nproc 4096
winter hard nproc 4096
-------------重启后配置生效------------------
reboot
再次重新启动ES(查看错误信息):
./elasticsearch
------------------报错信息-----------------------
ERROR: [3] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2]: JVM is using the client VM [Java HotSpot(TM) Client VM] but should be using a server VM for the best performance
[3]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
现在报错问题只有3项了,问题[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因分析:最大虚拟内存值设置过小,无法支持ElasticSearch的运行。
解决方案:
vim /etc/sysctl.conf
-------------配置文件后面追加----------------
vm.max_map_count=655360
--------------配置生效--------------------
sysctl -p
再次重新启动ES(查看错误信息):
./elasticsearch
--------------------------报错信息就2个-------------------------------
ERROR: [2] bootstrap checks failed
[1]: JVM is using the client VM [Java HotSpot(TM) Client VM] but should be using a server VM for the best performance
[2]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
问题[1]: JVM is using the client VM [Java HotSpot™ Client VM] but should be using a server VM for the best performance
原因分析:当前jvm是Java HotSpot Client VM(-client),而应该使用的是Java HotSpot Server VM(-server),前者如其名称,应该适合在客户端使用,后者则适合在服务器环境中使用
解决方案:只需要从Java HotSpot Client VM(-client)切换到Java HotSpot Server VM(-server)就行
--------------查找jre位置------------
find / -name jre
--------------修改jvm.cfg------------
vim /usr/local/jdk1.8.0_202/jre/lib/i386/jvm.cfg
-----------------------------------------------
-server KNOWN # 将server 放到 client前面
-client IF_SERVER_CLASS -server
-minimal KNOWN
再次重新启动ES(查看错误信息):
./elasticsearch
------------------报错信息 就剩下一个---------------
ERROR: [1] bootstrap checks failed
[1]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解决方案:直接修改elasticsearch.yml即可
vim /elasticsearch-6.8.3/config/elasticsearch.yml
---------------------在后面追加---------------------------
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
最后重新启动ES:
./elasticsearch
-----------推荐使用后台启动方式----------
nohup sh elasticsearch &
在浏览器上输入:http://192.168.40.131:9200/

则表示部署成功!
本文详细介绍了如何在 CentOS 7.9 上配置 JDK、下载并解压 Elasticsearch、编辑配置文件、解决启动问题,包括JDK版本不匹配、端口开放、用户权限设置、系统调优等,最终实现Elasticsearch 的成功部署。
743

被折叠的 条评论
为什么被折叠?



