Linux下Elasticsearch体系的下载、安装

包括:Elasticsearch、Kibana、Logstash、Elasticsearch-head......

由于Elasticsearch安装文档相关资源少及其版本更新迭代快,很多已经不适用,本文是通过自己摸索着安装的一个过程记载,过程比较详细,模拟了安装过程中各种奇奇怪怪的问题,众卿可参考之。

一、Elasticsearch下载

下载地址:https://www.elastic.co/cn/downloads/

这里直接下当前最新版本8.2.3

可根据自己的需求下载,一般下载Linux86_64压缩包,但是这东西配置麻烦,配置开机自启动啥的还得自己写脚本,麻烦,这里直接下rpm包进行安装

上传安装包后进入安装包所在目录,执行如下命令进行安装:

rpm -ivh  安装包名字

 这里就会出现两个警告说使用绑定的jdk,一般就使用绑定的,使用自己的也可以但是有可能出现版本不兼容的问题。

这时,就会在/usr/lib/systemd/system/路径下生成一个名为elasticsearch.service的文件,使用如下命令查看这个文件内容:

cat /usr/lib/systemd/system/elasticsearch.service

就会发现有这么一句

 从上图可以看到安装路径:/usr/share/elasticsearch 配置文件所在位置:/etc/elasticsearch

 到这里就安装好了。

二、Elasticsearch 启动

然后理论上来说运行如下命令即可启动,不过嘛,能启动才怪。。。

systemctl start elasticsearch.service

还有使用这种方式启动虽然方便,但是报错的时候看不到有用的错误信息,先进入安装目录/usr/share/elasticsearch/bin下运行如下命令启动解决错误后再使用上面的方式启动,堪称完美。下面将会出现各种奇奇怪怪的问题,可怕的不是报错,是既不报错也不能正常使用,让人无从下手。后文所记载的异常和报错处理不一定会按照以下顺序出现,但过来过去无非就这些问题,可自行查阅。

cd /usr/share/elasticsearch/bin
./elasticsearch

然后就会发现报错说elasticsearch 不能在root用户下启动:org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

解决方式无非就两种方法:

1.修改命令参数或者配置文件让它可以在root下启动,非常粗暴,对非root用户不友好,不建议使用。

#执行elasticsearch时加上参数-Des.insecure.allow.root=true,即
./elasticsearch -Des.insecure.allow.root=true

#或者用vi elasicsearch 打开启动文件elasicsearch进行编辑,在变量ES_JAVA_OPTS使用前添加以下命令
ES_JAVA_OPTS="-Des.insecure.allow.root=true"

2.在非root下启动。使用这个。

一般在安装虚拟机的时候已经新建了用户,比如我的是admin,下面以admin为例子说明,具体以自己的名字为准,可直接用以下命令切换当前用户:

#格式su 用户名
su admin

如果除了root没有其他用户,可运行以下命令新建用户并且切换:

#adduser ***   //添加用户,我这里是admin,自行命名
adduser admin

#passwd ***  //给用户设置密码,不设也可以
passwd 123456

#切换到admin用户
su admin

然后再运行命令./elasticsearch启动,这里建议开两个命令窗口,一个root,一个admin避免来回切换麻烦

然后就会出现以下权限相关的错误,稍微有点多但基本都是同类型,解决方式也比较单一,所以这里整合到一起,注意在root用户下解决,之后在admin用户的路径/usr/share/elasticsearch/bin下运行./elasticsearch检测是否还报同样的错,之后就等待它报新的错误。。。

#./elasticsearch-env:行88: /etc/sysconfig/elasticsearch: 权限不够
chown -R admin /etc/sysconfig/elasticsearch

#bin/elasticsearch-env: 第 96 行:cd: /etc/elasticsearch: 权限不够
chown -R admin /etc/elasticsearch

#Exception in thread "main" java.nio.file.AccessDeniedException: /var/lib/elasticsearch
#只要看到AccessDeniedException异常就给它权限
chown -R admin /var/lib/elasticsearch

#Error opening log file '/var/log/elasticsearch/gc.log': Permission denied
#将整个elasticsearch目录权限给它
chown -R admin /var/log/elasticsearch

#另外将安装路径的权限给它,这里目前还没报错,不过报错是迟早的事
chown -R admin /usr/share/elasticsearch

然后在admin下运行./elasticsearch启动就会发现下面异常:

