elasticsearch實現讀寫分離

簡介

今天咱們不講三國,咱們講一講elasticsearch(如下簡稱ES)讀寫分離,這是個好東西,全文索引的時候使用它賊得勁,對elasticsearch索引原理不太清楚的,請自行查找相關的文章node

這裏不作闡述,最近我在網上找了好多,但是關於elasticsearch讀寫分離的文章確實少之又少,由於es不想MySQL那樣的數據庫有主從複製的機制,使用mycat等第三方的插件數據庫

也能夠實現讀寫分離的效果;因此咱們要根據es的分片的機制去實現讀寫分離,具體的原理以下圖所示:json

圖畫的比較醜,我這裏再詳細說明一下app

一、首先咱們須要配置es集羣的配置文件,讓es集羣分爲hot和cool兩個區curl

二、而後咱們在導入數據到es集羣以前,首先須要建立settings,在建立settings的時候,咱們須要指定分片所有分到hot區、副本數爲0(增長導入數據的速度),elasticsearch

三、導入數據到es,這樣咱們導入數據的時候就是在hot區進行的ui

四、調整副本數爲1,這樣是爲了後面的操做url

五、修改settings,指定分區爲cool區,這樣數據就會複製到cool區spa

六、讀取數據,這樣咱們讀取數據的時候就會從cool區去讀取了插件

ES集羣環境

 

 

IP地址

端口

Es版本號

分區

10.122.33.103

9202/9302

6.4.2

Hot

10.122.33.104

9202/9302

6.4.2

hot

10.122.33.96

9202/9302

6.4.2

Cool

10.122.33.97

9202/9302

6.4.2

Cool

10.122.33.97

9202/9302

6.4.2

Cool

 

 

 

 

 

 

 

 

 

 #######################################

配置流程

 Elasticsearch配置文件:

首先咱們須要配置es集羣的配置文件(如下只列出了讀寫分離所須要的配置):

#指定node的屬性標籤名(也就是上面說的分區名)

 node.attr.rack: hot   

#強制使分片與副本分離。若只有hot標籤的節點,索引只有分片能夠寫入,副本沒法分配;如有hot、cool兩種標籤節點,相同分片與其副本毫不在相同標籤節點上

cluster.routing.allocation.awareness.force.rack.values: hot,cool

cluster.routing.allocation.awareness.attributes: rack

 

 

指定分片分到hot區

  #建立索引setting,指定分片在那個分區上(index_test1爲索引名)

  curl -H "Content-Type: application/json" -XPUT 'http://10.122.33.103:9202/ dm_transaction_service_sum /' -d '{

 "settings" : {       

        "index.routing.allocation.require.rack": "hot",

        "number_of_replicas" : 0 

}

}'

 

  #查看分片的狀況(從查看分片的信息咱們能夠看到,默認的五個分片都在hot區)

 

 

導入數據到hot區

  #插入數據到es

  按照上面分片的結果,能夠知道全部的寫操做都在103和104兩臺機器上

 

更改副本數

  #更改副本數爲1

  curl -H "Content-Type: application/json" -XPUT 'http://10.122.33.103:9202/ dm_transaction_service_sum_v20190114_new /_settings' -d '{

    "number_of_replicas" : 1

}' 

 

 

指定分片分區爲cool

  #把分片都挪到cool分區上,供後續索引查詢使用

  curl -H "Content-Type: application/json" -XPUT 'http://10.122.33.103:9202/ dm_transaction_service_sum_v20190114_new /_settings' -d '{

       "index.routing.allocation.require.rack": "cool",

       "number_of_replicas" : 0

}'

 

  #查看集羣分片的狀況(如今全部的分片都在cool分區上)

 

 

怎麼樣,看到這裏,應該明白了es讀寫分離了吧!!!!

若是您以爲個人文章對你有必定的幫助,幫我點個贊偶

相關文章
相關標籤/搜索