安裝elasticsearch遇到的各種問題
以下是我安裝elasticsearch遇到的問題一個清單
- future versions of Elasticsearch will require Java 11; your Java version from [/root/training/jdk1.8.0_181/jre] does not meet this requirement
- java.lang.RuntimeException: can not run elasticsearch as root
- OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
- 本地實體機不能用IP通路elasticsearch但是可以使用127.0.0.1:9200可以通路
- 外部實體機通路不了elasticsearch
-
修改是外部通路elasticsearch的參數network-host後,報錯:
[2020-10-28T09:58:03,528][INFO ][o.e.b.BootstrapChecks ] [bigdata111] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [3] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
-
解決完以上的配置之後又報:[3]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, c
luster.initial_master_nodes] must be configured
以下是我再Linux下安裝elasticsearch步驟和發現到上邊的問題的總結和解決辦法
在Elasticsearch Service上建立部署時,将自動設定一個主節點和兩個資料節點。通過從tar存檔安裝,您可以在本地啟動Elasticsearch的多個執行個體,以檢視多節點叢集的行為。
這裡首先使用root使用者操作的,而且我再root的目錄下建立了倆個目錄,分别是tools和training,
tools是用來放置各種安裝包的,training是防止各種解壓檔案的
- 下載下傳elasticsearch
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
- 解壓elasticsearch
tar -zxvf https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz -C ../training/
- 解壓完進入bin目錄啟動以下elasticsearch
./elasticsearch
在執行完這句話的時候我們就碰到了第一個問題:future versions of Elasticsearch will require Java 11; your Java version from [/root/training/jdk1.8.0_181/jre] does not meet this requirement
單然下邊還有好多日志,我們一個一個的解決。這個報錯的意思機庫是這個版本的elastic search需要的是java11,而你的jdk版本是1.8的,和我們目前需要的版本不比對。
這個是因為我在Linux是安裝了jdk1.8的,而我們下載下傳的這個elastic search需要的jdk是11的,我們其實不需要單獨的下載下傳一個jdk11,因為在elasticsearch中已經有一個jdk了。如下圖所示:
因為我們在Linux配置了JAVA_HOME是以預設的elasticsearch就隻是使用了我們1.8的jdk,我們隻需讓elasticsearch通路它自帶的jdk就可以了,我們需要修改指令腳本安裝elasticsearch遇到的各種問題安裝elasticsearch遇到的各種問題
[[email protected] bin]# vi elasticsearch
添加以下幾行内容
#配置自己的jdk11
export JAVA_HOME=/root/elasticsearch-7.6.2/
export PATH=$JAVA_HOME/bin:$PATH
#添加jdk判斷
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/root/elasticsearch-7.6.2/jdk/bin/java"
else
JAVA=`which java`
fi
這裡有一點問題需要注意:
第一個問題就是這段代碼必須放在腳本的最開始的位置
第二個問題就是其實在一開始解壓elasticsearch的位置我就弄的不合理了,是以這裡的路徑雖然是填對了,但是後續會有問題的,我們在介紹後續的問題的時候再說明一次這個問題。這裡就不講了,将錯就錯了。
6. 修改了上一個問題後我們繼續執行./elasticsearch的指令,報錯如下:
java.lang.RuntimeException: can not run elasticsearch as root
這個報錯提示不讓以root使用者來啟動elasticsearch,以前記得可以從一個配置檔案裡修改允許root使用者的,但是忘了不知道在哪兒改了,是以現在我們建立其他的使用者再執行啟動指令啟動elasticsearch,建立使用者如下:
# 以root使用者來建立新的使用者 , groupadd 添加一個使用者組
[[email protected] home]# groupadd elasticsearch
# 添加一個使用者,-g是在使用者組下 -p是密碼
[[email protected] home]# useradd elasticsearch -g elasticsearch -p elasticsearch
# 進入es的安裝目錄
[[email protected] home]# cd /home/elasticsearch
# 給使用者elasticsearch 授權
[[email protected] home]# chown -R elasticsearch:elasticsearch elasticsearch-7.6.2/
# 切換到 elasticsearch 使用者
[[email protected] elasticsearch]# su elasticsearch
然後我們再執行./elasticsearch 啟動,發現依然報錯,說/root/elasticsearch-7.6.2/jdk/bin/java找不到,
這個是因為我們切換了使用者elasticsearch後沒有權限通路root目錄,是以找不到jdk。是以我們需要把elasticsearch-7.6.2移動到其他的位置,我移動到了opt的目錄下,并修改了啟動腳本中的jdk的路徑,然後重新設定以下elasticsearch使用者的通路權限。然後再執行./elasticsearch指令,啟動的時候稍微有些錯誤但是不影響啟動。這些錯誤就是建議你擴充以下虛拟記憶體啥的。
7. 然後把防火牆關掉,不然外邊實體主機通路的時候會被elastic search通路的主機把端口給牆掉
然後我們從外邊的浏覽器通路,發現根本通路不了,然後我們使用curl在本機通路elasticsearch隻有127.0.0.1:9200能正常通路,但是使用IP:9200就不能正常通路了。這個是因為我們配置檔案中預設隻允許127.0.0.1通路,我需要修改config下的elasticsearch.yml中的參數
如果隻修改第一個參數會報一些其他的錯誤,如下 :
[2020-10-28T10:32:06,340][INFO ][o.e.b.BootstrapChecks ] [bigdata111] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [1] bootstrap checks failed
ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[1]: 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參數中的一個參數
然後我們修改以下就可以了
添加config配置:
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 2048
* soft memlock unlimited
* hard memlock unlimited
這個需改完了需要切換使用者生效,這個不着急切換使用者,先用root使用者修改
vi /etc/sysctl.conf
vm.max_map_count=262144
修改後執行如下指令 sysctl -p
以上我也看了以下其他人的參考,我把一個比較全的位址貼在這裡,我不是完全按照它來做的:
連結: link.
然後我們在elasticsearch.yml的
配置以下後啟動elasticsearch就可以正常通路了。
然後我們再下載下傳一個windows的kibana管理互動工具和elasticsearch進行互動,需要注意的是kibana的版本一定要和elasticsearch的版本一緻
https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-windows-x86_64.zip
下載下傳這個就可以了,下載下傳完成後解壓,修改配置檔案連接配接elasticsearch配置檔案
啟動就可以了。