Elasticsearch安装启动常见问题

目录

Elasticsearch安装启动常见问题

elasticsearch解决JDK版本不一致问题

To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].

org.elasticsearch.bootstrap.StartupException: BindTransportException[Failed to bind to 118.190.99.77:[9300-9400]]; nested: BindException[Cannot assign requested address]

 the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

java.lang.RuntimeException: can not run elasticsearch as root

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

特别注意


elasticsearch解决JDK版本不一致问题

[root@iZm5e3euwwjtgvn8yh8gb0Z bin]# ./elasticsearch
Future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_271-amd64/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
Future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_271-amd64/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ca660000, 899284992, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 899284992 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid12720.log
以上报错信息,指明服务器本身的jdk版本和es需要的版本不一致。es本身有自带jdk,如果服务器环境有安装了jdk,则优先使用服务器已安装的jdk。

解决方法:下载jdk11,上传到服务器,修改配置文件中的jdk路径

#set jdk enviroment
export JAVA_HOME=/home/jdk11/jdk11
export PATH=$JAVA_HOME:$PATH

#judge jdk existion
if [ -x "$JAVA_HOME/bin/java" ]; then
   JAVA="/home/jdk11/jdk11"
else
   JAVA=`which java`
fi
 

To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].

详细报错信息

ElasticsearchException[Failure running machine learning native code. This could be due to running on an unsupported OS or distribution, missing OS libraries, or a problem with the temp directory. To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].]
        at org.elasticsearch.xpack.ml.MachineLearning.createComponents(MachineLearning.java:700)
        at org.elasticsearch.node.Node.lambda$new$16(Node.java:560)
        at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
        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.node.Node.<init>(Node.java:564)
        at org.elasticsearch.node.Node.<init>(Node.java:278)

解解方法:修改config目录下的elasticsearch.yml文件,增加一条配置xpack.ml.enabled: false

org.elasticsearch.bootstrap.StartupException: BindTransportException[Failed to bind to 118.190.99.77:[9300-9400]]; nested: BindException[Cannot assign requested address]

详细报错信息

[2021-02-18T16:17:36,572][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [iZm5e3euwwjtgvn8yh8gb0Z] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: BindTransportException[Failed to bind to 118.190.99.77:[9300-9400]]; nested: BindException[Cannot assign requested address];
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:75) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:116) ~[elasticsearch-cli-7.11.0.jar:7.11.0]
        at org.elasticsearch.cli.Command.main(Command.java:79) ~[elasticsearch-cli-7.11.0.jar:7.11.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81) ~[elasticsearch-7.11.0.jar:7.11.0]
Caused by: org.elasticsearch.transport.BindTransportException: Failed to bind to 118.190.99.77:[9300-9400]
        at org.elasticsearch.transport.TcpTransport.bindToPort(TcpTransport.java:405) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.transport.TcpTransport.bindServer(TcpTransport.java:369) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.transport.netty4.Netty4Transport.doStart(Netty4Transport.java:120) ~[?:?]
        at org.elasticsearch.xpack.core.security.transport.netty4.SecurityNetty4Transport.doStart(SecurityNetty4Transport.java:85) ~[?:?]
        at org.elasticsearch.xpack.security.transport.netty4.SecurityNetty4ServerTransport.doStart(SecurityNetty4ServerTransport.java:47) ~[?:?]
        at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:48) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.transport.TransportService.doStart(TransportService.java:261) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:48) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.node.Node.start(Node.java:819) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:310) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:396) ~[elasticsearch-7.11.0.jar:7.11.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.11.0.jar:7.11.0]
        ... 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:550) ~[?:?]
        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:248) ~[?:?]
        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:472) ~[?:?]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[?:?]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[?:?]
        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 118.190.99.77:[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:550)
        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:248)
        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:472)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at java.base/java.lang.Thread.run(Thread.java:834)

解决方法:

修改config/elasticsearch.yml文件,设置network.host: 0.0.0.0即可

 the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
 

意思是需要 有默认的配置给生产环境使用,discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes,这三个至少要配置一个。

解决方法:

这个配置在上面一个问题,我们有发现了这个配置,如下截图

添加发现主机地址

discovery.seed_hosts: ["你的服务器ip:9300"]

保存退出即可

java.lang.RuntimeException: can not run elasticsearch as root

详细报错信息
java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:100)
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:167)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:387)
        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:75)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:116)
        at org.elasticsearch.cli.Command.main(Command.java:79)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81)
For complete error details, refer to the log at /home/es/elasticsearch-7.11.0/logs/elasticsearch.log

解决方法:

elasticsearch启动,不能用root用户,创建一个新用户,使用chown命令,修改拥有者为新用户,重启即可。
 

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法:

切换到root用户,因为要修改/etc/sysctl.conf或者用sudo vi /etc/sysctl.conf,修改文件,再文件末尾加上vm.max_map_count=655360。

并执行sysctl -p,使修改文件部分生效

重启即可 

特别注意

以上问题,再修改后,我们会进行./elasticsearch ,进行启动es,又会发现报错,重复启动,会造成es进程已经在后台运行。

所以修改完配置后,要查看下进程,并杀死进程,再重启。

ps -ef|grep elasticsearch

kill -9 pid

猜你喜欢

转载自blog.csdn.net/u012373281/article/details/113842844