一、前言
近期接手生产Elasticsearch运维,为更好的掌握Elasticsearch的相关知识,也是在测试环境先搭建了EK(Elasticsearch-Kibana)集群用于学习,在初期安装部署中也是遇到一系列Elasticsearch相关问题,为此对遇到的问题及解决办法进行整理,后续还会对此块内容进行更新补充。
二、Elasticsearch介绍
1、Elasticsearch是搜索引擎
Elasticsearch在搜索引擎数据领域长期排名第一,Elasticsearch内核基于Lucene构建,支持全文搜索。Elasticsearch支持全文搜索,但在很多项目组中常被用于精确查询加速,查询条件多、速度快且可以任意组合,有些甚至常用Elasticsearch做Redis、Hbase等数据库的二级索引。
2、Elasticsearch是数据库
Elasticsearch不属于关系型数据库,其内部更新采用乐观锁、也无关系型数据库的ACID事务特性。Elasticsearch使用JSON格式承载数据模型,更类似文档数据库,相较于MongoDB,其更擅长基于查询搜索的分析型数据库。
三、Elasticsearch常用领域
1、全文检索
对比传统的Solr,Elasticsearch也是基于Lucene实现,是对Lucene进行二次封装,对Lucene调用进行了优化,但Elasticsearch更重量级,在分布式场景中表现更优。
Elasticsearch支持文件的上传、下载,可根据关键字搜索出相关文件。
2、应用查询
Elasticsearch擅长查询,这得益于其倒排索引核心算法,相较于基于B-Tree类型数据库查询性能更优,尤其是在数据量很大时,检索效率非常明显。
3、大数据应用
在大数据领域,Elasticsearch应用非常广泛,是大数据对外提供查询重要组成部分。Elasticsearch在大数据分析领域提供基于列示存储数据聚合、所支持的聚合功能甚多、且性能优异。
4、日志检索
作为ELK(Elasticsearch-Logstash-Kibana)日志检索三剑客之一,Elasticsearch起步于全文检索,加之其分布式架构特性,尤其适用海量日志快速检索。
5、监控领域
》Elasticsearch利用其倒排索引核心算法,加之日益强大的Elastic Stack生态圈,Elasticsearch也是支持众多时序数据场景,且性能不输众多时序数据库,所以使用Elasticsearch相关监控也是很好的选择。
6、人工智能-机器学习
今年来AI人工智能风头强劲,尤其是chatGPT推出以来,人工智能更是在众多领域广泛应用,Elasticsearch从6.3版本推出机器学习的功能,随着Elasticsearch版本的发展,其机器学习功能也更加强大,能高效提高检测数据质量,减少人力成本。
四、常见启动故障及解决办法
本部分总结了Elasticsearch常见启动故障及相应解决办法,后续会逐步更新本部分内容。
1、java.nio.file.AccessDeniedException故障及处理办法
**问题原因:
由于权限问题导致启动失败,原因是我在elasticsearch/conf/elasticsearch.yml中设置了path.data和path.logs,ES启动建议使用普通用户启动,root权限过大,初期未给path.data和path.logs设置普通用户属组,导致启动失败。
解决办法:
给path.data和path.logs设置普通用户属组。
报错日志:
[root@node1 bin]# su es [es@node1 bin]$ cd /usr/local/elasticsearch/bin [es@node1 bin]$ ./elasticsearch warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME ./elasticsearch: line 70: -Xms8g -Xmx8g: command not found Exception in thread "main" java.lang.NullPointerException at java.base/java.util.Objects.requireNonNull(Objects.java:221) at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:178) at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.base/java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet.lambda$entryConsumer$0(Collections.java:1574) at java.base/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1746) at java.base/java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator.forEachRemaining(Collections.java:1599) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at org.elasticsearch.tools.launchers.JvmOptionsParser.substitutePlaceholders(JvmOptionsParser.java:185) at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:133) at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:86) [es@node1 bin]$ [es@node1 bin]$ [es@node1 bin]$ [es@node1 bin]$ ./elasticsearch warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release. 2023-04-19 13:57:10,610 main ERROR Unable to create file /elk/logs/elk-cluster_deprecation.log java.io.IOException: Permission denied at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method) at java.base/java.io.File.createNewFile(File.java:1024) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:733) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:716) at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114) at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:217) at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146) at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62) at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122) at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037) at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651) at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247) at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293) at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626) at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:302) at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:222) at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:118) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:369) at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:169) at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:160) at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77) at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112) at org.elasticsearch.cli.Command.main(Command.java:77) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:125) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) 2023-04-19 13:57:10,614 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@3fa2213] unable to create manager for [/elk/logs/elk-cluster_deprecation.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@3e7634b9[pattern=/elk/logs/elk-cluster_deprecation-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[SizeBasedTriggeringPolicy(size=1073741824)]), strategy=DefaultRolloverStrategy(min=1, max=4, useMax=true), advertiseURI=null, layout=[%d{ISO8601}][%-5p][%-25c{1.}] [%node_name] [%product_origin]%marker %m%n, filePermissions=null, fileOwner=null]] java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@3fa2213] unable to create manager for [/elk/logs/elk-cluster_deprecation.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@3e7634b9[pattern=/elk/logs/elk-cluster_deprecation-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[SizeBasedTriggeringPolicy(size=1073741824)]), strategy=DefaultRolloverStrategy(min=1, max=4, useMax=true), advertiseURI=null, layout=[%d{ISO8601}][%-5p][%-25c{1.}] [%node_name] [%product_origin]%marker %m%n, filePermissions=null, fileOwner=null]] at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:116) at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:217) at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146) at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62) at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122) at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037) at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651) at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247) at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293) at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626) at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:302) at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:222) at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:118) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:369) at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:169) at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:160) at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77) at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112) at org.elasticsearch.cli.Command.main(Command.java:77) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:125) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) 2023-04-19 13:57:10,615 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:236) at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:134) at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037) at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651) at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247) at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293) at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626) at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:302) at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:222) at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:118) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:369) at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:169) at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:160) at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77) at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112) at org.elasticsearch.cli.Command.main(Command.java:77) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:125) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) 2023-04-19 13:57:10,627 main ERROR Unable to create file /elk/logs/elk-cluster_server.json java.io.IOException: Permission denied at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method) at java.base/java.io.File.createNewFile(File.java:1024) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:733) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:716) at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:114) at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100) at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:217) at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146) at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62) at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122) at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1120) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1045) at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1037) at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:651) at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:247) at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:293) at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:626) at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:302) at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:222) at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:118) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:369) at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:169) at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:160) at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77) at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112) at org.elasticsearch.cli.Command.main(Command.java:77) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:125) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80)
复制
2、BindTransportException故障及处理办法
问题原因:
该问题由于在elasticsearch/config/elasticsearch.yml设置了network.host: 192.168.0.0,导致无法分配请求的地址。
解决办法:
修改network.host:本机IP地址,如network.host:192.168.17.36,每台es服务器elasticsearch.yml的network.host要对应本机的IP地址。
报错日志:
[2023-04-19T14:04:43,766][INFO ][o.e.n.Node ] [node1] initialized [2023-04-19T14:04:43,766][INFO ][o.e.n.Node ] [node1] starting ... [2023-04-19T14:04:43,774][INFO ][o.e.x.s.c.f.PersistentCache] [node1] persistent cache index loaded [2023-04-19T14:04:43,775][INFO ][o.e.x.d.l.DeprecationIndexingComponent] [node1] deprecation component started [2023-04-19T14:04:43,949][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [node1] uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: BindTransportException[Failed to bind to 192.168.0.0:[9300-9400]]; nested: BindException[Cannot assign requested address]; at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:173) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:160) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112) ~[elasticsearch-cli-7.17.9.jar:7.17.9] at org.elasticsearch.cli.Command.main(Command.java:77) ~[elasticsearch-cli-7.17.9.jar:7.17.9] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:125) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) ~[elasticsearch-7.17.9.jar:7.17.9] Caused by: org.elasticsearch.transport.BindTransportException: Failed to bind to 192.168.0.0:[9300-9400] at org.elasticsearch.transport.TcpTransport.bindToPort(TcpTransport.java:450) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.transport.TcpTransport.bindServer(TcpTransport.java:411) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.transport.netty4.Netty4Transport.doStart(Netty4Transport.java:140) ~[?:?] at org.elasticsearch.xpack.core.security.transport.netty4.SecurityNetty4Transport.doStart(SecurityNetty4Transport.java:96) ~[?:?] at org.elasticsearch.xpack.security.transport.netty4.SecurityNetty4ServerTransport.doStart(SecurityNetty4ServerTransport.java:59) ~[?:?] at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:48) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.transport.TransportService.doStart(TransportService.java:318) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:48) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.node.Node.start(Node.java:1175) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:335) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:443) ~[elasticsearch-7.17.9.jar:7.17.9] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:169) ~[elasticsearch-7.17.9.jar:7.17.9] ... 6 more Caused by: java.net.BindException: Cannot assign requested address at sun.nio.ch.Net.bind0(Native Method) ~[?:?] at sun.nio.ch.Net.bind(Net.java:461) ~[?:?] at sun.nio.ch.Net.bind(Net.java:453) ~[?:?] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227) ~[?:?] at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:134) ~[?:?] at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:562) ~[?:?] at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491) ~[?:?] at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973) ~[?:?] at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:260) ~[?:?] at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356) ~[?:?] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[?:?] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) ~[?:?] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[?:?] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[?:?] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[?:?] at java.lang.Thread.run(Thread.java:834) [?:?] uncaught exception in thread [main] BindTransportException[Failed to bind to 192.168.0.0:[9300-9400]]; nested: BindException[Cannot assign requested address]; Likely root cause: java.net.BindException: Cannot assign requested address at java.base/sun.nio.ch.Net.bind0(Native Method) at java.base/sun.nio.ch.Net.bind(Net.java:461) at java.base/sun.nio.ch.Net.bind(Net.java:453) at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227) at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:134) at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:562) at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334) at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506) at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491) at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973) at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:260) at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at java.base/java.lang.Thread.run(Thread.java:834) For complete error details, refer to the log at /elk/logs/elk-cluster.log [2023-04-19T14:04:44,798][INFO ][o.e.n.Node ] [node1] stopping ... [2023-04-19T14:04:44,809][INFO ][o.e.n.Node ] [node1] stopped [2023-04-19T14:04:44,810][INFO ][o.e.n.Node ] [node1] closing ... [2023-04-19T14:04:44,820][INFO ][o.e.n.Node ] [node1] closed [2023-04-19T14:04:44,822][INFO ][o.e.x.m.p.NativeController] [node1] Native controller process has stopped - no new native processes can be started
复制
**3、memory locking requested for elasticsearch process but memory is not locked故障及处理办法
**报错原因:
请求内存锁定,但内存未锁定导致,此问题和参数配置有关。
我在部署了ES后,希望通过服务的方式来启停es,创建了服务配置文件,内容如下:
cat > /usr/lib/systemd/system/elasticsearch.service << EOF [Unit] Description=Elasticsearch Wants=network-online.target After=network-online.target [Service] User=es Group=es ExecStart=/usr/local/elasticsearch/bin/elasticsearch ExecReload=/bin/kill -HUP \$MAINPID LimitNOFILE=65535 KillMode=process Restart=no-failure [Install] WantedBy=multi-user.target EOF
复制
然后执行如下命令:
[root@node1 bin]# /bin/systemctl daemon-reload [root@node1 bin]# /bin/systemctl enable elasticsearch.service [root@node1 bin]# /bin/systemctl start elasticsearch.service
复制
但在启动时报内存未锁定,启动失败。
**解决办法:
我首先尝试修改了elasticsearch/config下jvm.options文件,将-Xms4g及-Xmx4g取消前面注释,然后重新启动es服务,依然报同样错误。
后来查阅网上资料,修改/usr/lib/systemd/system/elasticsearch.service配置文件,在[Service]块中设置LimitMEMLOCK=infinity,此步骤操作后需要重新执行/bin/systemctl daemon-reload,然后启动es服务,这次启动成功。
报错日志:
[2023-04-19T14:29:17,769][INFO ][o.e.n.Node ] [192.168.17.36] initialized [2023-04-19T14:29:17,769][INFO ][o.e.n.Node ] [192.168.17.36] starting ... [2023-04-19T14:29:17,776][INFO ][o.e.x.s.c.f.PersistentCache] [192.168.17.36] persistent cache index loaded [2023-04-19T14:29:17,777][INFO ][o.e.x.d.l.DeprecationIndexingComponent] [192.168.17.36] deprecation component started [2023-04-19T14:29:17,880][INFO ][o.e.t.TransportService ] [192.168.17.36] publish_address {192.168.17.36:9300}, bound_addresses {192.168.17.36:9300} [2023-04-19T14:29:18,017][INFO ][o.e.b.BootstrapChecks ] [192.168.17.36] bound or publishing to a non-loopback address, enforcing bootstrap checks [2023-04-19T14:29:18,022][ERROR][o.e.b.Bootstrap ] [192.168.17.36] node validation exception [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. bootstrap check failure [1] of [1]: memory locking requested for elasticsearch process but memory is not locked [2023-04-19T14:29:18,026][INFO ][o.e.n.Node ] [192.168.17.36] stopping ... [2023-04-19T14:29:18,045][INFO ][o.e.n.Node ] [192.168.17.36] stopped [2023-04-19T14:29:18,045][INFO ][o.e.n.Node ] [192.168.17.36] closing ... [2023-04-19T14:29:18,057][INFO ][o.e.n.Node ] [192.168.17.36] closed [2023-04-19T14:29:18,058][INFO ][o.e.x.m.p.NativeController] [192.168.17.36] Native controller process has stopped - no new native processes can be started
复制
五、总结
本次操作主要是基于Elasticsearch 7在Rocky 8操作系统上安装部署启动时所遇到的问题。
作为Elasticsearch日常运维管理的一部分,后续会根据日常生产及测试中的经验总结更多Elasticsearch相关知识进行输出,敬请期待。
千里之行,始于足下。