elasticsearch之es for linux


前言

由於elasticsearch依賴java環境,所以,首先要安裝java jdk。
這里使es和kibana的版本保持一致,環境如下:

  • centos7.3
  • java1.8
  • elasticsearch6.7.0
  • kibana6.7.0
  • ik6.7.0

另外,要檢查一下防火牆是否關閉:

firewall-cmd --state        # 檢查防火牆是否關閉
systemctl stop firewalld.service    # 停止firewall
systemctl disable firewalld.service # 禁止開機啟動

java for linux

在Linux平台,直接使用yum命令下載java jdk即可。

[root@cs home]# yum install java-1.8.0-openjdk -y

默認的,java jdk被安裝到了/usr/lib/jvm/目錄:

下載並安裝完畢,我們使用如下命令測試java環境是否配置完畢:

[root@cs home]# java -version

OK,java環境配置完畢。至於配置javac,見鬼去吧!

elasticsearch for linux

elastic官網的elasticsearch下載頁面,復制tar包鏈接:

然后,使用wget命令下載即可:

[root@cs home]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.0.tar.gz

下載完畢后,我們解壓tar包:

[root@cs home]# tar -zxvf elasticsearch-6.7.0.tar.gz 

當解壓完畢,我們對elasticsearch做一些配置,elasticsearch.yml配置文件里面有很多常用的配置,我們根據業務需求可以來這里修改它們:

[root@cs home]# vim /home/elasticsearch-6.7.0/config/elasticsearch.yml 

暫時我們只需要對host做一些修改,方便后面我們通過瀏覽器訪問它:

network.host: 10.0.0.200

host對應你的主機ip地址。
由於elasticsearch的默認jvm堆大小是1G(在es的6.7.0和6.5.4版本中,該值都是默認1G),為了啟動不報錯Cannot allocate memory,所以還需要修改一處配置,就是調整堆值的大小,並且這個值應該根據你的系統物理內存大小而定,比如我本機的物力內存是1G,所以我將這個值調整為512M:

[root@r home]# vim /home/elasticsearch-6.7.0/config/jvm.options 
-Xms512m      # 原值為-Xms1g
-Xmx512m     # 原值為-Xmx1g

沒完!我們還需要修改兩處配置(非常重要的兩個步驟,配置不好就導致后面的報錯):

[root@cs home]# vim /etc/sysctl.conf 

編輯追加一行:

vm.max_map_count=262144

完事執行如下命令,使配置生效:

[root@cs home]# sysctl -p
vm.max_map_count = 262144

而我碰到命令執行失敗的問題:

[root@cs home]# sysctl -p
sysctl: cannot stat /proc/sys/vm/max_map_conut: 沒有那個文件或目錄

怎么辦呢?我們使用另一個辦法:

[root@cs ~]# cat /proc/sys/vm/max_map_count     # 之前,我們查看參數並沒有修改
65530
[root@cs ~]# echo 262144 > /proc/sys/vm/max_map_count   # 通過這樣手動修改參數
[root@cs ~]# cat /proc/sys/vm/max_map_count    # 就好了
262144

簡要說下sysctl -p命令,sysctl命令用於運行時配置內核參數,這些參數位於/proc/sys目錄下。sysctl配置與顯示在/proc/sys目錄中的內核參數.可以用sysctl來設置或重新設置聯網功能,如IP轉發、IP碎片去除以及源路由檢查等。用戶只需要編輯/etc/sysctl.conf文件,即可手工或自動執行由sysctl控制的功能。而 參數-p的意思是從指定的文件加載系統參數,如不指定即從/etc/sysctl.conf中加載。

再來修改另一處配置:

[root@cs home]# vim /etc/security/limits.conf 

追加如下內容,Python為登錄服務器的用戶名:

* soft nofile 65536
* soft nofile 65536
* hard nofile 65536
* soft nproc 5000
* hard nproc 5000

當修改完后,我們可以使用reboot重新啟動使之生效。
現在,我們去啟動es:

[root@cs home]# ./elasticsearch-6.7.0/bin/elasticsearch   # 啟動其bin目錄中的elasticsearch即可

