Elasticsearch部署和问题汇总

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

1. 资源准备

1.1 镜像资源

由于资源下载是外网会比较慢,推荐使用华为云提供的镜像:https://mirrors.huaweicloud.com/
elasticsearch-6.8.3.tar.gz

1.3 资源规划

系统主机ip部署内容JDK
centso 7.9192.168.40.131elasticsearch1.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/


在这里插入图片描述
则表示部署成功!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值