注:筆者是在centos云服務(wù)器環(huán)境下安裝的Elasticsearch
目錄
1.安裝前準(zhǔn)備
2.下載Elasticsearch
?3.啟動Elasticsearch 非常容易出問題
?第一次運行時,可能出現(xiàn)如下錯誤:
一、內(nèi)存不足原因啟動失敗
二、使用root用戶啟動問題
三、啟動ES自動被killed
四、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
五、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
后續(xù)在使用中遇到問題也會持續(xù)更新……
1.安裝前準(zhǔn)備
至少需要jdk版本8以上的java環(huán)境,筆者安裝的elasticsearch需要jdk11及以上的java環(huán)境。大家可以去Oracle官網(wǎng)下載合適的環(huán)境
Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#java17jdk安裝教程可以查看這篇文章,筆者也是按照這篇文章的第二個方法安裝的
Linux系統(tǒng)下安裝Java環(huán)境(史上最簡單沒有之一)_linux下載java-CSDN博客https://blog.csdn.net/qq_43329216/article/details/118385502
2.下載Elasticsearch
?推薦在 /usr/local 路徑下 運行以下命令,來下載Elasticsearch壓縮包
# 下載
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz
# 解壓
tar -xvf elasticsearch-7.11.1-linux-x86_64.tar.gz
?3.啟動Elasticsearch 非常容易出問題
cd elasticsearch-7.11.1/bin
./elasticsearch
?第一次運行時,可能出現(xiàn)如下錯誤:
一、內(nèi)存不足原因啟動失敗
Exception in thread "main" java.lang.RuntimeException: starting java failed with [1] output:
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 899678208 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid653.log error: Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ca600000, 899678208, 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:135)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:86)
原因:ES默認(rèn)的分配內(nèi)存超出了空閑內(nèi)存的大小,所以出現(xiàn)內(nèi)存不足無法啟動的現(xiàn)象。
解決方案:先查看系統(tǒng)內(nèi)容情況,根據(jù)需要修改內(nèi)存大小
使用 free -h 命令,查看系統(tǒng)內(nèi)容情況
[es@FrankZhang bin]$ free -h
total used free shared buff/cache available
Mem: 1.8G 982M 393M 696K 462M 706M
Swap: 0B 0B 0B
?查看 available 大小修改配置文件里的參數(shù)大小
vim config/jvm.options
里面有兩個參數(shù)
## -Xms2g
## -Xmx2g
將這兩個參數(shù)修改為合適的大小即可,如果修改完后運行還不行,那就需要繼續(xù)調(diào)整。推薦512m或128m即可
-Xmx128m
二、使用root用戶啟動問題
[2018-12-11T12:53:33,473][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:127) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:114) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) ~[elasticsearch-5.5.1.jar:5.5.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:194) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:351) ~[elasticsearch-5.5.1.jar:5.5.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:123) ~[elasticsearch-5.5.1.jar:5.5.1]
... 6 more
原因:ElasticSearch不允許直接通過 root 來登錄
解決方案:需要另外設(shè)置一個賬戶來啟動
adduser es
passwd es
# 賦予es用戶權(quán)限
chown -R es:es elasticsearch-7.11.1/
chmod 770 elasticsearch-7.11.1/
# root 用戶切換到 es 用戶
su es
使用這個 es 用戶去啟動,就可以解決上面的問題。
三、啟動ES自動被killed
[es@FrankZhang bin]$ ./elasticsearch
Killed
原因:服務(wù)器可用內(nèi)存沒有達到ES虛擬機所需內(nèi)存的默認(rèn)值或者是目前系統(tǒng)緩存占用很大
解決方案:超過默認(rèn)值就是上面第一個問題,目前系統(tǒng)緩存占用大可以用下面的命令來回收buffer/cache
echo 1 > /proc/sys/vm/drop_caches # 僅清除頁面緩存
echo 2 > /proc/sys/vm/drop_caches # 清除目錄項和inode
echo 3 > /proc/sys/vm/drop_caches # 清除頁面緩存、目錄項以及inode
四、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
注:這個和上面的內(nèi)存不足不是同一種問題
原因:elasticsearch 用戶擁有的內(nèi)存權(quán)限太小。至少需要262144
解決方案:編輯 /etc/sysctl.conf 文件
# 在最后添加一行
vm.max_map_count=262144
# 保存退出后需要讓配置生效
sysctl -p
五、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
原因:缺少默認(rèn)配置
解決方案:文章來源:http://www.zghlxwxcb.cn/news/detail-736311.html
至少需要配置三個中的一個參數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-736311.html
- discovery.seed_hosts:集群主機列表
- discovery.seed_providers: 基于配置文件配置集群主機列表
- cluster.initial_master_nodes: 啟動時初始化的參與選主的node,生產(chǎn)環(huán)境必填
后續(xù)在使用中遇到問題也會持續(xù)更新……
到了這里,關(guān)于安裝Elasticsearch步驟(包含遇到的問題及解決方案)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!