ElasticSearch5.1.2安裝(Liunx)

一、 安裝前準備

  1. 下載安裝JDk1.7以上版本。

  2. 下載ElasticSearch安裝包,官網獲取,我這里下載的是最新版本5.1.2. elasticsearch-5.1.2.tar.gz

二、 安裝過程

  1. 檢查jdk版本 java –version

  2. 登錄服務器,創建文件夾mkdir –p /opt/elasticsearch

  3. 上傳elasticsearch-5.1.2.tar.gz 至服務器/opt/elasticsearch/ 下

  4. 解壓 tar –zvxf elasticsearch-5.1.2.tar.gz

  5. 啟動elasticsearch cd /opt/elasticsearch/elasticsearch-5.1.2 ./bin/elasticsearch

需要修改的參數(防止下面報錯)

1、
vim /etc/sysctl.conf
添加如下配置:vm.max_map_count=655360
并執行命令:sysctl -p
2、
vim /etc/security/limits.conf
修改以下配置
* soft nofile 655360
* hard nofile 655360
* soft nproc unlimited
* hard nproc unlimited
* hard memlock unlimited
* soft memlock unlimited
3、
vim /etc/security/limits.d/90-nproc.conf 
修改以下配置
* soft nproc unlimited

三、 安裝過程可能出現的錯誤

1、 如果是用root賬號啟動,會報以下錯誤

解決辦法:

這是出于系統安全考慮設置的條件。由于ElasticSearch可以接收用戶輸入的腳本并且執行,為了系統安全考慮,

建議創建一個單獨的用戶用來運行ElasticSearch
1、創建elsearch用戶組及elsearch用戶
groupadd elsearch
2、更改elasticsearch文件夾及內部文件的所屬用戶及組為elsearch:elsearch
useradd elsearch -g elsearch -p elasticsearch
cd /opt
chown -R elsearch:elsearch elasticsearch
3、切換至elsearch用戶再啟動
su elsearch
cd /opt/elasticsearch/elasticsearch-5.1.2 ./bin/elasticsearch

2、 警告問題

解決辦法:

使用新的liunx 系統就不會出現此類問題

3、ERROR: bootstrap checks failed

(一)max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]

解決辦法:

切換到root用戶,編輯limits.conf 添加類似如下內容

vi /etc/security/limits.conf

添加如下內容:

* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

(二) max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

解決辦法:

切換到root用戶,進入limits.d目錄下修改配置文件。

vi /etc/security/limits.d/90-nproc.conf

修改如下內容:

* soft nproc 1024

修改為

* soft nproc 2048

(三)****max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

解決辦法:

切換到root用戶修改配置sysctl.conf

vi /etc/sysctl.conf

添加下面配置:

vm.max_map_count=262144

并執行命令:

sysctl -p

然后,重新啟動elasticsearch,即可啟動成功。

附錄

ElasticSearch后端啟動命令

./elasticsearch –d

ElasticSearch-head5.1.2 安裝

由于5.X版本變化比較大,所以5.X暫時不支持直接安裝,但是head的作者提供了另外一種安裝方式。

1、下載head插件源碼

https://github.com/mobz/elasticsearch-head

2、下載nodejs

nodejs官網下載地址https://nodejs.org/dist/

wget https://nodejs.org/dist/v6.9.2/node-v6.9.2-linux-x64.tar.xz

3、配置node環境變量

xz –d node-v6.9.2-linux-x64.tar.xz
tar –xvf node-v6.9.2-linux-x64.tar
mv node-v6.9.2-linux-x64 /home/jacker/soft/node-v6.9.2-linux-x64
vim /etc/profile

export NODE_HOME=/home/jacker/soft/node-v6.9.2-linux-x64
export PATH=$PATH:$NODE_HOME/bin

source /etc/profile
# node –v

v6.9.2

# npm –v

3.10.9

4、安裝grunt

如果生產環境無法聯網在線安裝grunt,可以找一臺能聯網的主機配置好node,安裝好grunt后將elasticsearch-head目錄下的node_models打包上傳

cd elasticsearch-head

5、打開elasticseach-head目錄下的Gruntfile.js文件,命令模式下查找修改處:

    /9100

   修改為:

   connect:

   {

   server:{

     options: {

       port: 9100,

       **hostname:****'*',**

       base: '.',

       keepalive: true

    }

  }

  }

*部分為新加上去的。

6、修改elasticsearch-head/_site/app.js鏈接地址:

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
把localhost修改成你es的服務器地址,如:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://10.10.10.10:9200";
7、elasticsearch配置允許跨域訪問
修改elasticsearch配置文件elasticsearch.yml

http.cors.enabled: true
http.cors.allow-origin: "*"

8、重啟elasticsearch,并啟動node

cd elasticsearch-head

node_modules/grunt/bin/grunt server

9、訪問http://192.168.75.129:9100

ElasticSearch-analysis-ik分詞器的安裝

去GitHub下載配套的IK分詞器,Smartcn也可以,不過據說沒有ik靈活https://github.com/medcl/elasticsearch-analysis-ik/releases ,直接下編譯好的zip包

