節點在ES中任什麼時候刻都存在,是一個ElasticSearch的程序實例。多個節點鏈接在一塊兒的集合被稱之爲集羣。在本地開發時,咱們使用了單個ElasticSearch節點,這個節點也能夠看做是一個集羣,只不過這個集羣中只有一個節點,集羣中全部的功能都須要這個節點完成,包括搜索、建索引、聚合、分配分片等。雖然單個也能實現基本的功能,但因爲搜索和索引對CPU,內存和IO的消耗都特別大,爲了保證系統穩定性,其中最重要的就是將主節點
和數據節點
分離node
在一個節點啓動後,ES的自動發現機制會去集羣中尋找其它節點,集羣會從候選主節點中選出一個節點做爲主節點。主節點主要負責集羣中的輕量級操做,負責建立索引、刪除索引、分配分片、追蹤集羣中的節點狀態等工做,至關於扮演團隊大腦的角色,因此它對集羣的來講穩定性很是重要。
若是集羣只有單個節點或者和數據節點混在一塊兒,主節點就須要處理各類各樣的任務,創建索引和搜索又都是對CPU、內存、I/O消耗很大的任務,會對主節點的資源形成很大壓力,嚴重時致使主節點宕機。爲了確保主節點的穩定性,不受到大的壓力,在集羣中最好有專用的主節點和多個專用的數據節點。儘可能下降主節點的負載,對整個集羣穩定性來說很是重要。
建立一個專用的候選主節點可使用如下配置:json
node.master: true node.data: false node.ingest: false cluster.remote.connect: false
數據節點是除了主節點外,最重要的節點,數據節點存儲了全部的分片,文檔,索引數據。數據節點顧名思義,主要用來處理數據相關的操做,CRUD、搜索和聚合,它也是對機器配置要求最高的節點,首先須要大量的磁盤的空間來存儲數據,再者索引和搜索等數據操做對CPU、內存、IO密集型的消耗都很是大,很吃系統資源。對數據節點的監控很是重要,在檢測到數據節點的性能超載時,應該及時在集羣中添加數據節點。把數據節點獨立出來最大好處是,可使數據處理和主節點分開,會大大減小主節點的壓力,對提高集羣的穩定性頗有意義。
建立一個專用的數據節點可使用如下配置:負載均衡
node.master: false node.data: true node.ingest: false node.ml: false cluster.remote.connect: false
協調節點的做用就把客戶端的請求轉分配給最合適的節點來處理,簡單來說就是負載均衡的做用。集羣中每一個節點的負載狀況和健康情況都不同,有些節點可能已經超負荷了,有一部分甚至已經不健康了,這些不健康的節點就不應再接收請求,不然會致使失敗的響應,協調節點知道集羣中各個節點的狀態。
大多數狀況下不須要專用的協調節點,協調節點的功能能夠由主節點或數據節點來完成,中小型集羣中,專門的協調節點的並無專用的數據節點必要。
建立專用的協調節點可使用如下配置:性能
node.master: false node.data: false node.ingest: false search.remote.connect: false