天天看點

安裝elasticsearch遇到的各種問題安裝elasticsearch遇到的各種問題

安裝elasticsearch遇到的各種問題

以下是我安裝elasticsearch遇到的問題一個清單

  1. future versions of Elasticsearch will require Java 11; your Java version from [/root/training/jdk1.8.0_181/jre] does not meet this requirement
  2. java.lang.RuntimeException: can not run elasticsearch as root
  3. OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
  4. 本地實體機不能用IP通路elasticsearch但是可以使用127.0.0.1:9200可以通路
  5. 外部實體機通路不了elasticsearch
  6. 修改是外部通路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]

  7. 解決完以上的配置之後又報:[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是防止各種解壓檔案的

  1. 下載下傳elasticsearch
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
           
  1. 解壓elasticsearch
tar -zxvf https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz -C ../training/
           
  1. 解壓完進入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了。如下圖所示:

    安裝elasticsearch遇到的各種問題安裝elasticsearch遇到的各種問題
    因為我們在Linux配置了JAVA_HOME是以預設的elasticsearch就隻是使用了我們1.8的jdk,我們隻需讓elasticsearch通路它自帶的jdk就可以了,我們需要修改指令腳本
[[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中的參數

安裝elasticsearch遇到的各種問題安裝elasticsearch遇到的各種問題

如果隻修改第一個參數會報一些其他的錯誤,如下 :

[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遇到的各種問題安裝elasticsearch遇到的各種問題

配置以下後啟動elasticsearch就可以正常通路了。

然後我們再下載下傳一個windows的kibana管理互動工具和elasticsearch進行互動,需要注意的是kibana的版本一定要和elasticsearch的版本一緻

https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-windows-x86_64.zip

下載下傳這個就可以了,下載下傳完成後解壓,修改配置檔案連接配接elasticsearch配置檔案

啟動就可以了。

繼續閱讀