Elastic Elasticsearch ES cluster

Elasticsearch 5.6 Cluster建置與Header操作

林政儀 2017/12/18 10:00:00
1993

Elasticsearch 5.6 Cluster建置與Header操作


簡介

一步一步教學建立Elasticsearch5.6的cluster建置,並且介紹如何使用github上使用率最高的UI介面,方便操作ES,不用再記ES一大堆API了。

作者

林政儀


安裝ES之前的系統設定
 Elasticsearch5.6(此後簡稱ES)在運行時對系統有些要求,因此若是下載之後直接開始運行,會出現下列錯誤訊息
因此根據官網的說明,必須調整下列三項系統設定:

1.File Descriptors

# vi /etc/security/limits.conf

cbuser     soft  nofile      65536

cbuser     hard nofile      65536

2.Number of threads(同樣修改/etc/security/limits.conf)

 

cbuser     soft  nproc      2048

cbuser     hard nproc      2048

3.Virtual memory

 

# vi /etc/sysctl.conf

vm.max_map_count=262144

修改完需要reboot機器,第三項Virtual memory設定才會生效。重開機之後可以透過以下指令確認設定是否完成。

 ES角色說明
 每一個ES的instance有兩個主要的設定,用來表示該ES應該要在cluster裡做甚麼事情。
  • node.master: <true|false> # 是否可以成為主節點
  • node.data: <true|false> # 是否可以存放資料的節點
 因此鑒於Cluster的組成,ES可以簡單分為"data-node","router-node",分別設定如下即可:
 data-node
 router-node

 如何將多台ES的instance加入同一個cluster裡
 ES會自動掃描給予的ip/host清單裡的port(9300~9305),只要有相同cluster.name,彼此就會識別為相同的cluster,因此組成cluster的條件設定為:
  • cluster.name: es-test # 所有ES instance名稱都要相同
  • node.name: es-data1 # 所有ES名稱重複不衝突,但建議要錯開方便人識別
  • discovery.zen.ping.unicast.hosts: ["192.168.3.105","es_host"] #ES便會在這個清單內搜尋port(9300~9305),有相同cluster名字加入cluster
 若有加入成功,在瀏覽器輸入以下網址,可以簡易的確認cluster狀況:
 http://任何一台ESIP:PORT/_nodes/stats?pretty

 使用github上的開源UI介面
 ES雖然使用友善的Restful API,理論上使用瀏覽器就可以操作大部分的查詢跟cluster健康狀態確認,但要記住那些API其實還是很麻煩,因此github上有人寫好了一個簡易版的UI介面,已滿足大部分ES相關操作了。(https://github.com/mobz/elasticsearch-head)
 下載/解壓縮之後其實就可以打開index.html來操作了

 若要修改開啟後的預設監看URL,則修改src/app/ app.js內的URL
 這是在local打開這個監控UI的簡單方法,若是想要讓多人可以存取,可以將該專案部屬在Apache、node.js、Tomcat等server上,可以提供基於網站監控ES狀態的UI囉。
林政儀