ElasticSearch基本介紹(一)

引言


引自:Elasticsearch集群部署

一、ES中的基本概念


cluster

代表一個集群,集群中有多個節(jié)點,其中有一個為主節(jié)點,這個主節(jié)點是可以通過選舉產(chǎn)生的,主從節(jié)點是對于集群內(nèi)部來說的。

es的一個概念就是去中心化,字面上理解就是無中心節(jié)點,這是對于集群外部來說的。因為從外部來看es集群,在邏輯上是個整體,你與任何一個節(jié)點的通信和與整個es集群通信是相同的。

shards

代表索引分片,es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節(jié)點上。構(gòu)成分布式搜索。分片的數(shù)量只能在索引創(chuàng)建前指定,并且索引創(chuàng)建后不能更改。

replicas

代表索引副本,es可以設(shè)置多個索引的副本,副本的作用一是提高系統(tǒng)的容錯性,當某個節(jié)點某個分片損壞或丟失時可以從副本中恢復(fù)。二是提高es的查詢效率,es會自動對搜索請求進行負載均衡。

recovery

代表數(shù)據(jù)恢復(fù)或叫數(shù)據(jù)重新分布,es在有節(jié)點加入或退出時會根據(jù)機器的負載對索引分片進行重新分配,掛掉的節(jié)點重新啟動時也會進行數(shù)據(jù)恢復(fù)。

river

代表es的一個數(shù)據(jù)源,也是其它存儲方式(如:數(shù)據(jù)庫)同步數(shù)據(jù)到es的一個方法。它是以插件方式存在的一個es服務(wù),通過讀取river中的數(shù)據(jù)并把它索引到es中,官方的rivercouchDB的,RabbitMQ的,Twitter的,Wikipedia的。

gateway

代表es索引快照的存儲方式,es默認是先把索引存放到內(nèi)存中,當內(nèi)存滿了時再持久化到本地硬盤。gateway對索引快照進行存儲,當這個es集群關(guān)閉再重新啟動時就會從gateway中讀取索引備份數(shù)據(jù)。es支持多種類型的gateway,有本地文件系統(tǒng)(默認),分布式文件系統(tǒng),HadoopHDFSamazons3云存儲服務(wù)。

discovery.zen

代表es的自動發(fā)現(xiàn)節(jié)點機制,es是一個基于p2p的系統(tǒng),它先通過廣播尋找存在的節(jié)點,再通過多播協(xié)議來進行節(jié)點之間的通信,同時也支持點對點的交互。

Transport

代表es內(nèi)部節(jié)點或集群與客戶端的交互方式,默認內(nèi)部是使用tcp協(xié)議進行交互,同時它支持http協(xié)議(json格式)、thrift、servletmemcached、zeroMQ等的傳輸協(xié)議(通過插件方式集成)。

二、部署環(huán)境


采用三臺CentOS7.3部署ElasticSearch集群,部署ElasticSearch集群就不得不提索引分片,以下是索引分片的簡單介紹。

系統(tǒng) 節(jié)點名 IP
CentOS7.3 els1 172.18.68.11
CentOS7.3 els2 172.18.68.12
CentOS7.3 els3 172.18.68.13

ES集群中索引可能由多個分片構(gòu)成,并且每個分片可以擁有多個副本。通過將一個單獨的索引分為多個分片,我們可以處理不能在一個單一的服務(wù)器上面運行的大型索引,簡單的說就是索引的大小過大,導致效率問題。

不能運行的原因可能是內(nèi)存也可能是存儲。由于每個分片可以有多個副本,通過將副本分配到多個服務(wù)器,可以提高查詢的負載能力。

三、部署Elasticsearch集群


1. 安裝JDK

Elasticsearch是基于Java開發(fā)的一個Java程序,運行在Jvm中,所以第一步要安裝JDK

yum install -y java-1.8.0-openjdk-devel
2. 下載ElasticSearch

ElasticSearch DownloadELasticSearch的中文官方站點。

下載您所需要的版本,我這里是elasticsearch-6.4.2-linux-x86_64.tar.gz

