ES叢集&kibana安裝

2023-08-23 12:01:36

一、elasticsearch介紹

Elasticsearch 是個開源分散式搜尋引擎,它的特點有:分散式,零設定,自動發現,索引自動分片,索引副本機制,restful 風格介面,多資料來源,自動搜尋負載等。

Elasticsearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於 RESTful web 介面。Elasticsearch 是用 Java 開發的,並作為 Apache 許可條款下的開放原始碼釋出,是第二流行的企業搜尋引擎。設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。

二、es的基礎核心概念

1、接近實時(NRT)

elasticsearch 是一個接近實時的搜尋平臺,這意味著,從索引一個檔案直到這個檔案能夠被搜尋到有一個輕微的延遲(通常是 1 秒)。

2、叢集(cluster)

一個叢集就是由一個或多個節點組織在一起,它們共同持有你整個的資料,並一起提供索引和搜尋功能。其中一個節點為主節點,這個主節點是可以通過選舉產生的,並提供跨節點的聯合索引和搜尋的功能。叢集有一個唯一性標示的名字,預設是 elasticsearch,叢集名字很重要,每個節點是基於叢集名字加入到其叢集中的。因此,確保在不同環境中使用不同的叢集名字。一個叢集可以只有一個節點。強烈建議在設定 elasticsearch 時,設定成叢集模式。

3、節點(node)

節點就是一臺單一的伺服器,是叢集的一部分,儲存資料並參與叢集的索引和搜尋功能。像叢集一樣,節點也是通過名字來標識,預設是在節點啟動時隨機分配的字元名。當然,你可以自己定義。該名字也很重要,在叢集中用於識別伺服器對應的節點。

節點可以通過指定叢集名字來加入到叢集中。預設情況,每個節點被設定成加入到 elasticsearch叢集。如果啟動了多個節點,假設能自動發現對方,他們將會自動組建一個名為 elasticsearch 的叢集。

所以es叢集由若干節點組成,這些節點在同一個網路內,cluster-name相同。

節點分為:

  • master節點:叢集中的一個節點會被選為master節點,它將負責管理叢集範疇的變更,例如建立或刪除索引,新增節點到叢集或從叢集刪除節點。master節點無需參與檔案層面的變更和搜尋,這意味著僅有一個master節點並不會因流量增長而成為瓶頸。任意一個節點都可以成為 master 節點。
  • data節點:持有資料和倒排索引。預設情況下,每個節點都可以通過設定組態檔yml中的node.data屬性為true(預設)成為資料節點。如果需要一個專門的主節點,應將其node.data屬性設定為false。
  • Client節點:如果將master屬性和node.data屬性都設定為false,那麼該節點就是一個使用者端節點,扮演一個負載均衡的角色,將到來的請求路由到叢集中的各個節點。

4、索引(index)

一個索引就是一個擁有幾分相似特徵的檔案的集合。比如說,你可以有一個客戶資料的索引,另一個產品目錄的索引,還有一個訂單資料的索引。一個索引由一個名字來標識(必須全部是小寫字母的),並且當我們要對對應於這個索引中的檔案進行索引、搜尋、更新和刪除的時候,都要使用到這個名字。在一個叢集中,如果你想,可以定義任意多的索引。索引相當於關係型資料庫的庫。

5、型別(type)

在一個索引中,你可以定義一種或多種型別。一個型別是你的索引的一個邏輯上的分類/分割區,其語意完全由你來定。通常,會為具有一組共同欄位的檔案定義一個型別。比如說,我們假設你運營一個部落格平臺並且將你所有的資料儲存到一個索引中。在這個索引中,你可以為使用者資料定義一個型別,為部落格資料定義另一個型別,當然,也可以為評論資料定義另一個型別。型別相對於關係型資料庫的表。

6、檔案(document)

 一個檔案是一個可被索引的基礎資訊單元。比如,你可以擁有某一個客戶的檔案,某一個產品的一個檔案,當然,也可以擁有某個訂單的一個檔案。檔案以 JSON(Javascript Object Notation)格式來表示,而 JSON 是一個到處存在的網際網路資料互動格式。

 在一個 index/type 裡面,只要你想,你可以儲存任意多的檔案。注意,雖然一個檔案在物理上位於一個索引中,實際上一個檔案必須在一個索引內被索引和分配一個型別。檔案相對於關係型資料庫的列。

7、分片和副本(shards & replicas)

在實際情況下,索引儲存的資料可能超過單個節點的硬體限制。如一個 10 億檔案需 1TB 空間可能不適合儲存在單個節點的磁碟上,或者從單個節點搜尋請求太慢了。為了解決這個問題,elasticsearch 提供將索引分成多個分片的功能。當在建立索引時,可以定義想要分片的數量。每一個分片就是一個全功能的獨立的索引,可以位於叢集中任何節點上。

分片的兩個最主要原因:

  1. 水平分割擴充套件,增大儲存量
  2. 分散式並行跨分片操作,提高效能和吞吐量

分散式分片的機制和搜尋請求的檔案如何彙總完全是有 elasticsearch 控制的,這些對使用者而言是透明的。

網路問題等等其它問題可以在任何時候不期而至,為了健壯性,強烈建議要有一個故障切換機制,無論何種故障以防止分片或者節點不可用。 為此,elasticsearch 讓我們將索引分片複製一份或多份,稱之為分片副本或副本。

副本也有兩個最主要原因:

  1. 高可用性,以應對分片或者節點故障。出於這個原因,分片副本要在不同的節點上。
  2. 提供效能,增大吞吐量,搜尋可以並行在所有副本上執行。

總之,每個索引可以被分成多個分片。一個索引也可以被複制 0 次(意思是沒有複製)或多次。一旦複製了,每個索引就有了主分片(作為複製源的原來的分片)和複製分片(主分片的拷貝)之別。分片和副本的數量可以在索引建立的時候指定。在索引建立之後,你可以在任何時候動態地改變副本的數量,但是你事後不能改變分片的數量。

 預設情況下,Elasticsearch 中的每個索引被分片 5 個主分片和 1 個副本,這意味著,如果你的叢集中至少有兩個節點,你的索引將會有 5 個主分片和另外 5 個副本分片(1 個完全拷貝),這樣的話每個索引總共就有 10 個分片。

分片總結:

  • 單個節點由於物理機硬體限制,儲存的檔案是有限的,如果一個索引包含海量檔案,則不能在單個節點儲存。ES提供分片機制,同一個索引可以儲存在不同分片(資料容器)中,這些分片又可以儲存在叢集中不同節點上。
  • 分片分為主分片(primary shard) 以及從分片(replica shard) 。
  • 主分片與從分片關係:從分片只是主分片的一個副本,它用於提供資料的冗餘副本
  • 從分片應用:在硬體故障時提供資料保護,同時服務於搜尋和檢索這種唯讀請求
  • 是否可變:索引中的主分片的數量在索引建立後就固定下來了,但是從分片的數量可以隨時改變
  • 索引預設建立的分片:預設設定5個主分片和一組從分片(即每個主分片有一個從分片對應),但是從分片沒有被啟用(主從分片在同一個節點上沒有意義),因此叢集健康值會顯示為黃色(yellow)

三、es叢集搭建

1、環境:

三臺centos7伺服器,一臺為master節點,兩臺從節點。

系統版本:CentOS Linux release 7.4.1708 (Core)

軟體版本:elasticsearch-6.8.0.rpm

Jdk版本:jdk-8u161-linux-x64.tar.gz

2、在es節點上設定名稱解析

通過本地/etc/hosts檔案實現。(也可以不設定,但設定es檔案的節點名稱時填寫對應的IP)

3、分別在三臺es節點安裝java環境

java下載地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

4、分別在三臺es節點安裝elasticsearch軟體

安裝方式相同。(本次使用rpm安裝)

 https://www.elastic.co/cn/downloads/elasticsearch

主要路徑:

5、修改三臺節點的es組態檔。

  • 節點1:

  • 節點2:

  • 節點3:

注:以上的資料存放路徑為預設,如要修改路徑,需要對路徑授權。如:chown  elasticsearch:elasticsearch 儲存路徑

6、啟動elasticsearch並檢查是否啟動成功

7、通過瀏覽器存取節點(需要提前放行埠或關閉防火牆)

  • 檢視節點資訊情況

  • 檢視叢集的健康情況,status為green綠色

  • 檢視叢集狀態資訊

四、安裝kibana

Kibana是ElasticSearch的一個工具,用來分析ES中的資料並以各種圖形介面顯示出來。

可以作為ElasticSearch的一個使用者端,在Kibana中可以很輕鬆的呼叫ES的RESTful介面。

1、安裝kibana服務

軟體版本:kibana-6.8.0-x86_64

2、設定kibana的主組態檔

3、啟動kibana服務

4、通過瀏覽器存取

5、在kibana的左側Menu中找到圖示【DevTools】

這個是開發者工具。在這個介面可以編寫es的查詢DSL語句,並行起對es的請求