輪撥

2018年2月10日 星期六

如何在 CentOS 7 環境中安裝 Elasticsearch 教學

那個時候 Elasticsearch 的版本才 6.1.2,沒想到才幾天的時間 Elasticsearch 官方又釋出了 6.2.1 的版本啦!! Elasticsearch 更新的速度真的太快了,今天就用 Elasticsearch 6.2.1 來當做安裝教學的版本。

軟體版本

  • 作業系統:CentOS 7
  • Elasticsearch:6.2.1
  • JDK:1.8.0

1.修改HostName

# hostnamectl set-hostname elk-master-01

2.更新以及安裝有用到的工具

# yum -y update
# yum -y install wget
# yum -y install vim

3.安裝 JDK 1.8.0

# yum -y install java-1.8.0-openjdk.x86_64

4.設置 JAVA_HOME 路徑

# export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk

5.下載Elasticsearch

# cd /tmp

6.安裝 Elasticsearch

# rpm -ivh /tmp/elasticsearch-*.rpm

7.設定 Elasticsearch 綁定的 IP 及 Port

# vim /etc/elasticsearch/elasticsearch.yml

找到以下兩個設定值:
network.bind_host: 0.0.0.0
http.port: 9200

8.防火牆開通

安裝完 CentOS 7 預設會開啟防火牆,所以當設定完 Elasticsearch 後一定要開通 Policy 喔,不然外部會有連不到的狀況喔。

# firewall-cmd --add-port=9200/tcp --permanent
# firewall-cmd --reload


你也可以將防火牆完全關閉,當然測試時可以這樣用,但線上環境為了安全上的考量不建議全關喔。

# systemctl stop firewalld
# systemctl disable firewalld

9.記憶體調整

在 Linux 環境中安裝 Elasticsearch 預設記憶體只有 1 GB


除非是測試用途,不然這樣的配置,系統一定會出問題,建議記憶體給的越大越好,因為記憶體越大,查詢速度越快。但 Elasticsearch 配置記憶體有兩個條件限制,違反下面兩個條件,Elasticsearch 查詢速度會不升反減:
  1. 記憶體最高只能設定系統可用的一半:
    例:系統記憶體總共有 32GB,只能設定 16GB 給 Elasticsearch,為什麼呢?在這篇中 Chris 有介紹到 Elasticsearch 底層是 Base on Lucene,Lucene 的效能取決於和作業系統的相互作用。如果你把所有的記憶體都分配給 Elasticsearch ,那將不會有剩餘的記憶體給 Lucene。這將嚴重地影響全文檢索的效能。
  2. 不能超過 32GB:
    Elasticsearch 是 JAVA 語言所開發的應用程式,也就是說它脫離不了 JVM 跟  Garbage Collection,這裡為官方的說明。

這邊 Chris 測試機的記憶體有16 GB 所以記憶體使用下限跟記憶體使用上限我都設定為 8 GB(請依照自己的環境修改)。

# vim /etc/elasticsearch/jvm.options

找到以下兩個設定值,都改為 8g:

-Xms8g
-Xmx8g


請確保記憶體最小值(Xms)與最大值(Xmx)的大小是相同的,這是防止程序在執行時改變記憶體大小,因為這是一個很耗系統資源的過程。

10.啟動 Elasticsearch

# systemctl start elasticsearch

查看狀態:

# systemctl status elasticsearch




看到最下面有 You Know, for Search 這字串就代表安裝成功啦!!

11.設定 Elasticsearch 為背景服務

# sudo systemctl daemon-reload
# sudo systemctl enable elasticsearch.service
# sudo systemctl start elasticsearch.service

小結

如果對於 json 語法還不太熟悉,也不喜歡一直下 Command 的話,這邊建議大家可以在 Chrome 瀏覽器上安裝 Elasticsearch Head 的套件,Head是集群管理工具、資料可視化、也可以做任何 CRUD(select、insert、update、delete) 的工具喔。

沒有留言:

張貼留言

網頁