Elasticsearch安装

一、安装ElasticSearch

1、到 /usr/local/ 下执行下载命令:
root@jiguiquan:/usr/local# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.8.tar.gz
2、下载成功后解压:
root@jiguiquan:/usr/local# tar -zxvf elasticsearch-5.6.8.tar.gz
3、解压成功后,可以直接进入 .bin/ 目录下执行启动命令:
root@jiguiquan:/usr/local/elasticsearch-5.6.8/bin# ./elasticsearch
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 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 2060255232 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/elasticsearch-5.6.8/bin/hs_err_pid38314.log

明显,报错了,这是遇到的第一个坑,以下一步步地记录并解决坑:

坑一:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 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 2060255232 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/elasticsearch-5.6.8/bin/hs_err_pid38314.log

原因分析,JVM内存不足,ES的启动参数要求太高,进入:

root@jiguiquan:/usr/local/elasticsearch-5.6.8/config# vi jvm.options 
将 -Xms2g -Xmx2g   修改为   -Xms128M -Xmx128M
坑二:再次尝试启动ES:
root@jiguiquan:/usr/local/elasticsearch-5.6.8# ./bin/elasticsearch
[2019-11-08T20:28:47,855][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-5.6.8.jar:5.6.8]
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) ~[elasticsearch-5.6.8.jar:5.6.8]
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:70) ~[elasticsearch-5.6.8.jar:5.6.8]
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) ~[elasticsearch-5.6.8.jar:5.6.8]
	at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-5.6.8.jar:5.6.8]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.6.8.jar:5.6.8]
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.6.8.jar:5.6.8]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
	at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.8.jar:5.6.8]
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.8.jar:5.6.8]
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) ~[elasticsearch-5.6.8.jar:5.6.8]
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) ~[elasticsearch-5.6.8.jar:5.6.8]
	... 6 more

原因分析:为了安装,ES默认是不可以使用 root 账户启动的,所以我们需要使用一个 非root 用户来启动它:

将ElasticSearch目录的所有权给jiguiquan用户,然后以jiguiquan用户进行操作:
root@jiguiquan:/usr/local# chown -R jiguiquan:jiguiquan elasticsearch-5.6.8
root@jiguiquan:/usr/local# su jiguiquan
jiguiquan@jiguiquan:/usr/local$ ll
total 33040
drwxr-xr-x 12 root      root          4096 Nov  8 20:20 ./
drwxr-xr-x 10 root      root          4096 Sep 30 18:45 ../
drwxr-xr-x  2 root      root          4096 Apr 21  2016 bin/
drwxr-xr-x  8 jiguiquan jiguiquan     4096 Nov  8 20:28 elasticsearch-5.6.8/
-rw-r--r--  1 root      root      33781024 May 15  2018 elasticsearch-5.6.8.tar.gz
drwxr-xr-x  2 root      root          4096 Apr 21  2016 etc/
drwxr-xr-x  2 root      root          4096 Apr 21  2016 games/
drwxr-xr-x  2 root      root          4096 Apr 21  2016 include/
drwxrwxrwx  3 root      root          4096 Sep 30 12:44 java/
drwxr-xr-x  3 root      root          4096 Sep 30 18:45 lib/
lrwxrwxrwx  1 root      root             9 Sep 30 18:45 man -> share/man/
drwxr-xr-x  2 root      root          4096 Apr 21  2016 sbin/
drwxr-xr-x  6 root      root          4096 Sep 30 18:49 share/
drwxr-xr-x  2 root      root          4096 Apr 21  2016 src/