但發現了一個問題導致啟動失敗,原因是elasticsearch不能以root用戶啟動。

我們這里手動創建一個普通用戶:

[root@cs home]# adduser zhangkai
[root@cs home]# passwd zhangkai
更改用戶 zhangkai 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。

注意,輸入密碼是不會提示的!
然后,我們(此時還是root用戶)為這個普通用戶給elasticsearch目錄權限:

[root@cs home]# chown -R zhangkai /home/elasticsearch-6.7.0

完事后,我們以普通的用戶身份去啟動elasticsearch:

[root@cs home]# su zhangkai                
[zhangkai@cs home]$ ./elasticsearch-6.7.0/bin/elasticsearch

當然,要停止的話,Ctrl + C比較簡單粗暴!
現在,讓我們打開瀏覽器訪問吧:

http://10.0.0.200:9200/

不希望你遇到的報錯問題:

  • 報錯,Cannot allocate memory,無法分配內存:
[root@r myelk]# ./elasticsearch-6.7.0/bin/elasticsearch
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 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 986513408 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid2834.log

這是elasticsearch默認的jvm堆大小,如果你的Linux系統的內存較小,我們可以調整這個值,我們去elasticsearch安裝目錄下的elasticsearch\conf\jvm.options文件修改這個值。

[root@r home]# vim /home/elasticsearch-6.7.0/config/jvm.options 
-Xms512m      # 原值為-Xms1g
-Xmx512m     # 原值為-Xmx1g


在es的6.7.0和6.5.4版本中,該值都是默認1G,而我的系統才1G,所以報錯了,我們把它降低一些,而最大和最小值應該是一致的,並且根據物力內存設置一個合理的值,我這里修改為512m。

  • 報錯,虛擬內存太小:
There is insufficient memory for the Java Runtime Environment to continue.

由於我使用的是虛擬機,所以分配的內存太小了,手動調大一些就好了。

  • 報錯,最大虛擬內存太少了:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

這里需要修改etc/sysctl.conf文件設置,前文已經提到了。

  • 報錯,每個進程打開的文件數量太少:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

4096是之前設置的太少了。這里需要修改/etc/security/limits.conf文件。前文已經提到了。
牢記,這幾個報錯,在修改完文件后,需要重新啟動。

除此之外,我們還可以通過rpm包的方式安裝,當然,具體就不多表了。

# yum install -y java-openjdk
yum install java-1.8.0-openjdk -y
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-x86_64.rpm
yum install elasticsearch-7.0.0-x86_64.rpm
systemctl start elasticsearch
systemctl stop elasticsearch

至此,elasticsearch在Linux環境配置基本完事。

kibana for linux

在安裝kibana之前,請確保java環境和elasticsearch都已配置並啟動成功。

elastic官網的kibana下載頁面,復制tar包鏈接:

然后,使用wget命令下載即可:

[root@cs home]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.7.0-linux-x86_64.tar.gz

下載完畢后,我們修改其中的配置文件:

[root@cs home]# vim /home/kibana-6.7.0-linux-x86_64/config/kibana.yml 

這里我們暫時添加,不動原文件注釋的內容:

elasticsearch.url: "http://10.0.0.200:9200"
server.host: "10.0.0.200"

