六 ElasticSearch高可用方案
6.1 高可用架構
? ? ? ?請求協調節點根據負載均衡,轉發給主分片節點,主分片同步復制給從節點,主從節點都寫入完成返回客戶端請求成功。對于讀請求,協調負載到任意節點數據節點,數據節點把各自符合要求的數據匯反饋給協調節點,協調節點做最后的數據整合,最終反饋給客戶端。
? ? ? ?一個運行中的?Elasticsearch 實例稱為一個節點,而集群是由一個或者多個擁有相同 cluster.name 配置的節點組成,它們共同承擔數據和負載的壓力。當有節點加入集群中或者從集群中移除節點時,集群將會重新平均分布所有的數據。
? ? ? ? 當一個節點被選舉為主節點時,它將負責管理集群范圍內的所有變更,例如增加、刪除索引,或者增加、刪除節點等。而主節點并不需要涉及到文檔級別的變更和搜索等操作,所以當集群只擁有一個主節點的情況下,即使流量的增加它也不會稱為瓶頸。任何節點都可以稱為主節點。
? ? ? ?作為用戶,我們可以將請求發送到集群中的任何節點,包括主節點。每個節點都知道任意文檔所處的位置,并且能夠將我們的請求直接轉發到存儲所需文檔的節點。無論我們將請求發送到哪個節點,它都能負責從各個包含我們所需文檔的節點收集回數據,并將最終結果返回給用戶,Elasticsearch 對這一切的管理都是透明的。
ES的目錄含義
目錄 | 含義 |
modules | 模塊依賴目錄 |
lib | 依賴庫目錄 |
logs | 日志目錄 |
plugins | 插件目錄 |
bin | 可執行文件目錄 |
config | 配置文件目錄 |
data | 數據存儲目錄 |
6.2?節點角色
Elasticsearch通過node.roles配置節點角色,在配置文件elasticsearch.yml設置
角色選項 | 說明 |
master | node.roles: [ master ]:擁有選舉權和被選舉權 |
master, voting_only | node.roles: [ master, voting_only ]:只有選舉權沒有被選舉權 |
data | node.roles: [ data ]:處理與數據相關的操作CRUD、搜索、聚合 |
data_content | node.roles: [ data_content ]:冷熱分層架構,通用節點,CRUD、搜索、聚合 |
data_hot | node.roles: [ data_hot ]:冷熱分層架構,hot節點承擔快速讀寫操作,可以配置為SSD盤 |
data_warm | node.roles: [ data_warm ]:冷熱分層架構,warm節點索引不定期更新 |
data_cold | node.roles: [ data_cold ]:冷熱分層架構,cold節點只存只讀索引 |
ingest | node.roles: [ ingest ]:ingest節點用于對寫入和查詢的數據進行預處理 |
Coordinating only node | node.roles: [ ]:協調節點不承擔master職責、不保存數據、不預處理 |
備注:生產環境建議一個節點設置單一角色,有利于更好的性能和根據角色定制化配置。
6.2 集群狀態
衡量集群健康與否的三種狀態:
Green:主分片與副本正常分配
Yellow:主分片全部正常分配,有副本分片未正常分配
Red:有主分片未能正常分配