坑三:再次启动,貌似就可以启动成功了,但是外部机器是访问不到此elasticSearch的9200端口的:
jiguiquan@jiguiquan:/usr/local/elasticsearch-5.6.8/bin$ ./elasticsearch
[2019-11-08T20:37:47,440][INFO ][o.e.n.Node               ] [] initializing ...
[2019-11-08T20:37:47,612][INFO ][o.e.e.NodeEnvironment    ] [zId8-Ym] using [1] data paths, mounts [[/ (/dev/mapper/jiguiquan--vg-root)]], net usable_space [24gb], net total_space [27.9gb], spins? [possibly], types [ext4]
[2019-11-08T20:37:47,614][INFO ][o.e.e.NodeEnvironment    ] [zId8-Ym] heap size [123.7mb], compressed ordinary object pointers [true]
[2019-11-08T20:37:47,616][INFO ][o.e.n.Node               ] node name [zId8-Ym] derived from node ID [zId8-Ym7TnOnVjKaumrA2g]; set [node.name] to override
[2019-11-08T20:37:47,617][INFO ][o.e.n.Node               ] version[5.6.8], pid[38455], build[688ecce/2018-02-16T16:46:30.010Z], OS[Linux/4.4.0-21-generic/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_211/25.211-b12]
[2019-11-08T20:37:47,618][INFO ][o.e.n.Node               ] JVM arguments [-Xms128M, -Xmx128M, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djdk.io.permissionsUseCanonicalPath=true, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j.skipJansi=true, -XX:+HeapDumpOnOutOfMemoryError, -Des.path.home=/usr/local/elasticsearch-5.6.8]
[2019-11-08T20:37:48,857][INFO ][o.e.p.PluginsService     ] [zId8-Ym] loaded module [aggs-matrix-stats]
[2019-11-08T20:37:48,858][INFO ][o.e.p.PluginsService     ] [zId8-Ym] loaded module [ingest-common]
[2019-11-08T20:37:48,859][INFO ][o.e.p.PluginsService     ] [zId8-Ym] loaded module [lang-expression]
[2019-11-08T20:37:48,860][INFO ][o.e.p.PluginsService     ] [zId8-Ym] loaded module [lang-groovy]
[2019-11-08T20:37:48,866][INFO ][o.e.p.PluginsService     ] [zId8-Ym] loaded module [lang-mustache]
[2019-11-08T20:37:48,867][INFO ][o.e.p.PluginsService     ] [zId8-Ym] loaded module [lang-painless]
[2019-11-08T20:37:48,868][INFO ][o.e.p.PluginsService     ] [zId8-Ym] loaded module [parent-join]
[2019-11-08T20:37:48,868][INFO ][o.e.p.PluginsService     ] [zId8-Ym] loaded module [percolator]

但是外部机器无法访问到此ElasticSearch:

image.png

原因分析:一般情况下web服务都是默认监听本地的地址,例如ES会监听127.0.0.1:9200,如果从别的主机来访问,那就需要重新设置监听地址。因此需要修改ES配置文件更改其监听地址。具体修改如下:在ES的配置文件/config/elasticsearch.yml 中增加配置项:

network.host: 0.0.0.0
坑四:再次启动,又会报以下的错:
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2019-11-08T20:43:42,619][INFO ][o.e.n.Node               ] [zId8-Ym] stopping ...
[2019-11-08T20:43:42,638][INFO ][o.e.n.Node               ] [zId8-Ym] stopped
[2019-11-08T20:43:42,639][INFO ][o.e.n.Node               ] [zId8-Ym] closing ...
[2019-11-08T20:43:42,661][INFO ][o.e.n.Node               ] [zId8-Ym] closed

原因分析:elasticsearch用户拥有的内存权限太小,至少需要262144;

调大即可:
jiguiquan@jiguiquan:/usr/local/elasticsearch-5.6.8/bin$ sudo sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144

再次运行:

jiguiquan@jiguiquan:/usr/local/elasticsearch-5.6.8/bin$ ./elasticsearch
[2019-11-08T20:46:17,088][INFO ][o.e.n.Node               ] [] initializing ...
[2019-11-08T20:46:17,184][INFO ][o.e.e.NodeEnvironment    ] [zId8-Ym] using [1] data paths, mounts [[/ (/dev/mapper/jiguiquan--vg-root)]], net usable_space [24gb], net total_space [27.9gb], spins? [possibly], types [ext4]
[2019-11-08T20:46:17,185][INFO ][o.e.e.NodeEnvironment    ] [zId8-Ym] heap size [123.7mb], compressed ordinary object pointers [true]
[2019-11-08T20:46:17,187][INFO ][o.e.n.Node               ] node name [zId8-Ym] derived from node ID [zId8-Ym7TnOnVjKaumrA2g]; set [node.name] to override
[2019-11-08T20:46:17,188][INFO ][o.e.n.Node               ] version[5.6.8], pid[38609], build[688ecce/2018-02-16T16:46:30.010Z], OS[Linux/4.4.0-21-generic/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_211/25.211-b12]
[2019-11-08T20:46:17,189][INFO ][o.e.n.Node               ] JVM arguments [-Xms128M, -Xmx128M, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -Djdk.io.permissionsUseCanonicalPath=true, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Dlog4j.skipJansi=true, -XX:+HeapDumpOnOutOfMemoryError, -Des.path.home=/usr/local/elasticsearch-5.6.8]
[2019-11-08T20:46:18,274][INFO ][o.e.p.PluginsService     ] [zId8-Ym] loaded module [aggs-matrix-stats]

正常启动,并且外部也可以直接访问此ElasticSearch啦:

image.png

安装终于完成,不容易!!!

简单使用还是方法下一篇吧!


jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