[root@hadoop1 ~]# tar -zxvf elasticsearch-6.4.2-linux-x86_64.tar.gz
# 因為執(zhí)行./bin/elasticsearch -d需要非root用戶,因此需要創(chuàng)建elastic用戶
[root@hadoop1 ~]# adduser elastic
# 修改elastic用戶擁有root權(quán)限
[root@hadoop1 ~]# vim /etc/sudoers
# 添加權(quán)限
elastic ALL=(ALL)       ALL
:wq!保存
#授權(quán)
[root@hadoop1 ~]# chmod 775 elasticsearch-6.4.2
[root@hadoop1 ~]# chown -R elastic:elastic elasticsearch-6.4.2
[root@hadoop1 ~]# mv elasticsearch-6.4.2 /home/elastic/
[root@hadoop1 ~]# su - elastic
[elastic@hadoop1 ~]$ cd 
[elastic@hadoop1 ~]$ ll
drwxrwxr-x 8 elastic elastic 4096 Sep 26  2018 elasticsearch-6.4.2

3. 配置目錄

安裝完畢后會生成很多文件,包括配置文件、日志文件等等,下面幾個是最主要的配置文件路徑:

# ES的配置文件
/etc/elasticsearch/elasticsearch.yml    
                    
# JVM相關(guān)的配置,內(nèi)存大小等等   
/etc/elasticsearch/jvm.options              

# 日志系統(tǒng)定義                    
/etc/elasticsearch/log4j2.properties        

# 數(shù)據(jù)的默認存放位置                 
/var/lib/elasticsearch                                        
4. 創(chuàng)建用于存放數(shù)據(jù)與日志的目錄

數(shù)據(jù)文件會隨著系統(tǒng)的運行飛速增長,所以默認的日志文件數(shù)據(jù)文件的路徑不能滿足我們的需求,那么手動創(chuàng)建日志數(shù)據(jù)文件路徑,可以使用NFSNetwork File System)、可以使用Raid(磁盤陣列)等等方便以后的管理與擴展。

mkdir {logs,data}
5. 集群配置

集群配置中最重要的兩項是node.namenetwork.host,每個節(jié)點都必須不同。其中node.name是節(jié)點名稱,主要是在Elasticsearch自己的日志加以區(qū)分每一個節(jié)點信息。

discovery.zen.ping.unicast.hosts是集群中的節(jié)點信息,可以使用IP地址、可以使用主機名(必須可以解析)。

vim /home/elastic/elasticsearch-6.4.2/config/elasticsearch.yml 

cluster.name: your-self-cluster                                 
node.name: es-node1                                         # 節(jié)點名稱,僅僅是描述名稱,用于在日志中區(qū)分

path.data: /home/ozan/elasticsearch-6.4.2/data              # 數(shù)據(jù)的默認存放路徑
path.logs: /home/ozan/elasticsearch-6.4.2/logs              # 日志的默認存放路徑

network.host: 192.168.0.1                                   # 當前節(jié)點的IP地址
http.port: 9200                                             # 對外提供服務(wù)的端口,9300為集群服務(wù)的端口

discovery.zen.ping.unicast.hosts: ["172.18.68.11", "172.18.68.12","172.18.68.13"]       
# 集群個節(jié)點IP地址,也可以使用els、els.shuaiguoxia.com等名稱,需要各節(jié)點能夠解析

discovery.zen.minimum_master_nodes: 2                       # 為了避免腦裂,集群節(jié)點數(shù)最少為 半數(shù)+1

在最后加上這兩句,要不然,外面瀏覽器就訪問不了哈
http.cors.enabled: true
http.cors.allow-origin: "*"
6. JVM配置

由于ElasticsearchJava開發(fā)的,所以可以通過/etc/elasticsearch/jvm.options配置文件來設(shè)定JVM的相關(guān)設(shè)定。如果沒有特殊需求按默認即可。

不過其中還是有兩項最重要的-Xmx1g-Xms1g JVM的最大最小內(nèi)存。如果太小會導致Elasticsearch剛剛啟動就立刻停止,太大會拖慢系統(tǒng)本身。

vim /etc/elasticsearch/jvm.options
-Xms1g                         # JVM最大使用內(nèi)存
-Xmx1g                         # JVM最小使用內(nèi)存
7. 啟動Elasticsearch

由于啟動Elasticsearch會自動啟動daemon-reload所以最后一項可以省略。

[elastic@hadoop1 bin]$ ./elasticsearch -d

查看elasticsearchlogs

8. 測試

Elasticsearch提供了http接口調(diào)用,所以直接使用curl命令就可以查看到一些集群相關(guān)的信息。

可以使用curl命令來獲取集群的相關(guān)的信息

_cat:代表查看信息

nodes:為查看節(jié)點信息,默認會顯示為一行,所以就用?preety讓信息更友好的顯示

?preety:讓輸出信息更友好的顯示
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容