完事,讓我們啟動(此時你的elasticsearch應該是啟動狀態,並且監聽http://10.0.0.200:9200)吧:

[root@cs home]# ./kibana-6.7.0-linux-x86_64/bin/kibana

停止的話,Ctrl + C比較省事!
當我們在茫茫log行發現某一行:

log   [07:03:59.832] [info][listening] Server running at http://10.0.0.200:5601

那就表示啟動成功了,我們在瀏覽器地址欄輸入http://10.0.0.200:5601

OK,kibana也配置完事。

ik for linux

首先我們應該停掉elasticsearch實例,當然,此時如果你的kibana也在運行的話,就會一直報錯,這不要管它,可以把它也停掉。
Github上找到與elasticsearch對應的版本(版本必須一致),選擇tar包右鍵獲取鏈接:

但是,此時如果繼續往下走的話,最后會導致elasticsearch啟動失敗,因為這個源文件需要編譯......所以,為了方便,我直接選擇復制elasticsearch-analysis-ik-6.7.0.zip的鏈接了。

然后使用wget命令下載即可,為了簡單我們使用cd命令將當前目錄切換到/home/elasticsearch-6.7.0/plugins/

[root@cs home]# cd /home/elasticsearch-6.7.0/plugins/
[root@cs plugins]# wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.7.0/elasticsearch-analysis-ik-6.7.0.zip

首先我們在plugins目錄下創建一個新的ik目錄,用來保存解壓文件,然后再解壓縮,最后將壓縮包刪除就完事了:

[root@cs plugins]# mkdir ik
[root@cs plugins]# unzip -o -d /home/elasticsearch-6.7.0/plugins/ik elasticsearch-analysis-ik-6.7.0.zip 
[root@cs plugins]# rm -rf elasticsearch-analysis-ik-6.7.0.zip  && ls
ik

大致說一下unzip -o -p /解壓目標路徑 解壓文件命令,這個命令就是說將elasticsearch-analysis-ik-6.7.0.zip文件解壓到/home/elasticsearch-6.7.0/plugins/ik目錄。-o的意思是不提示的情況下覆蓋文件,-d指明將文件解壓縮到指定目錄下。

注意,如果unzip命令不好使,就手動下載或升級一下:

yum install -y unzip zip

然后啟動elasticsearch實例。你會在啟動日志中找到一行:

就說明該插件已經生效,但是,除非指定使用該插件,否則默認還是使用自帶的分析器,如何要使該插件應用於全局,就在elasticsearch.yml文件中修改:

index.analysis.analyzer.default.tokenizer : "ik_max_word"
index.analysis.analyzer.default.type : "ik" 

當然,這個是可選項。

最后的配置(可選)

還有一點可以優化的地方,現在,無論是elasticsearch還是kibana,都是找到絕對路徑去啟動的,我覺得比較麻煩,所以,我們可以將啟動目錄添加到PATH中,來個一鍵啟動。

首先,找到PAHT

[root@cs home]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:

現在的返回結果是原有的,我們需要將elasticsearch和kibana的啟動目錄路徑(絕對路徑)添加到這個路徑中去。

[root@cs home]# vim /etc/profile

在最后添加上拼接的路徑,注意各路徑間的分隔符是英文冒號:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/elasticsearch-6.7.0/bin:/root/bin:/home/kibana-6.7.0-linux-x86_64/bin:"

注意目錄結尾不能有/,然后source一下該文件,使之生效:

[root@cs home]# source /etc/profile

此時,我們輸入el然后按Tab鍵就可以提示出來所有el開頭的文件,找到那個啟動文件,就可以啟動它了:

[root@cs home]# elasticsearch
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N

如果要想后台執行,就加個&符號即可:

[root@cs home]# elasticsearch &

這樣程序就會在后台運行,並且返回了當前程序的進程號,方便我們(kill -9)殺死它!雖然依然會將日志輸出到當前終端,但至少不影響我們使用該終端。並且不用擔心它什么時候結束,其實當前終端被關閉,進程同樣結束。

需要說明的是,我用xshell連接的centos,開了3個終端,所以,有些路徑可能不太連貫,但有一點需要注意的是,所有涉及的啟動elasticsearch的都在普通用戶權限,別的操作可以在root權限下搞。



see also: linux中如何安裝elasticsearch |  [elasticsearch啟動常見錯誤](https://www.cnblogs.com/zhi-leaf/p/8484337.html) |  java – 無法更改elasticsearch的vm.max_map_count |  ElasticSearch啟動報錯,bootstrap checks failed |  elasticsearch安裝之各種坑 |  Linux下的壓縮zip,解壓縮unzip命令詳解及實例 |  github的ik主頁 |  medcl/elasticsearch-analysis-ik/releases |  Linux 安裝Elasticsearch和配置ik分詞器步驟
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM