天天看點

elasticsearch 分布式

簡介 

開始學es,我習慣邊學邊記,總結出現的問題和解決方法。本文是在兩台linux虛拟機下,安裝了三個節點。本次搭建es同時實踐了兩種模式——單機模式和分布式模式。條件允許的話,可以在多台機器上配置es節點,如果你機器性能有限,那麼可以在一台虛拟機上完成多節點的配置。 

如圖,是本次3個節點的分布。

虛拟機主機名

ip

es節點

master

192.168.137.100

node1、node3

slave

192.168.137.101

node2

index: es裡的index相當于一個資料庫。 

type: 相當于資料庫裡的一個表。 

id: 唯一,相當于主鍵。 

node:節點是es執行個體,一台機器可以運作多個執行個體,但是同一台機器上的執行個體在配置檔案中要確定http和tcp端口不同(下面有講)。 

cluster:代表一個叢集,叢集中有多個節點,其中有一個會被選為主節點,這個主節點是可以通過選舉産生的,主從節點是對于叢集内部來說的。 

shards:代表索引分片,es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節點上,構成分布式搜尋。分片的數量隻能在索引建立前指定,并且索引建立後不能更改。 

replicas:代表索引副本,es可以設定多個索引的副本,副本的作用一是提高系統的容錯性,當個某個節點某個分片損壞或丢失時可以從副本中恢複。二是提高es的查詢效率,es會自動對搜尋請求進行負載均衡。

名稱

版本

下載下傳位址

elasticsearch

1.7.3

<a target="_blank" href="https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.3.tar.gz">elasticsearch-1.7.3.tar.gz</a>

下載下傳後,放到你的目錄下并解壓. 因為我們要配置包含三個節點的叢集,可以先将其重命名為elasticsearch-node1。比如我的是 /home/zkpk/elasticsearch-node1。

(1) 初步修改 

打開/home/zkpk/elasticsearch-node1/config目錄下的elasticsearch.yml 檔案 ,修改以下屬性值并取消該行的注釋:

(2) 進一步修改 

拷貝 elasticsearch-node1 整個檔案夾,兩份,一份elasticsearch-node2,一份elasticsearch-node3. 

将elasticsearch-node2 檔案夾copy到另外一台ip為192.168.137.101的機器上。而在 192.168.137.100 機器上有 node1和node3.

對于node3: node3和node1在一台機器上,node1的配置檔案裡端口預設分别是9300和9200,是以要改一下node3配置檔案裡的端口,elasticsearch.yml 檔案修改如下:

對于node2: 對 elasticsearch.yml 修改如下

注意: 

1.對于單機多節點的es叢集,一定要注意修改 transport.tcp.port 和http.port 的預設值保證節點間不沖突。 

2. 出現找不到同一叢集中的其他節點的情況,檢查下 discovery.zen.ping.unicast.hosts 是否已設定。

編輯 /home/zkpk/elasticsearch-1.7.3/bin/elasticsearch.in.sh, 設定 es_min_mem和es_max_mem,確定二者數值一緻,或者可以在啟動es時指定,

若想讓es背景運作,則

前台運作:可以通過”ctrl+c”組合鍵來停止運作 

背景運作,可以通過”kill -9 程序号”停止.也可以通過rest api接口:

來關閉整個叢集,通過:

來關閉單個節點.

bigdesk plugin : 對叢集中es狀态進行監控。 

elasticsearch head plugin: 對es進行各種操作,如查詢、删除、浏覽索引等。

進入到節點elasticsearch-node1/bin路徑,并安裝插件。

[zkpk@master bin]$ ./plugin -install lukas-vlcek/bigdesk

elasticsearch 分布式

每個小方塊就是索引分片,可以看到每個索引被分成幾個分片,每個分片還有它的備份分片,然後存儲在三個節點上。粗框的是主分片,細框的是備份分片。

現在我們來添加一個索引記錄吧~

(1)點選 複合查詢[+] ,我們可以在 megacorp 索引 (相當于資料庫名)的 employee 類型(相當于表名)下新增一個id為2的人的資訊。

elasticsearch 分布式

點選下方的 送出請求 按鈕,頁面右方有回饋資訊,“created”代表是否為建立。添加成功。

elasticsearch 分布式

點選 浏覽資料 ,在左側 索引 下選擇 megacorp,如圖,

elasticsearch 分布式

可以看到,一條id為2的記錄被添加了。

(2)下面我們修改id為2 的人的年齡為15,把about 資訊去掉,并且加一項興趣。

elasticsearch 分布式

送出後,右側有回報資訊,“created”為 false,因為我們這次不是建立而是修改。

elasticsearch 分布式

傳回浏覽資料,id為2 的記錄,年齡、興趣等均已發生變化。

elasticsearch 分布式