org.elasticsearch.bootstrap.StartupException: org.elasticsearch.ElasticsearchSecurityException: invalid configuration for xpack.security.transport.ssl - [xpack.security.transport.ssl.enabled] is not set, but the following settings have been configured in elasticsearch.yml : [xpack.security.transport.ssl.keystore.secure_password,xpack.security.transport.ssl.truststore.secure_password]

这是elasticsearch启动的Security配置,需要生成密钥,这里先不做配置,将其禁掉,修改如下两处为false,配置文件路径在/etc/elasticsearch下

#打开配置文件
vi /etc/elasticsearch/elasticsearch.yml
#修改这两处
xpack.security.enabled: false xpack.security.http.ssl:enabled: false

既然配置文件都打开了,顺便配置点其他的,迟早的事。

elasticsearch默认是不支持跨域的,在末尾添加如下两行支持跨域

http.cors.enabled: true 
http.cors.allow-origin: "*"

打开并修改访问ip设置,不然只有本虚拟机才能访问,别的机器无法访问

network.host: 0.0.0.0

保存退出,然后在admin下运行./elasticsearch启动就会发现下面异常:

ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

大概是说elasticsearch 程序的当前max file descriptors 的限制为 4096,需要增加到 65536。

首先查看当前的大小,运行如下两个命令查看:

ulimit -Hn
ulimit -Sn

下面进行扩容,注意修改手法及步骤,不能打乱步骤或者少步骤,不然修改了但不起作用。

1.确认在root用户命令窗口下

2.打开配置文件vi /etc/security/limits.conf最后添加如下两行后保存退出

#admin是自己的用户名,其他的照写
admin hard nofile 65536
admin soft nofile 65536

 3.通过命令切换到admin用户,不要直接打开admin用户窗口,一定要用命令做一下切换操作

su admin

4.然后查看是否修改成功

看到65536就表示扩容成功了,然后直接使用当前这个作为admin命令窗口,关掉原来那个admin命令窗口,再重新打开一个root命令窗口备用

在admin命令窗口回到安装目录/usr/share/elasticsearch/bin/重新运行./elasticsearch/启动,执行一大会儿后,等待出现异常:

咦?怎么回事!!!怎么突然启动成功了,没道理啊,内存还没修改呢,还没玩够呢,怎么就启动成功了,浏览器输入虚拟机IP:9200也正常显示成功。。。。

管他呢,关掉修改一番,免得以后出问题,

打开配置文件修改内存:内存不足会报错OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000e0c00000, 524288000, 0) failed; error='Not enough space' (errno=12)

因为我安装虚拟机的时候分配了2g,这里默认4g,已经远远超出了范围,所以这里改为500g,可按照自己实际情况修改。

vi /etc/elasticsearch/jvm.options

 保存退出后就可以大摇大摆的用最前面的那种方式启动了,运行以下启动命令即可正常启动,注意是在admin用户下,并且过程中要输入root密码:

首先在root用户下修改启动文件,不修改的话虽然两种方式启动执行的是同一个文件但systemctl start elasticsearch.service方式启动出错,./elasticsearch方式却能正常启动

 

#打开文件
vim /usr/lib/systemd/system/elasticsearch.service

#修改elasticsearch.service文件中用户名为自己的,我这里是admin ,如下图所示
#
usr=admin


#重新加载启动文件
systemctl daemon-reload

然后在admin用户下用下面这些命令操作

#启动
systemctl start elasticsearch.service

#停止
systemctl stop elasticsearch.service

#查看启动状态
systemctl status elasticsearch.service

#添加到开机自启动
systemctl enable elasticsearch.service

如果这种方式无法启动,可以使用nohup ./elasticsearch & 方式启动

如果启动过程中遇到error:

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000e0c00000, 524288000, 0) failed; error='Not enough space' (errno=12)

一种是jvm内存的问题,和上面一样修改vi /etc/elasticsearch/jvm.options 里面内存大小就行了

一种是它已经处于启动状态了,前面没有完全停止,需要查到线程将其kill掉后再重新启动

#查看线程
ps -ef |grep elasticsearch

#root下进行
kill -9 上面查到的线程ID

浏览器输入你的ip:9200看到如下界面就表示成功了

 由于文章比较详细,篇幅比较长,所以后面Kibana、Logstash、Elasticsearch-head......等安装将会择时另写文章说明,需要者自行查阅。

posted @ 2022-06-22 16:22  蒂雪凌星  阅读(1487)  评论(0编辑  收藏  举报
Live2D