安装
下载安装目录:/home/es-7.12.0
es启动用户:zmsz
出于安全考虑,elasticsearch默认不允许以root账号运行,所有一定要创建一个其他用户执行启动命令,不然一定会报错!!
创建用户:useradd zmsz
设置密码:passwd zmsz
下载解压
- 下载:官网
以最新版8.6为准,执行wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.0-linux-x86_64.tar.gz
- 解压安装
解压:tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz
配置
- 增加日志目录(logs)和数据目录(data)
#进入根目录mkdir data mkdir logs
- 编辑
vim conf/elasticsearch.yml
# 数据目录位置 # 集群名称,各节点配成相同的集群名称。 cluster.name: zmsz path.data: /home/es/data # 日志目录位置 path.logs: /home/es/logs #绑定的ip:默认只允许本机访问,修改为0.0.0.0后则可以远程访问 network.host: 0.0.0.0 #设置对外服务的http端口,默认为9200。 http.port: 9200 node.name: node-1 cluster.initial_master_nodes: ["node-1"]
- 修改/etc/security/limits.conf文件 增加配置
vi /etc/security/limits.conf 在文件最后,增加如下配置: * soft nofile 65536 * hard nofile 65536 在/etc/sysctl.conf文件最后添加一行 vm.max_map_count=655360 添加完毕之后, 执行命令: sysctl -p
启动
- 先将es文件夹下的所有目录的所有权限迭代给esuser用户
chgrp -R zmsz ./es-7.12.0 chown -R zmsz ./es-7.12.0 chmod 777 es-7.12.0
- 启动
先切换到esuser用户启动 su zmsz 前台启动: ./bin/elasticsearch 后台启动: ./bin/elasticsearch -d
常见错误
- [esuser@VM-0-15-centos bin]$ ./elasticsearch
warning: ignoring JAVA_HOME=/usr/local/jdk1.8.0_333; using bundled JDK
[2023-01-12T11:37:34,242][ERROR][o.e.b.Elasticsearch ] [VM-0-15-centos] fatal exception while booting Elasticsearchjava.lang.IllegalStateException: jar hell!
class: sun.tools.jar.CommandLine
jar1: /usr/local/jdk1.8.0_333/jre/lib/rt.jar
jar2: /usr/local/jdk1.8.0_333/lib/tools.jar
at org.elasticsearch.base@8.6.0/org.elasticsearch.jdk.JarHell.checkClass(JarHell.java:315)
at org.elasticsearch.base@8.6.0/org.elasticsearch.jdk.JarHell.checkJarHell(JarHell.java:233)
at org.elasticsearch.base@8.6.0/org.elasticsearch.jdk.JarHell.checkJarHell(JarHell.java:84)
at org.elasticsearch.server@8.6.0/org.elasticsearch.bootstrap.Elasticsearch.initPhase2(Elasticsearch.java:180)
at org.elasticsearch.server@8.6.0/org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:66)
See logs for more details.
ERROR: Elasticsearch did not exit normally - check the logs at /home/elasticsearch-8.6.0/esData/logs/elasticsearch.log
ERROR: Elasticsearch exited unexpectedly
jdk版本问题,8.6需要jdk17
jdk和es的关系
Elasticsearch版本 | JDK版本 |
---|---|
Elasticsearch 5.0.x | OpenJDK/AdoptOpenJDK 8 |
Elasticsearch 5.1.x | OpenJDK/AdoptOpenJDK 8 |
Elasticsearch 5.2.x | OpenJDK/AdoptOpenJDK 8 |
Elasticsearch 5.3.x | OpenJDK/AdoptOpenJDK 8 |
Elasticsearch 5.4.x | OpenJDK/AdoptOpenJDK 8 |
Elasticsearch 5.5.x | OpenJDK/AdoptOpenJDK 8 |
Elasticsearch 5.6.x | OpenJDK/AdoptOpenJDK 8 |
Elasticsearch 6.0.x | OpenJDK/AdoptOpenJDK 8 |
Elasticsearch 6.1.x | OpenJDK/AdoptOpenJDK 8 |
Elasticsearch 6.2.x | OpenJDK/AdoptOpenJDK 8、OpenJDK 9 |
Elasticsearch 6.3.x | OpenJDK/AdoptOpenJDK 8、OpenJDK 10 |
Elasticsearch 6.4.x | OpenJDK/AdoptOpenJDK 8、OpenJDK 10 |
Elasticsearch 6.5.x | OpenJDK/AdoptOpenJDK 8、OpenJDK 11 |
Elasticsearch 6.6.x | OpenJDK/AdoptOpenJDK 8、OpenJDK 11 |
Elasticsearch 6.7.x | OpenJDK/AdoptOpenJDK 8、OpenJDK 11、OpenJDK 12 |
Elasticsearch 6.8.x | OpenJDK/AdoptOpenJDK 8、OpenJDK/AdoptOpenJDK 11、OpenJDK 12、OpenJDK/AdoptOpenJDK 13、OpenJDK/AdoptOpenJDK 14 |
Elasticsearch 7.0.x | OpenJDK/AdoptOpenJDK 8、OpenJDK 11、OpenJDK 12 |
springBoot和es的关系
2. Cannot open file logs/gc.log due to Permission denied
[es@VM-0-16-centos elasticsearch-6.8.13]$ ./bin/elasticsearch
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file logs/gc.log due to Permission denied
Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: org.elasticsearch.cli.UserException: unable to create temporary keystore at [/home/es/elasticsearch-6.8.13/config/elasticsearch.keystore.tmp], please check filesystem permissions
Likely root cause: java.nio.file.AccessDeniedException: /home/es/elasticsearch-6.8.13/config/elasticsearch.keystore.tmp
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
at java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:434)
at java.nio.file.Files.newOutputStream(Files.java:216)
at org.apache.lucene.store.FSDirectory$FSIndexOutput.<init>(FSDirectory.java:411)
at org.apache.lucene.store.FSDirectory$FSIndexOutput.<init>(FSDirectory.java:407)
at org.apache.lucene.store.FSDirectory.createOutput(FSDirectory.java:255)
at org.elasticsearch.common.settings.KeyStoreWrapper.save(KeyStoreWrapper.java:472)
at org.elasticsearch.bootstrap.Bootstrap.loadSecureSettings(Bootstrap.java:238)
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:295)
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)
Refer to the log for complete error details.
用户没有权限打开 log 文件:
切换至root用户,对当前文件夹执行 chmod 777 -R 指令赋予权限。
3.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2023-10-07T17:19:36,018][INFO ][o.e.n.Node ] [node-1] stopping ...
[2023-10-07T17:19:36,037][INFO ][o.e.n.Node ] [node-1] stopped
[2023-10-07T17:19:36,037][INFO ][o.e.n.Node ] [node-1] closing ...
[2023-10-07T17:19:36,053][INFO ][o.e.n.Node ] [node-1] closed
[2023-10-07T17:19:36,057][INFO ][o.e.x.m.p.NativeController] [node-1] Native controller process has stopped - no new native processes can be started
解决方法:
解决方案:
vim /etc/sysctl.conf
添加如下所示配置:
vm.max_map_count=655360
保存退出即可
刷新配置
sysctl -p /etc/sysctl.conf/
- ES:flood stage disk watermark 「95%」 exceeded
最近遇到一个问题:往系统中写入数据后,查询出来的结果一直为空,由于查询用到了Elasticsearch 分布式搜索引擎。检查es日志,提示"flood stage disk watermark [95%] exceeded",得知磁盘使用率超出阈值,es索引模式变为只读,无法写入数据,从而造成数据同步失败。
image.png
针对该问题,有两种解决办法:
清理磁盘空间
因为Elasticsearch 会对磁盘空间进行监控,当磁盘剩余空间达到了 floodstage 阈值,会将所有相关索引强制置为只读。需要清理磁盘空间后,才能写入数据。
调整ElasticSearch的默认阈值
在/config/elasticsearch.yml 文件中增加如下配置:
cluster.routing.allocation.disk.watermark.low: 90%
cluster.routing.allocation.disk.watermark.high: 95%
cluster.routing.allocation.disk.watermark.flood_stage: 97%
或
cluster.routing.allocation.disk.watermark.low: 100gb
cluster.routing.allocation.disk.watermark.high: 50gb
cluster.routing.allocation.disk.watermark.flood_stage: 10gb
其中,
cluster.routing.allocation.disk.watermark.low,默认85%,用于控制磁盘的最小使用率;cluster.routing.allocation.disk.watermark.high,默认90%,用于控制磁盘的最大使用率;cluster.routing.allocation.disk.watermark.flood_stage,默认95%,超过此值时,Elasticsearch 变成只读模式,无法写入数据。
注:上述配置必须同时设为百分比,或具体字节值,不能混用。
作者:於菟酱
链接:https://www.jianshu.com/p/e1867d618351
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
安装kibana
下载和es一一对应的版本
安装
后台启动 nohup bin/kibana &