步驟node
1、冷熱分離集羣配置centos
好比三個機器共六個node的es集羣。併發
每一個機器上各掛載一個ssd 和 一個sata。每一個機器須要啓動兩個es進程、每一個進程對應不一樣類型的磁盤。app
關鍵配置:elasticsearch
node.max_local_storage_nodes: 2 #容許每一個機器啓動兩個es進程高併發
path.data: /home/centos/es/elasticsearch-2.1.0/data/ssd #須要顯示指定es對應的數據目錄大數據
啓動命令中須要指定node tagui
./elasticsearch -d -Des.path.conf=/home/centos/es/elasticsearch-2.1.0/config/ssd -d --node.tag=ssd ./elasticsearch -d -Des.path.conf=/home/centos/es/elasticsearch-2.1.0/config/sata -d --node.tag=sata
啓動之後節點以下:spa
2、建立索引模板code
http://192.168.126.132:9200/_template/hottest/ PUT
{ "order": 1, "template": "hottest*", "settings": { "index": { "number_of_shards": "3", "number_of_replicas": "1", "refresh_interval": "1s", "routing.allocation.require.tag": "ssd" } }, "mappings": { "_default_": { "properties": { "userid": { "index": "not_analyzed", "type": "string" }, "username": { "index": "not_analyzed", "type": "string" }, "sex": { "index": "not_analyzed", "type": "string" }, "address": { "index": "no", "type": "string" } }, "_all": { "enabled": false } } }, "aliases": { "hottest": {} } }
"routing.allocation.require.tag": "ssd" 指定默認寫入到 ssd 節點。
3、插入數據
http://192.168.126.132:9200/hottest_20170805/def/100001/ PUT
{ "userid": "100001", "username": "zhangsan", "sex": "1", "address": "beijing" }
在head 中看到數據所有保存在的 ssd 節點。
4、定時遷移老數據到 sata
http://192.168.126.132:9200/hottest_20170805/_settings/ PUT
{ "index.routing.allocation.require.tag": "sata" }
在head中看到數據移動到了 sata 節點
解決了兩個問題
1、使用有限的ssd節點資源來實現同時支持高併發讀寫和大數據量的存儲。
經過配置使最新的數據保存在ssd磁盤節點上,較老的數據自動遷移到廉價sata節點。
2、用戶作一次大的查詢,大量的讀io和聚合操做致使集羣load升高,阻塞新數據的寫入,能作到必定程度的讀寫分離。