現在開始安裝ik分詞器,安裝之前,先說明一些變化:

  1. 之前可以在node節點上配置index默認的分詞器,如果是多節點,那么在每個節點上都配置就行了。這個有點不靈活,所以5.0之后,ES已經不再支持在elasticsearch.yml中配置分詞器,改而在新建索引時,使用settings去配置,這個會在后面的編程中說到。
  2. 之前使用delete-by-query插件來實現type的整個刪除。這個插件也是從5.0開始沒有了,被整個島ES的Core中


  1. 從5.0開始ik的tokenizer發生了變化,提供了兩種,一種為ik_smart,一種為ik_max_word。直接一點,ik_max_word會盡量從輸入中拆分出更多  token,而ik_smart則相反,個人感覺,ik_max_word就是原來的ik,ik_smart是新加的。
  2. 好了,開始安裝,只需要把elasticsearch-analysis-ik-5.0.1.zip解壓,然后拷貝到ES安裝目錄下的plugins文件夾內,并把elasticsearch-analysis-ik-5.0.1文件夾名修改為ik。這樣,就安裝好了。正如前面說的,安裝完插件,現在不需要在配置文件中配置了,需要在新建索引的時候指定分詞器。
  3. 重啟啟動ES,可以看到如下log

安裝kibana

接下來安裝Kibana,也挺簡單,解壓之后,先進到安裝目錄/config/kibana.yml中,將server.host修改一下,否則遠程無法訪問,這個配置在Kibana4.6.1(對應ES2.4.0)的時候還不需要配置,但是5.1.2就需要了。



然后kibana里面有默認的ES訪問路徑,如果你沒有改動過ES的端口,并且Kibana跟ES部署在一起,就不需要改動,否則需要配置這里:



然后遠程啟動,看下Kibana5.1.2的樣子

ES節點角色

在生產環境下,如果不修改elasticsearch節點的角色信息,在高數據量,高并發的場景下集群容易出現腦裂等問題。

默認情況下,elasticsearch 集群中每個節點都有成為主節點的資格,也都存儲數據,還可以提供查詢服務。這些功能是由兩個屬性控制的。
    1. node.master

2. node.data
  默認情況下這兩個屬性的值都是true。

node.master:這個屬性表示節點是否具有成為主節點的資格
  注意:此屬性的值為 true,并不意味著這個節點就是主節點。因為真正的主節點,是由多個具有主節點資格的節點進行選舉產生的。所以,這個屬性只是代表這個節點是不是具有主節點選舉資格。

node.data:這個屬性表示節點是否存儲數據。

四種組合
 1. node.master: true AND node.data: true AND node.ingest: true

這種組合表示這個節點既有成為主節點的資格,又可以存儲數據,還可以作為預處理節點,這個時候如果某個節點被選舉成為了真正的主節點,那么他還要存儲數據,這樣對于這個節點的壓力就比較大了。
  elasticsearch 默認是:每個節點都是這樣的配置,在測試環境下這樣做沒問題。實際工作中建議不要這樣設置,這樣相當于 主節點 和 數據節點 的角色混合到一塊了。

2. node.master: false AND node.data: true AND node.ingest: false

這種組合表示這個節點沒有成為主節點的資格,也就不參與選舉,只會存儲數據。這個節點我們稱為 data(數據)節點。在集群中需要單獨設置幾個這樣的節點負責存儲數據。后期提供存儲和查詢服務

3. node.master: true AND node.data: false AND node.ingest: false

這種組合表示這個節點不會存儲數據,有成為主節點的資格,可以參與選舉,有可能成為真正的主節點。這個節點我們稱為master節點

4. node.master: false AND node.data: false AND node.ingest: true

這種組合表示這個節點即不會成為主節點,也不會存儲數據,這個節點的意義是作為一個 client(客戶端)節點,主要是針對海量請求的時候可以進行負載均衡。在新版 ElasticSearch5.x 之后該節點稱之為:coordinate 節點,其中還增加了一個叫:ingest 節點,用于預處理數據(索引和搜索階段都可以用到),當然,作為一般應用是不需要這個預處理節點做什么額外的預處理過程,那么這個節點和我們稱之為 client 節點之間可以看做是等同的,我們在代碼中配置訪問節點就都可以配置這些 ingest 節點即可。

總結
  默認情況下,每個節點都有成為主節點的資格,也會存儲數據,還會處理客戶端的請求。在一個生產集群中我們可以對這些節點的職責進行劃分。

建議集群中設置 3臺 以上的節點作為 master 節點【node.master: true node.data: false node.ingest:false】,這些節點只負責成為主節點,維護整個集群的狀態。
  再根據數據量設置一批 data節點【node.master: false node.data: true node.ingest:false】,這些節點只負責存儲數據,后期提供建立索引和查詢索引的服務,這樣的話如果用戶請求比較頻繁,這些節點的壓力也會比較大
  所以在集群中建議再設置一批 ingest 節點也稱之為 client 節點【node.master: false node.data: false node.ingest:true】,這些節點只負責處理用戶請求,實現請求轉發,負載均衡等功能。

master節點:普通服務器即可(CPU 內存 消耗一般)
  data 節點:主要消耗磁盤,內存
  client | ingest 節點:普通服務器即可(如果要進行分組聚合操作的話,建議這個節點內存也分配多一點)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容