elasticsearch

Linux安装
1、 安装
一、官网下载
官网下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.3-linux-x86_64.tar.gz
解压 : tar -zxvf elasticsearch-8.3.3-linux-x86_64.tar.gz -C /opt/server
重命名 :
mv elasticsearch-7.8.1 es8.3.3
2、ES与JDK的强依赖问题
简而言之: ES文件夹里自己携带了 JDK ,但是如果我们的 Linux 下安装了 JDK ,ES 就不会用自己自带的 JDK ,反而会使用我们 Linux 安装的 JDK ,这个时候如果两个jdk的版本不一致,就会造成jdk不能正常运行,报错
注意:如果Linux服务本来没有配置jdk,则会直接使用es目录下默认的jdk,反而不会报错
解决方法:
进入ES文件夹的bin目录
cd /opt/server/es7.8.1/bin
修改elasticsearch配置

############## 添加配置解决jdk版本问题 ##############
# 将jdk修改为es中自带jdk的配置目录
export JAVA_HOME=/usr/local/elasticsearch-7.13.2/jdk
export PATH=$JAVA_HOME/bin:$PATH

if [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="/usr/local/elasticsearch-7.13.2/jdk/bin/java"
else
        JAVA=`which java`
fi

3、解决内存不足问题
由于elasticsearch 默认分配 jvm空间大小为2g,如果服务器内存不大就会报错,所以我们需要修改 jvm空间,如果Linux服务器本来配置就很高,可以不用修改

error:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c6a00000, 962592768, 0) failed; error='Not enough space' (errno=12)
        at org.elasticsearch.tools.launchers.JvmOption.flagsFinal(JvmOption.java:119)
        at org.elasticsearch.tools.launchers.JvmOption.findFinalOptions(JvmOption.java:81)
        at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:38)
        at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:13

解决方案
进入ES文件夹的config目录开始配置,编辑 jvm.options
vim /opt/server/es7.8.1/config/jvm.options
修改
默认配置如下:
-Xms2g
-Xmx2g
默认的配置占用内存太多了,调小一些:
-Xms256m
-Xmx256m
4、修改ES核心配置信息
新建data文件夹并打开data文件夹再新建两个文件夹:es-data,es-log
然后在 elasticsearch.yml文件中配置,如下
执行命令修改elasticsearch.yml文件内容
vim /opt/server/es7.8.1/config/elasticsearch.yml
修改数据与日志存储路径

数据目录位置

path.data: /opt/server/es7.8.1/data/es-data

日志目录位置

path.logs: /opt/server/es7.8.1/data/es-log
修改绑定的ip允许远程访问

默认只允许本机访问,修改为0.0.0.0后则可以远程访问

绑定到0.0.0.0,允许任何ip来访问

network.host: 0.0.0.0
初始化节点名称

cluster.name: elasticsearch  #es服务集群名
node.name: es-node0 #节点名称
#初始的候选 master 节点列表。初始主节点应通过其 node.name 标识,默认为其主机名。
#确保 cluster.initial_master_nodes 中的值与 node.name 完全匹配
cluster.initial_master_nodes: ["es-node0"]

修改端口号,默认是9200(有需要的话可以改,就是修改我们访问的端口号)
http.port: 19200
5、启动
因为安全问题, Elasticsearch 不允许 root 用户直接运行,所以要创建新用户,在 root 用户中创建新用户。

useradd es   #添加用户 es
passwd es # 为 es 用户设置密码,密码输入的时候看不见,我设置的密码是 es123456
userdel -r es #如果错了,可以删除再加
chown -R es:es /opt/server/es7.8.1  #为这个文件夹赋予所有者 es 

切换到es用户
su es
进入bin目录
cd /opt/server/es7.8.1/bin
启动elasticsearch
./elasticsearch
./elasticsearch -d #后台启动
报错如下:
6、Exception in thread “main“ org.elasticsearch.bootstrap.BootstrapException: …
错误代码,如上图

Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /opt/es/config/elasticsearch.keystore

Likely root cause: 

java.nio.file.AccessDeniedException:/opt/es/config/elasticsearch.keystore

我们将这个文件进行删除,下次启动es时会自动创建
rm -rf elasticsearch.keystore
删除成功后再次切换回es的用户并再次启动
./elasticsearch

.7、vm.max_map_count [65530] is too low问题
原因:elasticsearch用户拥有的内存权限太小,至少需要262144,解决办法:
错误代码

ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /opt/server/es7.8.1/data/es-log/elasticsearch.log

解决方案

在 /etc/sysctl.conf文件最后添加如下内容,即可永久修改

切换到root用户

执行命令

su root
1
执行命令

vim /etc/sysctl.conf
1
添加如下内容

vm.max_map_count=262144

保存退出,刷新配置文件

sysctl -p
1
再切换es用户,再次启动

su es
启动成功截图如下

测试访问:
http://IP:9200
如果访问不了,可以看一下服务器的安全组是否打开,还有将Linux的防火墙的端口开放

firewall-cmd --list-ports  # 只看Linux 防火墙开放端口信息

# 开启端口
#开端口命令:
firewall-cmd --zone=public --add-port=9200/tcp --permanent

#重启防火墙:
systemctl restart firewalld.service

8、可能遇到的max file descriptors [4096]问题
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
解决方案

切换到root用户,执行命令

vi /etc/security/limits.conf
1
添加如下内容

  • soft nofile 65536
  • hard nofile 131072
  • soft nproc 2048
  • hard nproc 4096
    1
    2
    3
    4
    然后重启linux
    ps -ef|grep ela #查看 es的进程
    为Elasticsearch设置登录密码(看自己需求)
    ES7.x以后的版本将安全认证功能免费开放了,并将X-pack插件集成了到了开源的ElasticSearch版本中。下面将介绍如何利用X-pack给ElasticSearch相关组件设置用户名和密码。
    编辑配置文件

vim /usr/local/elasticsearch-7.13.2/config/elasticsearch.yml

在 elasticsearch.yml 末尾,加入以下内容:

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
1
2
编辑内容后重启Elasticsearch服务(必须操作)

设置用户名和密码,输入如下

/opt/server/es7.8.1/bin/elasticsearch-setup-passwords interactive

这里依次设置elastic、kibana、logstash等的访问密码,es12356

设置了访问密码,再次访问ES时,需要输入密码

10、卸载

查看安装的软件

dpkg -l | grep elastic

查看安装关联

dpkg -L elasticsearch

移除安装软件

dpkg -P elasticsearch

继续查看未卸载的目录和文件

find ./ elasticsearch | grep elasticsearc

移除目录和文件具体参考自己的环境

rm -r /var/lib/elasticsearch
rm /var/lib/dpkg/info/elasticsearch.*
rm /etc/default/elasticsearch
rm /etc/default/elasticsearch
rm /etc/init.d/elasticsearch

在此查看是否有关联的目录和文件

find ./ elasticsearch | grep elasticsearch

————————————————
版权声明:本文为CSDN博主「小怪吖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_51295655/article/details/123193074

posted @ 2022-08-03 11:34  donghongchao  阅读(464)  评论(0编辑  收藏  举报