elasticsearch實現讀寫分離


簡介

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

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

也可以實現讀寫分離的效果;所以我們要根據es的分片的機制去實現讀寫分離,具體的原理如下圖所示:

圖畫的比較丑,我這里再詳細說明一下

1、首先我們需要配置es集群的配置文件,讓es集群分為hot和cool兩個區

2、然后我們在導入數據到es集群之前,首先需要創建settings,在創建settings的時候,我們需要指定分片全部分到hot區、副本數為0(增加導入數據的速度),

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

4、調整副本數為1,這樣是為了后面的操作

5、修改settings,指定分區為cool區,這樣數據就會復制到cool區

6、讀取數據,這樣我們讀取數據的時候就會從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讀寫分離了吧!!!!

如果您覺得我的文章對你有一定的幫助,幫我點個贊偶

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM